##// END OF EJS Templates
release: merged default into stable
marcink -
r3012:22b5bff9 merge stable
parent child Browse files
Show More
@@ -0,0 +1,43 b''
1 |RCE| 4.13.1 |RNS|
2 ------------------
3
4 Release Date
5 ^^^^^^^^^^^^
6
7 - 2018-08-06
8
9
10 New Features
11 ^^^^^^^^^^^^
12
13
14
15 General
16 ^^^^^^^
17
18 - core: added option to prefix cache keys for usage in cluster.
19 - exception-tracker: store event sending exception for easier event fail debugging.
20 - maintenance: add repack and fsck for git maintenance execution list.
21
22
23 Security
24 ^^^^^^^^
25
26
27
28 Performance
29 ^^^^^^^^^^^
30
31
32
33 Fixes
34 ^^^^^
35
36 - caches: use single default cache dir for all backends.
37 - caches: don't use lower in cache settings to support uppercase PATHS
38
39
40 Upgrade notes
41 ^^^^^^^^^^^^^
42
43 - Unscheduled release addressing reported problems, and improving stability.
@@ -1,120 +1,121 b''
1 1 .. _rhodecode-release-notes-ref:
2 2
3 3 Release Notes
4 4 =============
5 5
6 6 |RCE| 4.x Versions
7 7 ------------------
8 8
9 9 .. toctree::
10 10 :maxdepth: 1
11 11
12 release-notes-4.13.1.rst
12 13 release-notes-4.13.0.rst
13 14 release-notes-4.12.4.rst
14 15 release-notes-4.12.3.rst
15 16 release-notes-4.12.2.rst
16 17 release-notes-4.12.1.rst
17 18 release-notes-4.12.0.rst
18 19 release-notes-4.11.6.rst
19 20 release-notes-4.11.5.rst
20 21 release-notes-4.11.4.rst
21 22 release-notes-4.11.3.rst
22 23 release-notes-4.11.2.rst
23 24 release-notes-4.11.1.rst
24 25 release-notes-4.11.0.rst
25 26 release-notes-4.10.6.rst
26 27 release-notes-4.10.5.rst
27 28 release-notes-4.10.4.rst
28 29 release-notes-4.10.3.rst
29 30 release-notes-4.10.2.rst
30 31 release-notes-4.10.1.rst
31 32 release-notes-4.10.0.rst
32 33 release-notes-4.9.1.rst
33 34 release-notes-4.9.0.rst
34 35 release-notes-4.8.0.rst
35 36 release-notes-4.7.2.rst
36 37 release-notes-4.7.1.rst
37 38 release-notes-4.7.0.rst
38 39 release-notes-4.6.1.rst
39 40 release-notes-4.6.0.rst
40 41 release-notes-4.5.2.rst
41 42 release-notes-4.5.1.rst
42 43 release-notes-4.5.0.rst
43 44 release-notes-4.4.2.rst
44 45 release-notes-4.4.1.rst
45 46 release-notes-4.4.0.rst
46 47 release-notes-4.3.1.rst
47 48 release-notes-4.3.0.rst
48 49 release-notes-4.2.1.rst
49 50 release-notes-4.2.0.rst
50 51 release-notes-4.1.2.rst
51 52 release-notes-4.1.1.rst
52 53 release-notes-4.1.0.rst
53 54 release-notes-4.0.1.rst
54 55 release-notes-4.0.0.rst
55 56
56 57 |RCE| 3.x Versions
57 58 ------------------
58 59
59 60 .. toctree::
60 61 :maxdepth: 1
61 62
62 63 release-notes-3.8.4.rst
63 64 release-notes-3.8.3.rst
64 65 release-notes-3.8.2.rst
65 66 release-notes-3.8.1.rst
66 67 release-notes-3.8.0.rst
67 68 release-notes-3.7.1.rst
68 69 release-notes-3.7.0.rst
69 70 release-notes-3.6.1.rst
70 71 release-notes-3.6.0.rst
71 72 release-notes-3.5.2.rst
72 73 release-notes-3.5.1.rst
73 74 release-notes-3.5.0.rst
74 75 release-notes-3.4.1.rst
75 76 release-notes-3.4.0.rst
76 77 release-notes-3.3.4.rst
77 78 release-notes-3.3.3.rst
78 79 release-notes-3.3.2.rst
79 80 release-notes-3.3.1.rst
80 81 release-notes-3.3.0.rst
81 82 release-notes-3.2.3.rst
82 83 release-notes-3.2.2.rst
83 84 release-notes-3.2.1.rst
84 85 release-notes-3.2.0.rst
85 86 release-notes-3.1.1.rst
86 87 release-notes-3.1.0.rst
87 88 release-notes-3.0.2.rst
88 89 release-notes-3.0.1.rst
89 90 release-notes-3.0.0.rst
90 91
91 92 |RCE| 2.x Versions
92 93 ------------------
93 94
94 95 .. toctree::
95 96 :maxdepth: 1
96 97
97 98 release-notes-2.2.8.rst
98 99 release-notes-2.2.7.rst
99 100 release-notes-2.2.6.rst
100 101 release-notes-2.2.5.rst
101 102 release-notes-2.2.4.rst
102 103 release-notes-2.2.3.rst
103 104 release-notes-2.2.2.rst
104 105 release-notes-2.2.1.rst
105 106 release-notes-2.2.0.rst
106 107 release-notes-2.1.0.rst
107 108 release-notes-2.0.2.rst
108 109 release-notes-2.0.1.rst
109 110 release-notes-2.0.0.rst
110 111
111 112 |RCE| 1.x Versions
112 113 ------------------
113 114
114 115 .. toctree::
115 116 :maxdepth: 1
116 117
117 118 release-notes-1.7.2.rst
118 119 release-notes-1.7.1.rst
119 120 release-notes-1.7.0.rst
120 121 release-notes-1.6.0.rst
@@ -1,2280 +1,2282 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-0.9.9";
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/89/03/756d5b8e1c90bf283c3f435766aa3f20208d1c3887579dd8f2122e01d5f4/alembic-0.9.9.tar.gz";
18 18 sha256 = "0bmkq6isjbmy4p7nxfvfpknjsx7rb3xn9g00169y891hcfkkxgc5";
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.3.1";
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/1b/32/242ff76cd802766f11c89c72f3389b5c8de4bdfbab406137b90c5fae8b05/amqp-2.3.1.tar.gz";
32 32 sha256 = "0wlfnvhmfrn7c8qif2jyvsm63ibdxp02ss564qwrvqfhz0di72s0";
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.25";
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/fa/44/2911ef85ea4f4fe65058fd22959d8dad598fab6a3c84e5bcb569d15c8783/appenlight_client-0.6.25.tar.gz";
48 48 sha256 = "1r9l2rfg677nxhamdbyb9y4fs1zgy2dy1p19c68fnvqkxz40y627";
49 49 };
50 50 meta = {
51 51 license = [ pkgs.lib.licenses.bsdOriginal ];
52 52 };
53 53 };
54 54 "atomicwrites" = super.buildPythonPackage {
55 55 name = "atomicwrites-1.1.5";
56 56 doCheck = false;
57 57 src = fetchurl {
58 58 url = "https://files.pythonhosted.org/packages/a1/e1/2d9bc76838e6e6667fde5814aa25d7feb93d6fa471bf6816daac2596e8b2/atomicwrites-1.1.5.tar.gz";
59 59 sha256 = "11bm90fwm2avvf4f3ib8g925w7jr4m11vcsinn1bi6ns4bm32214";
60 60 };
61 61 meta = {
62 62 license = [ pkgs.lib.licenses.mit ];
63 63 };
64 64 };
65 65 "attrs" = super.buildPythonPackage {
66 66 name = "attrs-18.1.0";
67 67 doCheck = false;
68 68 src = fetchurl {
69 69 url = "https://files.pythonhosted.org/packages/e4/ac/a04671e118b57bee87dabca1e0f2d3bda816b7a551036012d0ca24190e71/attrs-18.1.0.tar.gz";
70 70 sha256 = "0yzqz8wv3w1srav5683a55v49i0szkm47dyrnkd56fqs8j8ypl70";
71 71 };
72 72 meta = {
73 73 license = [ pkgs.lib.licenses.mit ];
74 74 };
75 75 };
76 76 "authomatic" = super.buildPythonPackage {
77 77 name = "authomatic-0.1.0.post1";
78 78 doCheck = false;
79 79 src = fetchurl {
80 80 url = "https://code.rhodecode.com/upstream/authomatic/archive/90a9ce60cc405ae8a2bf5c3713acd5d78579a04e.tar.gz?md5=3c68720a1322b25254009518d1ff6801";
81 81 sha256 = "1cgk0a86sbsjbri06gf5z5l4npwkjdxw6fdnwl4vvfmxs2sx9yxw";
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.5.0.3";
139 139 doCheck = false;
140 140 src = fetchurl {
141 141 url = "https://files.pythonhosted.org/packages/39/ac/f5571210cca2e4f4532e38aaff242f26c8654c5e2436bee966c230647ccc/billiard-3.5.0.3.tar.gz";
142 142 sha256 = "1riwiiwgb141151md4ykx49qrz749akj5k8g290ji9bsqjyj4yqx";
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-2.1.4";
150 150 doCheck = false;
151 151 propagatedBuildInputs = [
152 152 self."six"
153 153 self."html5lib"
154 154 ];
155 155 src = fetchurl {
156 156 url = "https://files.pythonhosted.org/packages/7a/b7/fa555afb61462b030abaf9ed1479b8ea031510f58c7706b06113be9f82ea/bleach-2.1.4.tar.gz";
157 157 sha256 = "1n337zbdml6z6zia0b1qgv6xiddx3qlwmcg9vk2mk60jcxhmzs8f";
158 158 };
159 159 meta = {
160 160 license = [ pkgs.lib.licenses.asl20 ];
161 161 };
162 162 };
163 163 "bottle" = super.buildPythonPackage {
164 164 name = "bottle-0.12.13";
165 165 doCheck = false;
166 166 src = fetchurl {
167 167 url = "https://files.pythonhosted.org/packages/bd/99/04dc59ced52a8261ee0f965a8968717a255ea84a36013e527944dbf3468c/bottle-0.12.13.tar.gz";
168 168 sha256 = "0m9k2a7yxvggc4kw8fsvj381vgsvfcdshg5nzy6vwrxiw2p53drr";
169 169 };
170 170 meta = {
171 171 license = [ pkgs.lib.licenses.mit ];
172 172 };
173 173 };
174 174 "bumpversion" = super.buildPythonPackage {
175 175 name = "bumpversion-0.5.3";
176 176 doCheck = false;
177 177 src = fetchurl {
178 178 url = "https://files.pythonhosted.org/packages/14/41/8c9da3549f8e00c84f0432c3a8cf8ed6898374714676aab91501d48760db/bumpversion-0.5.3.tar.gz";
179 179 sha256 = "0zn7694yfipxg35ikkfh7kvgl2fissha3dnqad2c5bvsvmrwhi37";
180 180 };
181 181 meta = {
182 182 license = [ pkgs.lib.licenses.mit ];
183 183 };
184 184 };
185 185 "celery" = super.buildPythonPackage {
186 186 name = "celery-4.1.1";
187 187 doCheck = false;
188 188 propagatedBuildInputs = [
189 189 self."pytz"
190 190 self."billiard"
191 191 self."kombu"
192 192 ];
193 193 src = fetchurl {
194 194 url = "https://files.pythonhosted.org/packages/e9/cf/a4c0597effca20c57eb586324e41d1180bc8f13a933da41e0646cff69f02/celery-4.1.1.tar.gz";
195 195 sha256 = "1xbir4vw42n2ir9lanhwl7w69zpmj7lbi66fxm2b7pyvkcss7wni";
196 196 };
197 197 meta = {
198 198 license = [ pkgs.lib.licenses.bsdOriginal ];
199 199 };
200 200 };
201 201 "chameleon" = super.buildPythonPackage {
202 202 name = "chameleon-2.24";
203 203 doCheck = false;
204 204 src = fetchurl {
205 205 url = "https://files.pythonhosted.org/packages/5a/9e/637379ffa13c5172b5c0e704833ffea6bf51cec7567f93fd6e903d53ed74/Chameleon-2.24.tar.gz";
206 206 sha256 = "0ykqr7syxfa6h9adjfnsv1gdsca2xzm22vmic8859n0f0j09abj5";
207 207 };
208 208 meta = {
209 209 license = [ { fullName = "BSD-like (http://repoze.org/license.html)"; } ];
210 210 };
211 211 };
212 212 "channelstream" = super.buildPythonPackage {
213 213 name = "channelstream-0.5.2";
214 214 doCheck = false;
215 215 propagatedBuildInputs = [
216 216 self."gevent"
217 217 self."ws4py"
218 218 self."pyramid"
219 219 self."pyramid-jinja2"
220 220 self."itsdangerous"
221 221 self."requests"
222 222 self."six"
223 223 ];
224 224 src = fetchurl {
225 225 url = "https://files.pythonhosted.org/packages/2b/31/29a8e085cf5bf97fa88e7b947adabfc581a18a3463adf77fb6dada34a65f/channelstream-0.5.2.tar.gz";
226 226 sha256 = "1qbm4xdl5hfkja683x546bncg3rqq8qv79w1m1a1wd48cqqzb6rm";
227 227 };
228 228 meta = {
229 229 license = [ pkgs.lib.licenses.bsdOriginal ];
230 230 };
231 231 };
232 232 "click" = super.buildPythonPackage {
233 233 name = "click-6.6";
234 234 doCheck = false;
235 235 src = fetchurl {
236 236 url = "https://files.pythonhosted.org/packages/7a/00/c14926d8232b36b08218067bcd5853caefb4737cda3f0a47437151344792/click-6.6.tar.gz";
237 237 sha256 = "1sggipyz52crrybwbr9xvwxd4aqigvplf53k9w3ygxmzivd1jsnc";
238 238 };
239 239 meta = {
240 240 license = [ pkgs.lib.licenses.bsdOriginal ];
241 241 };
242 242 };
243 243 "colander" = super.buildPythonPackage {
244 244 name = "colander-1.4";
245 245 doCheck = false;
246 246 propagatedBuildInputs = [
247 247 self."translationstring"
248 248 self."iso8601"
249 249 ];
250 250 src = fetchurl {
251 251 url = "https://files.pythonhosted.org/packages/cc/e2/c4e716ac4a426d8ad4dfe306c34f0018a22275d2420815784005bf771c84/colander-1.4.tar.gz";
252 252 sha256 = "0wjfphyr5aakv5hw73q287lbc15cbm0aardajv7i2mqf377rl3p2";
253 253 };
254 254 meta = {
255 255 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
256 256 };
257 257 };
258 258 "configobj" = super.buildPythonPackage {
259 259 name = "configobj-5.0.6";
260 260 doCheck = false;
261 261 propagatedBuildInputs = [
262 262 self."six"
263 263 ];
264 264 src = fetchurl {
265 265 url = "https://code.rhodecode.com/upstream/configobj/archive/a11ff0a0bd4fbda9e3a91267e720f88329efb4a6.tar.gz?md5=9916c524ea11a6c418217af6b28d4b3c";
266 266 sha256 = "1hhcxirwvg58grlfr177b3awhbq8hlx1l3lh69ifl1ki7lfd1s1x";
267 267 };
268 268 meta = {
269 269 license = [ pkgs.lib.licenses.bsdOriginal ];
270 270 };
271 271 };
272 272 "configparser" = super.buildPythonPackage {
273 273 name = "configparser-3.5.0";
274 274 doCheck = false;
275 275 src = fetchurl {
276 276 url = "https://files.pythonhosted.org/packages/7c/69/c2ce7e91c89dc073eb1aa74c0621c3eefbffe8216b3f9af9d3885265c01c/configparser-3.5.0.tar.gz";
277 277 sha256 = "0fi7vf09vi1588jd8f16a021m5y6ih2hy7rpbjb408xw45qb822k";
278 278 };
279 279 meta = {
280 280 license = [ pkgs.lib.licenses.mit ];
281 281 };
282 282 };
283 283 "cov-core" = super.buildPythonPackage {
284 284 name = "cov-core-1.15.0";
285 285 doCheck = false;
286 286 propagatedBuildInputs = [
287 287 self."coverage"
288 288 ];
289 289 src = fetchurl {
290 290 url = "https://files.pythonhosted.org/packages/4b/87/13e75a47b4ba1be06f29f6d807ca99638bedc6b57fa491cd3de891ca2923/cov-core-1.15.0.tar.gz";
291 291 sha256 = "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a";
292 292 };
293 293 meta = {
294 294 license = [ pkgs.lib.licenses.mit ];
295 295 };
296 296 };
297 297 "coverage" = super.buildPythonPackage {
298 298 name = "coverage-3.7.1";
299 299 doCheck = false;
300 300 src = fetchurl {
301 301 url = "https://files.pythonhosted.org/packages/09/4f/89b06c7fdc09687bca507dc411c342556ef9c5a3b26756137a4878ff19bf/coverage-3.7.1.tar.gz";
302 302 sha256 = "0knlbq79g2ww6xzsyknj9rirrgrgc983dpa2d9nkdf31mb2a3bni";
303 303 };
304 304 meta = {
305 305 license = [ pkgs.lib.licenses.bsdOriginal ];
306 306 };
307 307 };
308 308 "cprofilev" = super.buildPythonPackage {
309 309 name = "cprofilev-1.0.7";
310 310 doCheck = false;
311 311 propagatedBuildInputs = [
312 312 self."bottle"
313 313 ];
314 314 src = fetchurl {
315 315 url = "https://files.pythonhosted.org/packages/df/50/d8c1ada7d537c64b0f76453fa31dedb6af6e27b82fcf0331e5f71a4cf98b/CProfileV-1.0.7.tar.gz";
316 316 sha256 = "0xwszfhxgndpcjkpq89dix6vi02hj1gzvhr7r716hd1x3y5p94c7";
317 317 };
318 318 meta = {
319 319 license = [ pkgs.lib.licenses.mit ];
320 320 };
321 321 };
322 322 "cssselect" = super.buildPythonPackage {
323 323 name = "cssselect-1.0.3";
324 324 doCheck = false;
325 325 src = fetchurl {
326 326 url = "https://files.pythonhosted.org/packages/52/ea/f31e1d2e9eb130fda2a631e22eac369dc644e8807345fbed5113f2d6f92b/cssselect-1.0.3.tar.gz";
327 327 sha256 = "011jqa2jhmydhi0iz4v1w3cr540z5zas8g2bw8brdw4s4b2qnv86";
328 328 };
329 329 meta = {
330 330 license = [ pkgs.lib.licenses.bsdOriginal ];
331 331 };
332 332 };
333 333 "decorator" = super.buildPythonPackage {
334 334 name = "decorator-4.1.2";
335 335 doCheck = false;
336 336 src = fetchurl {
337 337 url = "https://files.pythonhosted.org/packages/bb/e0/f6e41e9091e130bf16d4437dabbac3993908e4d6485ecbc985ef1352db94/decorator-4.1.2.tar.gz";
338 338 sha256 = "1d8npb11kxyi36mrvjdpcjij76l5zfyrz2f820brf0l0rcw4vdkw";
339 339 };
340 340 meta = {
341 341 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "new BSD License"; } ];
342 342 };
343 343 };
344 344 "deform" = super.buildPythonPackage {
345 345 name = "deform-2.0.5";
346 346 doCheck = false;
347 347 propagatedBuildInputs = [
348 348 self."chameleon"
349 349 self."colander"
350 350 self."iso8601"
351 351 self."peppercorn"
352 352 self."translationstring"
353 353 self."zope.deprecation"
354 354 ];
355 355 src = fetchurl {
356 356 url = "https://files.pythonhosted.org/packages/0c/b1/ba711d5808c12538c8504f534d79c124ed834f19ac36f0ac5391c3bbd1c1/deform-2.0.5.tar.gz";
357 357 sha256 = "0ybg9zsnfac1kaxrjanmkjk0xaklf4d3piywxwr08l1cl1336kc7";
358 358 };
359 359 meta = {
360 360 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
361 361 };
362 362 };
363 363 "docutils" = super.buildPythonPackage {
364 364 name = "docutils-0.14";
365 365 doCheck = false;
366 366 src = fetchurl {
367 367 url = "https://files.pythonhosted.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-0.14.tar.gz";
368 368 sha256 = "0x22fs3pdmr42kvz6c654756wja305qv6cx1zbhwlagvxgr4xrji";
369 369 };
370 370 meta = {
371 371 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 ];
372 372 };
373 373 };
374 374 "dogpile.cache" = super.buildPythonPackage {
375 375 name = "dogpile.cache-0.6.6";
376 376 doCheck = false;
377 377 src = fetchurl {
378 378 url = "https://files.pythonhosted.org/packages/48/ca/604154d835c3668efb8a31bd979b0ea4bf39c2934a40ffecc0662296cb51/dogpile.cache-0.6.6.tar.gz";
379 379 sha256 = "1h8n1lxd4l2qvahfkiinljkqz7pww7w3sgag0j8j9ixbl2h4wk84";
380 380 };
381 381 meta = {
382 382 license = [ pkgs.lib.licenses.bsdOriginal ];
383 383 };
384 384 };
385 385 "dogpile.core" = super.buildPythonPackage {
386 386 name = "dogpile.core-0.4.1";
387 387 doCheck = false;
388 388 src = fetchurl {
389 389 url = "https://files.pythonhosted.org/packages/0e/77/e72abc04c22aedf874301861e5c1e761231c288b5de369c18be8f4b5c9bb/dogpile.core-0.4.1.tar.gz";
390 390 sha256 = "0xpdvg4kr1isfkrh1rfsh7za4q5a5s6l2kf9wpvndbwf3aqjyrdy";
391 391 };
392 392 meta = {
393 393 license = [ pkgs.lib.licenses.bsdOriginal ];
394 394 };
395 395 };
396 396 "ecdsa" = super.buildPythonPackage {
397 397 name = "ecdsa-0.13";
398 398 doCheck = false;
399 399 src = fetchurl {
400 400 url = "https://files.pythonhosted.org/packages/f9/e5/99ebb176e47f150ac115ffeda5fedb6a3dbb3c00c74a59fd84ddf12f5857/ecdsa-0.13.tar.gz";
401 401 sha256 = "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4";
402 402 };
403 403 meta = {
404 404 license = [ pkgs.lib.licenses.mit ];
405 405 };
406 406 };
407 407 "elasticsearch" = super.buildPythonPackage {
408 408 name = "elasticsearch-2.3.0";
409 409 doCheck = false;
410 410 propagatedBuildInputs = [
411 411 self."urllib3"
412 412 ];
413 413 src = fetchurl {
414 414 url = "https://files.pythonhosted.org/packages/10/35/5fd52c5f0b0ee405ed4b5195e8bce44c5e041787680dc7b94b8071cac600/elasticsearch-2.3.0.tar.gz";
415 415 sha256 = "10ad2dk73xsys9vajwsncibs69asa63w1hgwz6lz1prjpyi80c5y";
416 416 };
417 417 meta = {
418 418 license = [ pkgs.lib.licenses.asl20 ];
419 419 };
420 420 };
421 421 "elasticsearch-dsl" = super.buildPythonPackage {
422 422 name = "elasticsearch-dsl-2.2.0";
423 423 doCheck = false;
424 424 propagatedBuildInputs = [
425 425 self."six"
426 426 self."python-dateutil"
427 427 self."elasticsearch"
428 428 ];
429 429 src = fetchurl {
430 430 url = "https://files.pythonhosted.org/packages/66/2f/52a086968788e58461641570f45c3207a52d46ebbe9b77dc22b6a8ffda66/elasticsearch-dsl-2.2.0.tar.gz";
431 431 sha256 = "1g4kxzxsdwlsl2a9kscmx11pafgimhj7y8wrfksv8pgvpkfb9fwr";
432 432 };
433 433 meta = {
434 434 license = [ pkgs.lib.licenses.asl20 ];
435 435 };
436 436 };
437 437 "entrypoints" = super.buildPythonPackage {
438 438 name = "entrypoints-0.2.2";
439 439 doCheck = false;
440 440 propagatedBuildInputs = [
441 441 self."configparser"
442 442 ];
443 443 src = fetchurl {
444 444 url = "https://code.rhodecode.com/upstream/entrypoints/archive/96e6d645684e1af3d7df5b5272f3fe85a546b233.tar.gz?md5=7db37771aea9ac9fefe093e5d6987313";
445 445 sha256 = "0bihrdp8ahsys437kxdhk52gz6kib8rxjv71i93wkw7594fcaxll";
446 446 };
447 447 meta = {
448 448 license = [ pkgs.lib.licenses.mit ];
449 449 };
450 450 };
451 451 "enum34" = super.buildPythonPackage {
452 452 name = "enum34-1.1.6";
453 453 doCheck = false;
454 454 src = fetchurl {
455 455 url = "https://files.pythonhosted.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz";
456 456 sha256 = "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a";
457 457 };
458 458 meta = {
459 459 license = [ pkgs.lib.licenses.bsdOriginal ];
460 460 };
461 461 };
462 462 "formencode" = super.buildPythonPackage {
463 463 name = "formencode-1.2.4";
464 464 doCheck = false;
465 465 src = fetchurl {
466 466 url = "https://files.pythonhosted.org/packages/8e/59/0174271a6f004512e0201188593e6d319db139d14cb7490e488bbb078015/FormEncode-1.2.4.tar.gz";
467 467 sha256 = "1fgy04sdy4yry5xcjls3x3xy30dqwj58ycnkndim819jx0788w42";
468 468 };
469 469 meta = {
470 470 license = [ pkgs.lib.licenses.psfl ];
471 471 };
472 472 };
473 473 "funcsigs" = super.buildPythonPackage {
474 474 name = "funcsigs-1.0.2";
475 475 doCheck = false;
476 476 src = fetchurl {
477 477 url = "https://files.pythonhosted.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz";
478 478 sha256 = "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7";
479 479 };
480 480 meta = {
481 481 license = [ { fullName = "ASL"; } pkgs.lib.licenses.asl20 ];
482 482 };
483 483 };
484 484 "functools32" = super.buildPythonPackage {
485 485 name = "functools32-3.2.3.post2";
486 486 doCheck = false;
487 487 src = fetchurl {
488 488 url = "https://files.pythonhosted.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db/functools32-3.2.3-2.tar.gz";
489 489 sha256 = "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn";
490 490 };
491 491 meta = {
492 492 license = [ pkgs.lib.licenses.psfl ];
493 493 };
494 494 };
495 495 "future" = super.buildPythonPackage {
496 496 name = "future-0.14.3";
497 497 doCheck = false;
498 498 src = fetchurl {
499 499 url = "https://files.pythonhosted.org/packages/83/80/8ef3a11a15f8eaafafa0937b20c1b3f73527e69ab6b3fa1cf94a5a96aabb/future-0.14.3.tar.gz";
500 500 sha256 = "1savk7jx7hal032f522c5ajhh8fra6gmnadrj9adv5qxi18pv1b2";
501 501 };
502 502 meta = {
503 503 license = [ { fullName = "OSI Approved"; } pkgs.lib.licenses.mit ];
504 504 };
505 505 };
506 506 "futures" = super.buildPythonPackage {
507 507 name = "futures-3.0.2";
508 508 doCheck = false;
509 509 src = fetchurl {
510 510 url = "https://files.pythonhosted.org/packages/f8/e7/fc0fcbeb9193ba2d4de00b065e7fd5aecd0679e93ce95a07322b2b1434f4/futures-3.0.2.tar.gz";
511 511 sha256 = "0mz2pbgxbc2nbib1szifi07whjbfs4r02pv2z390z7p410awjgyw";
512 512 };
513 513 meta = {
514 514 license = [ pkgs.lib.licenses.bsdOriginal ];
515 515 };
516 516 };
517 517 "gevent" = super.buildPythonPackage {
518 518 name = "gevent-1.3.5";
519 519 doCheck = false;
520 520 propagatedBuildInputs = [
521 521 self."greenlet"
522 522 ];
523 523 src = fetchurl {
524 524 url = "https://files.pythonhosted.org/packages/e6/0a/fc345c6e6161f84484870dbcaa58e427c10bd9bdcd08a69bed3d6b398bf1/gevent-1.3.5.tar.gz";
525 525 sha256 = "1w3gydxirgd2f60c5yv579w4903ds9s4g3587ik4jby97hgqc5bz";
526 526 };
527 527 meta = {
528 528 license = [ pkgs.lib.licenses.mit ];
529 529 };
530 530 };
531 531 "gnureadline" = super.buildPythonPackage {
532 532 name = "gnureadline-6.3.8";
533 533 doCheck = false;
534 534 src = fetchurl {
535 535 url = "https://files.pythonhosted.org/packages/50/64/86085c823cd78f9df9d8e33dce0baa71618016f8860460b82cf6610e1eb3/gnureadline-6.3.8.tar.gz";
536 536 sha256 = "0ddhj98x2nv45iz4aadk4b9m0b1kpsn1xhcbypn5cd556knhiqjq";
537 537 };
538 538 meta = {
539 539 license = [ { fullName = "GNU General Public License v3 (GPLv3)"; } pkgs.lib.licenses.gpl1 ];
540 540 };
541 541 };
542 542 "gprof2dot" = super.buildPythonPackage {
543 543 name = "gprof2dot-2017.9.19";
544 544 doCheck = false;
545 545 src = fetchurl {
546 546 url = "https://files.pythonhosted.org/packages/9d/36/f977122502979f3dfb50704979c9ed70e6b620787942b089bf1af15f5aba/gprof2dot-2017.9.19.tar.gz";
547 547 sha256 = "17ih23ld2nzgc3xwgbay911l6lh96jp1zshmskm17n1gg2i7mg6f";
548 548 };
549 549 meta = {
550 550 license = [ { fullName = "GNU Lesser General Public License v3 or later (LGPLv3+)"; } { fullName = "LGPL"; } ];
551 551 };
552 552 };
553 553 "graphviz" = super.buildPythonPackage {
554 554 name = "graphviz-0.9";
555 555 doCheck = false;
556 556 src = fetchurl {
557 557 url = "https://files.pythonhosted.org/packages/2b/e6/71521bab8fb99833133f08f6ac0460e2f6b425a7f75ac4b02323c3c3b512/graphviz-0.9.zip";
558 558 sha256 = "14r9brj4r31b3qy1nnn34v3l4h0n39bqxg9sn2fz4p3pp5mglnl6";
559 559 };
560 560 meta = {
561 561 license = [ pkgs.lib.licenses.mit ];
562 562 };
563 563 };
564 564 "greenlet" = super.buildPythonPackage {
565 565 name = "greenlet-0.4.13";
566 566 doCheck = false;
567 567 src = fetchurl {
568 568 url = "https://files.pythonhosted.org/packages/13/de/ba92335e9e76040ca7274224942282a80d54f85e342a5e33c5277c7f87eb/greenlet-0.4.13.tar.gz";
569 569 sha256 = "1r412gfx25jrdiv444prmz5a8igrfabwnwqyr6b52ypq7ga87vqg";
570 570 };
571 571 meta = {
572 572 license = [ pkgs.lib.licenses.mit ];
573 573 };
574 574 };
575 575 "gunicorn" = super.buildPythonPackage {
576 576 name = "gunicorn-19.9.0";
577 577 doCheck = false;
578 578 src = fetchurl {
579 579 url = "https://files.pythonhosted.org/packages/47/52/68ba8e5e8ba251e54006a49441f7ccabca83b6bef5aedacb4890596c7911/gunicorn-19.9.0.tar.gz";
580 580 sha256 = "1wzlf4xmn6qjirh5w81l6i6kqjnab1n1qqkh7zsj1yb6gh4n49ps";
581 581 };
582 582 meta = {
583 583 license = [ pkgs.lib.licenses.mit ];
584 584 };
585 585 };
586 586 "html5lib" = super.buildPythonPackage {
587 587 name = "html5lib-1.0.1";
588 588 doCheck = false;
589 589 propagatedBuildInputs = [
590 590 self."six"
591 591 self."webencodings"
592 592 ];
593 593 src = fetchurl {
594 594 url = "https://files.pythonhosted.org/packages/85/3e/cf449cf1b5004e87510b9368e7a5f1acd8831c2d6691edd3c62a0823f98f/html5lib-1.0.1.tar.gz";
595 595 sha256 = "0dipzfrycv6j1jw82v9b7d8lzggx3x8xngx6l4xrqkxwvg7hvjv6";
596 596 };
597 597 meta = {
598 598 license = [ pkgs.lib.licenses.mit ];
599 599 };
600 600 };
601 601 "hupper" = super.buildPythonPackage {
602 602 name = "hupper-1.3";
603 603 doCheck = false;
604 604 src = fetchurl {
605 605 url = "https://files.pythonhosted.org/packages/51/0c/96335b1f2f32245fb871eea5bb9773196505ddb71fad15190056a282df9e/hupper-1.3.tar.gz";
606 606 sha256 = "1pkyrm9c2crc32ps00k1ahnc5clj3pjwiarc7j0x8aykwih7ff10";
607 607 };
608 608 meta = {
609 609 license = [ pkgs.lib.licenses.mit ];
610 610 };
611 611 };
612 612 "infrae.cache" = super.buildPythonPackage {
613 613 name = "infrae.cache-1.0.1";
614 614 doCheck = false;
615 615 propagatedBuildInputs = [
616 616 self."beaker"
617 617 self."repoze.lru"
618 618 ];
619 619 src = fetchurl {
620 620 url = "https://files.pythonhosted.org/packages/bb/f0/e7d5e984cf6592fd2807dc7bc44a93f9d18e04e6a61f87fdfb2622422d74/infrae.cache-1.0.1.tar.gz";
621 621 sha256 = "1dvqsjn8vw253wz9d1pz17j79mf4bs53dvp2qxck2qdp1am1njw4";
622 622 };
623 623 meta = {
624 624 license = [ pkgs.lib.licenses.zpl21 ];
625 625 };
626 626 };
627 627 "invoke" = super.buildPythonPackage {
628 628 name = "invoke-0.13.0";
629 629 doCheck = false;
630 630 src = fetchurl {
631 631 url = "https://files.pythonhosted.org/packages/47/bf/d07ef52fa1ac645468858bbac7cb95b246a972a045e821493d17d89c81be/invoke-0.13.0.tar.gz";
632 632 sha256 = "0794vhgxfmkh0vzkkg5cfv1w82g3jc3xr18wim29far9qpx9468s";
633 633 };
634 634 meta = {
635 635 license = [ pkgs.lib.licenses.bsdOriginal ];
636 636 };
637 637 };
638 638 "ipaddress" = super.buildPythonPackage {
639 639 name = "ipaddress-1.0.22";
640 640 doCheck = false;
641 641 src = fetchurl {
642 642 url = "https://files.pythonhosted.org/packages/97/8d/77b8cedcfbf93676148518036c6b1ce7f8e14bf07e95d7fd4ddcb8cc052f/ipaddress-1.0.22.tar.gz";
643 643 sha256 = "0b570bm6xqpjwqis15pvdy6lyvvzfndjvkynilcddjj5x98wfimi";
644 644 };
645 645 meta = {
646 646 license = [ pkgs.lib.licenses.psfl ];
647 647 };
648 648 };
649 649 "ipdb" = super.buildPythonPackage {
650 650 name = "ipdb-0.11";
651 651 doCheck = false;
652 652 propagatedBuildInputs = [
653 653 self."setuptools"
654 654 self."ipython"
655 655 ];
656 656 src = fetchurl {
657 657 url = "https://files.pythonhosted.org/packages/80/fe/4564de08f174f3846364b3add8426d14cebee228f741c27e702b2877e85b/ipdb-0.11.tar.gz";
658 658 sha256 = "02m0l8wrhhd3z7dg3czn5ys1g5pxib516hpshdzp7rxzsxgcd0bh";
659 659 };
660 660 meta = {
661 661 license = [ pkgs.lib.licenses.bsdOriginal ];
662 662 };
663 663 };
664 664 "ipython" = super.buildPythonPackage {
665 665 name = "ipython-5.1.0";
666 666 doCheck = false;
667 667 propagatedBuildInputs = [
668 668 self."setuptools"
669 669 self."decorator"
670 670 self."pickleshare"
671 671 self."simplegeneric"
672 672 self."traitlets"
673 673 self."prompt-toolkit"
674 674 self."pygments"
675 675 self."pexpect"
676 676 self."backports.shutil-get-terminal-size"
677 677 self."pathlib2"
678 678 self."pexpect"
679 679 ];
680 680 src = fetchurl {
681 681 url = "https://files.pythonhosted.org/packages/89/63/a9292f7cd9d0090a0f995e1167f3f17d5889dcbc9a175261719c513b9848/ipython-5.1.0.tar.gz";
682 682 sha256 = "0qdrf6aj9kvjczd5chj1my8y2iq09am9l8bb2a1334a52d76kx3y";
683 683 };
684 684 meta = {
685 685 license = [ pkgs.lib.licenses.bsdOriginal ];
686 686 };
687 687 };
688 688 "ipython-genutils" = super.buildPythonPackage {
689 689 name = "ipython-genutils-0.2.0";
690 690 doCheck = false;
691 691 src = fetchurl {
692 692 url = "https://files.pythonhosted.org/packages/e8/69/fbeffffc05236398ebfcfb512b6d2511c622871dca1746361006da310399/ipython_genutils-0.2.0.tar.gz";
693 693 sha256 = "1a4bc9y8hnvq6cp08qs4mckgm6i6ajpndp4g496rvvzcfmp12bpb";
694 694 };
695 695 meta = {
696 696 license = [ pkgs.lib.licenses.bsdOriginal ];
697 697 };
698 698 };
699 699 "iso8601" = super.buildPythonPackage {
700 700 name = "iso8601-0.1.11";
701 701 doCheck = false;
702 702 src = fetchurl {
703 703 url = "https://files.pythonhosted.org/packages/c0/75/c9209ee4d1b5975eb8c2cba4428bde6b61bd55664a98290dd015cdb18e98/iso8601-0.1.11.tar.gz";
704 704 sha256 = "0c7gh3lsdjds262h0v1sqc66l7hqgfwbakn96qrhdbl0i3vm5yz8";
705 705 };
706 706 meta = {
707 707 license = [ pkgs.lib.licenses.mit ];
708 708 };
709 709 };
710 710 "itsdangerous" = super.buildPythonPackage {
711 711 name = "itsdangerous-0.24";
712 712 doCheck = false;
713 713 src = fetchurl {
714 714 url = "https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz";
715 715 sha256 = "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb";
716 716 };
717 717 meta = {
718 718 license = [ pkgs.lib.licenses.bsdOriginal ];
719 719 };
720 720 };
721 721 "jinja2" = super.buildPythonPackage {
722 722 name = "jinja2-2.9.6";
723 723 doCheck = false;
724 724 propagatedBuildInputs = [
725 725 self."markupsafe"
726 726 ];
727 727 src = fetchurl {
728 728 url = "https://files.pythonhosted.org/packages/90/61/f820ff0076a2599dd39406dcb858ecb239438c02ce706c8e91131ab9c7f1/Jinja2-2.9.6.tar.gz";
729 729 sha256 = "1zzrkywhziqffrzks14kzixz7nd4yh2vc0fb04a68vfd2ai03anx";
730 730 };
731 731 meta = {
732 732 license = [ pkgs.lib.licenses.bsdOriginal ];
733 733 };
734 734 };
735 735 "jsonschema" = super.buildPythonPackage {
736 736 name = "jsonschema-2.6.0";
737 737 doCheck = false;
738 738 propagatedBuildInputs = [
739 739 self."functools32"
740 740 ];
741 741 src = fetchurl {
742 742 url = "https://files.pythonhosted.org/packages/58/b9/171dbb07e18c6346090a37f03c7e74410a1a56123f847efed59af260a298/jsonschema-2.6.0.tar.gz";
743 743 sha256 = "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg";
744 744 };
745 745 meta = {
746 746 license = [ pkgs.lib.licenses.mit ];
747 747 };
748 748 };
749 749 "jupyter-client" = super.buildPythonPackage {
750 750 name = "jupyter-client-5.0.0";
751 751 doCheck = false;
752 752 propagatedBuildInputs = [
753 753 self."traitlets"
754 754 self."jupyter-core"
755 755 self."pyzmq"
756 756 self."python-dateutil"
757 757 ];
758 758 src = fetchurl {
759 759 url = "https://files.pythonhosted.org/packages/e5/6f/65412ed462202b90134b7e761b0b7e7f949e07a549c1755475333727b3d0/jupyter_client-5.0.0.tar.gz";
760 760 sha256 = "0nxw4rqk4wsjhc87gjqd7pv89cb9dnimcfnmcmp85bmrvv1gjri7";
761 761 };
762 762 meta = {
763 763 license = [ pkgs.lib.licenses.bsdOriginal ];
764 764 };
765 765 };
766 766 "jupyter-core" = super.buildPythonPackage {
767 767 name = "jupyter-core-4.4.0";
768 768 doCheck = false;
769 769 propagatedBuildInputs = [
770 770 self."traitlets"
771 771 ];
772 772 src = fetchurl {
773 773 url = "https://files.pythonhosted.org/packages/b6/2d/2804f4de3a95583f65e5dcb4d7c8c7183124882323758996e867f47e72af/jupyter_core-4.4.0.tar.gz";
774 774 sha256 = "1dy083rarba8prn9f9srxq3c7n7vyql02ycrqq306c40lr57aw5s";
775 775 };
776 776 meta = {
777 777 license = [ pkgs.lib.licenses.bsdOriginal ];
778 778 };
779 779 };
780 780 "kombu" = super.buildPythonPackage {
781 781 name = "kombu-4.2.0";
782 782 doCheck = false;
783 783 propagatedBuildInputs = [
784 784 self."amqp"
785 785 ];
786 786 src = fetchurl {
787 787 url = "https://files.pythonhosted.org/packages/ab/b1/46a7a8babf5e60f3b2ca081a100af8edfcf132078a726375f52a054e70cf/kombu-4.2.0.tar.gz";
788 788 sha256 = "1yz19qlqf0inl1mnwlpq9j6kj9r67clpy0xg99phyg4329rw80fn";
789 789 };
790 790 meta = {
791 791 license = [ pkgs.lib.licenses.bsdOriginal ];
792 792 };
793 793 };
794 794 "lxml" = super.buildPythonPackage {
795 795 name = "lxml-3.7.3";
796 796 doCheck = false;
797 797 src = fetchurl {
798 798 url = "https://files.pythonhosted.org/packages/39/e8/a8e0b1fa65dd021d48fe21464f71783655f39a41f218293c1c590d54eb82/lxml-3.7.3.tar.gz";
799 799 sha256 = "1iv1jgkqn1hdh1xyxri6g0y1s67h01jzjkw2nhkx3rqylmw2sl5a";
800 800 };
801 801 meta = {
802 802 license = [ pkgs.lib.licenses.bsdOriginal ];
803 803 };
804 804 };
805 805 "mako" = super.buildPythonPackage {
806 806 name = "mako-1.0.7";
807 807 doCheck = false;
808 808 propagatedBuildInputs = [
809 809 self."markupsafe"
810 810 ];
811 811 src = fetchurl {
812 812 url = "https://files.pythonhosted.org/packages/eb/f3/67579bb486517c0d49547f9697e36582cd19dafb5df9e687ed8e22de57fa/Mako-1.0.7.tar.gz";
813 813 sha256 = "1bi5gnr8r8dva06qpyx4kgjc6spm2k1y908183nbbaylggjzs0jf";
814 814 };
815 815 meta = {
816 816 license = [ pkgs.lib.licenses.mit ];
817 817 };
818 818 };
819 819 "markdown" = super.buildPythonPackage {
820 820 name = "markdown-2.6.11";
821 821 doCheck = false;
822 822 src = fetchurl {
823 823 url = "https://files.pythonhosted.org/packages/b3/73/fc5c850f44af5889192dff783b7b0d8f3fe8d30b65c8e3f78f8f0265fecf/Markdown-2.6.11.tar.gz";
824 824 sha256 = "108g80ryzykh8bj0i7jfp71510wrcixdi771lf2asyghgyf8cmm8";
825 825 };
826 826 meta = {
827 827 license = [ pkgs.lib.licenses.bsdOriginal ];
828 828 };
829 829 };
830 830 "markupsafe" = super.buildPythonPackage {
831 831 name = "markupsafe-1.0";
832 832 doCheck = false;
833 833 src = fetchurl {
834 834 url = "https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz";
835 835 sha256 = "0rdn1s8x9ni7ss8rfiacj7x1085lx8mh2zdwqslnw8xc3l4nkgm6";
836 836 };
837 837 meta = {
838 838 license = [ pkgs.lib.licenses.bsdOriginal ];
839 839 };
840 840 };
841 841 "meld3" = super.buildPythonPackage {
842 842 name = "meld3-1.0.2";
843 843 doCheck = false;
844 844 src = fetchurl {
845 845 url = "https://files.pythonhosted.org/packages/45/a0/317c6422b26c12fe0161e936fc35f36552069ba8e6f7ecbd99bbffe32a5f/meld3-1.0.2.tar.gz";
846 846 sha256 = "0n4mkwlpsqnmn0dm0wm5hn9nkda0nafl0jdy5sdl5977znh59dzp";
847 847 };
848 848 meta = {
849 849 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
850 850 };
851 851 };
852 852 "mistune" = super.buildPythonPackage {
853 853 name = "mistune-0.8.3";
854 854 doCheck = false;
855 855 src = fetchurl {
856 856 url = "https://files.pythonhosted.org/packages/9d/be/e06d4346cc608a01dec6bf770d7d0303a4fd6db588b318ced18f5f257145/mistune-0.8.3.tar.gz";
857 857 sha256 = "06b662p6kf46wh2jsabaqhaq4bz1srh2zxkrnx4yg96azlxw645w";
858 858 };
859 859 meta = {
860 860 license = [ pkgs.lib.licenses.bsdOriginal ];
861 861 };
862 862 };
863 863 "mock" = super.buildPythonPackage {
864 864 name = "mock-1.0.1";
865 865 doCheck = false;
866 866 src = fetchurl {
867 867 url = "https://files.pythonhosted.org/packages/a2/52/7edcd94f0afb721a2d559a5b9aae8af4f8f2c79bc63fdbe8a8a6c9b23bbe/mock-1.0.1.tar.gz";
868 868 sha256 = "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq";
869 869 };
870 870 meta = {
871 871 license = [ pkgs.lib.licenses.bsdOriginal ];
872 872 };
873 873 };
874 874 "more-itertools" = super.buildPythonPackage {
875 875 name = "more-itertools-4.3.0";
876 876 doCheck = false;
877 877 propagatedBuildInputs = [
878 878 self."six"
879 879 ];
880 880 src = fetchurl {
881 881 url = "https://files.pythonhosted.org/packages/88/ff/6d485d7362f39880810278bdc906c13300db05485d9c65971dec1142da6a/more-itertools-4.3.0.tar.gz";
882 882 sha256 = "17h3na0rdh8xq30w4b9pizgkdxmm51896bxw600x84jflg9vaxn4";
883 883 };
884 884 meta = {
885 885 license = [ pkgs.lib.licenses.mit ];
886 886 };
887 887 };
888 888 "msgpack-python" = super.buildPythonPackage {
889 889 name = "msgpack-python-0.5.6";
890 890 doCheck = false;
891 891 src = fetchurl {
892 892 url = "https://files.pythonhosted.org/packages/8a/20/6eca772d1a5830336f84aca1d8198e5a3f4715cd1c7fc36d3cc7f7185091/msgpack-python-0.5.6.tar.gz";
893 893 sha256 = "16wh8qgybmfh4pjp8vfv78mdlkxfmcasg78lzlnm6nslsfkci31p";
894 894 };
895 895 meta = {
896 896 license = [ pkgs.lib.licenses.asl20 ];
897 897 };
898 898 };
899 899 "mysql-python" = super.buildPythonPackage {
900 900 name = "mysql-python-1.2.5";
901 901 doCheck = false;
902 902 src = fetchurl {
903 903 url = "https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip";
904 904 sha256 = "0x0c2jg0bb3pp84njaqiic050qkyd7ymwhfvhipnimg58yv40441";
905 905 };
906 906 meta = {
907 907 license = [ pkgs.lib.licenses.gpl1 ];
908 908 };
909 909 };
910 910 "nbconvert" = super.buildPythonPackage {
911 911 name = "nbconvert-5.3.1";
912 912 doCheck = false;
913 913 propagatedBuildInputs = [
914 914 self."mistune"
915 915 self."jinja2"
916 916 self."pygments"
917 917 self."traitlets"
918 918 self."jupyter-core"
919 919 self."nbformat"
920 920 self."entrypoints"
921 921 self."bleach"
922 922 self."pandocfilters"
923 923 self."testpath"
924 924 ];
925 925 src = fetchurl {
926 926 url = "https://files.pythonhosted.org/packages/b9/a4/d0a0938ad6f5eeb4dea4e73d255c617ef94b0b2849d51194c9bbdb838412/nbconvert-5.3.1.tar.gz";
927 927 sha256 = "1f9dkvpx186xjm4xab0qbph588mncp4vqk3fmxrsnqs43mks9c8j";
928 928 };
929 929 meta = {
930 930 license = [ pkgs.lib.licenses.bsdOriginal ];
931 931 };
932 932 };
933 933 "nbformat" = super.buildPythonPackage {
934 934 name = "nbformat-4.4.0";
935 935 doCheck = false;
936 936 propagatedBuildInputs = [
937 937 self."ipython-genutils"
938 938 self."traitlets"
939 939 self."jsonschema"
940 940 self."jupyter-core"
941 941 ];
942 942 src = fetchurl {
943 943 url = "https://files.pythonhosted.org/packages/6e/0e/160754f7ae3e984863f585a3743b0ed1702043a81245907c8fae2d537155/nbformat-4.4.0.tar.gz";
944 944 sha256 = "00nlf08h8yc4q73nphfvfhxrcnilaqanb8z0mdy6nxk0vzq4wjgp";
945 945 };
946 946 meta = {
947 947 license = [ pkgs.lib.licenses.bsdOriginal ];
948 948 };
949 949 };
950 950 "objgraph" = super.buildPythonPackage {
951 951 name = "objgraph-3.1.1";
952 952 doCheck = false;
953 953 propagatedBuildInputs = [
954 954 self."graphviz"
955 955 ];
956 956 src = fetchurl {
957 957 url = "https://files.pythonhosted.org/packages/be/58/9ca81a20cc837054e94866df1475d899caaa94f3732b8a46006858b015f7/objgraph-3.1.1.tar.gz";
958 958 sha256 = "17aq4cwainiwvj8x61j0hx45c313bkwza5fijnmmw8v8glyy2bcc";
959 959 };
960 960 meta = {
961 961 license = [ pkgs.lib.licenses.mit ];
962 962 };
963 963 };
964 964 "packaging" = super.buildPythonPackage {
965 965 name = "packaging-15.2";
966 966 doCheck = false;
967 967 src = fetchurl {
968 968 url = "https://files.pythonhosted.org/packages/24/c4/185da1304f07047dc9e0c46c31db75c0351bd73458ac3efad7da3dbcfbe1/packaging-15.2.tar.gz";
969 969 sha256 = "1zn60w84bxvw6wypffka18ca66pa1k2cfrq3cq8fnsfja5m3k4ng";
970 970 };
971 971 meta = {
972 972 license = [ pkgs.lib.licenses.asl20 ];
973 973 };
974 974 };
975 975 "pandocfilters" = super.buildPythonPackage {
976 976 name = "pandocfilters-1.4.2";
977 977 doCheck = false;
978 978 src = fetchurl {
979 979 url = "https://files.pythonhosted.org/packages/4c/ea/236e2584af67bb6df960832731a6e5325fd4441de001767da328c33368ce/pandocfilters-1.4.2.tar.gz";
980 980 sha256 = "1a8d9b7s48gmq9zj0pmbyv2sivn5i7m6mybgpkk4jm5vd7hp1pdk";
981 981 };
982 982 meta = {
983 983 license = [ pkgs.lib.licenses.bsdOriginal ];
984 984 };
985 985 };
986 986 "paste" = super.buildPythonPackage {
987 987 name = "paste-2.0.3";
988 988 doCheck = false;
989 989 propagatedBuildInputs = [
990 990 self."six"
991 991 ];
992 992 src = fetchurl {
993 993 url = "https://files.pythonhosted.org/packages/30/c3/5c2f7c7a02e4f58d4454353fa1c32c94f79fa4e36d07a67c0ac295ea369e/Paste-2.0.3.tar.gz";
994 994 sha256 = "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3";
995 995 };
996 996 meta = {
997 997 license = [ pkgs.lib.licenses.mit ];
998 998 };
999 999 };
1000 1000 "pastedeploy" = super.buildPythonPackage {
1001 1001 name = "pastedeploy-1.5.2";
1002 1002 doCheck = false;
1003 1003 src = fetchurl {
1004 1004 url = "https://files.pythonhosted.org/packages/0f/90/8e20cdae206c543ea10793cbf4136eb9a8b3f417e04e40a29d72d9922cbd/PasteDeploy-1.5.2.tar.gz";
1005 1005 sha256 = "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm";
1006 1006 };
1007 1007 meta = {
1008 1008 license = [ pkgs.lib.licenses.mit ];
1009 1009 };
1010 1010 };
1011 1011 "pastescript" = super.buildPythonPackage {
1012 1012 name = "pastescript-2.0.2";
1013 1013 doCheck = false;
1014 1014 propagatedBuildInputs = [
1015 1015 self."paste"
1016 1016 self."pastedeploy"
1017 1017 self."six"
1018 1018 ];
1019 1019 src = fetchurl {
1020 1020 url = "https://files.pythonhosted.org/packages/e5/f0/78e766c3dcc61a4f3a6f71dd8c95168ae9c7a31722b5663d19c1fdf62cb6/PasteScript-2.0.2.tar.gz";
1021 1021 sha256 = "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0";
1022 1022 };
1023 1023 meta = {
1024 1024 license = [ pkgs.lib.licenses.mit ];
1025 1025 };
1026 1026 };
1027 1027 "pathlib2" = super.buildPythonPackage {
1028 1028 name = "pathlib2-2.3.0";
1029 1029 doCheck = false;
1030 1030 propagatedBuildInputs = [
1031 1031 self."six"
1032 1032 self."scandir"
1033 1033 ];
1034 1034 src = fetchurl {
1035 1035 url = "https://files.pythonhosted.org/packages/a1/14/df0deb867c2733f7d857523c10942b3d6612a1b222502fdffa9439943dfb/pathlib2-2.3.0.tar.gz";
1036 1036 sha256 = "1cx5gs2v9j2vnzmcrbq5l8fq2mwrr1h6pyf1sjdji2w1bavm09fk";
1037 1037 };
1038 1038 meta = {
1039 1039 license = [ pkgs.lib.licenses.mit ];
1040 1040 };
1041 1041 };
1042 1042 "peppercorn" = super.buildPythonPackage {
1043 1043 name = "peppercorn-0.5";
1044 1044 doCheck = false;
1045 1045 src = fetchurl {
1046 1046 url = "https://files.pythonhosted.org/packages/45/ec/a62ec317d1324a01567c5221b420742f094f05ee48097e5157d32be3755c/peppercorn-0.5.tar.gz";
1047 1047 sha256 = "0jvp144zn7yqk9kbpxc059167mlqk85i5lpvl1niw8gsa5fvl74j";
1048 1048 };
1049 1049 meta = {
1050 1050 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1051 1051 };
1052 1052 };
1053 1053 "pexpect" = super.buildPythonPackage {
1054 1054 name = "pexpect-4.6.0";
1055 1055 doCheck = false;
1056 1056 propagatedBuildInputs = [
1057 1057 self."ptyprocess"
1058 1058 ];
1059 1059 src = fetchurl {
1060 1060 url = "https://files.pythonhosted.org/packages/89/43/07d07654ee3e25235d8cea4164cdee0ec39d1fda8e9203156ebe403ffda4/pexpect-4.6.0.tar.gz";
1061 1061 sha256 = "1fla85g47iaxxpjhp9vkxdnv4pgc7rplfy6ja491smrrk0jqi3ia";
1062 1062 };
1063 1063 meta = {
1064 1064 license = [ pkgs.lib.licenses.isc { fullName = "ISC License (ISCL)"; } ];
1065 1065 };
1066 1066 };
1067 1067 "pickleshare" = super.buildPythonPackage {
1068 1068 name = "pickleshare-0.7.4";
1069 1069 doCheck = false;
1070 1070 propagatedBuildInputs = [
1071 1071 self."pathlib2"
1072 1072 ];
1073 1073 src = fetchurl {
1074 1074 url = "https://files.pythonhosted.org/packages/69/fe/dd137d84daa0fd13a709e448138e310d9ea93070620c9db5454e234af525/pickleshare-0.7.4.tar.gz";
1075 1075 sha256 = "0yvk14dzxk7g6qpr7iw23vzqbsr0dh4ij4xynkhnzpfz4xr2bac4";
1076 1076 };
1077 1077 meta = {
1078 1078 license = [ pkgs.lib.licenses.mit ];
1079 1079 };
1080 1080 };
1081 1081 "plaster" = super.buildPythonPackage {
1082 1082 name = "plaster-1.0";
1083 1083 doCheck = false;
1084 1084 propagatedBuildInputs = [
1085 1085 self."setuptools"
1086 1086 ];
1087 1087 src = fetchurl {
1088 1088 url = "https://files.pythonhosted.org/packages/37/e1/56d04382d718d32751017d32f351214384e529b794084eee20bb52405563/plaster-1.0.tar.gz";
1089 1089 sha256 = "1hy8k0nv2mxq94y5aysk6hjk9ryb4bsd13g83m60hcyzxz3wflc3";
1090 1090 };
1091 1091 meta = {
1092 1092 license = [ pkgs.lib.licenses.mit ];
1093 1093 };
1094 1094 };
1095 1095 "plaster-pastedeploy" = super.buildPythonPackage {
1096 1096 name = "plaster-pastedeploy-0.6";
1097 1097 doCheck = false;
1098 1098 propagatedBuildInputs = [
1099 1099 self."pastedeploy"
1100 1100 self."plaster"
1101 1101 ];
1102 1102 src = fetchurl {
1103 1103 url = "https://files.pythonhosted.org/packages/3f/e7/6a6833158d2038ec40085433308a1e164fd1dac595513f6dd556d5669bb8/plaster_pastedeploy-0.6.tar.gz";
1104 1104 sha256 = "1bkggk18f4z2bmsmxyxabvf62znvjwbivzh880419r3ap0616cf2";
1105 1105 };
1106 1106 meta = {
1107 1107 license = [ pkgs.lib.licenses.mit ];
1108 1108 };
1109 1109 };
1110 1110 "pluggy" = super.buildPythonPackage {
1111 1111 name = "pluggy-0.6.0";
1112 1112 doCheck = false;
1113 1113 src = fetchurl {
1114 1114 url = "https://files.pythonhosted.org/packages/11/bf/cbeb8cdfaffa9f2ea154a30ae31a9d04a1209312e2919138b4171a1f8199/pluggy-0.6.0.tar.gz";
1115 1115 sha256 = "1zqckndfn85l1cd8pndw212zg1bq9fkg1nnj32kp2mppppsyg2kz";
1116 1116 };
1117 1117 meta = {
1118 1118 license = [ pkgs.lib.licenses.mit ];
1119 1119 };
1120 1120 };
1121 1121 "prompt-toolkit" = super.buildPythonPackage {
1122 1122 name = "prompt-toolkit-1.0.15";
1123 1123 doCheck = false;
1124 1124 propagatedBuildInputs = [
1125 1125 self."six"
1126 1126 self."wcwidth"
1127 1127 ];
1128 1128 src = fetchurl {
1129 1129 url = "https://files.pythonhosted.org/packages/8a/ad/cf6b128866e78ad6d7f1dc5b7f99885fb813393d9860778b2984582e81b5/prompt_toolkit-1.0.15.tar.gz";
1130 1130 sha256 = "05v9h5nydljwpj5nm8n804ms0glajwfy1zagrzqrg91wk3qqi1c5";
1131 1131 };
1132 1132 meta = {
1133 1133 license = [ pkgs.lib.licenses.bsdOriginal ];
1134 1134 };
1135 1135 };
1136 1136 "psutil" = super.buildPythonPackage {
1137 1137 name = "psutil-5.4.6";
1138 1138 doCheck = false;
1139 1139 src = fetchurl {
1140 1140 url = "https://files.pythonhosted.org/packages/51/9e/0f8f5423ce28c9109807024f7bdde776ed0b1161de20b408875de7e030c3/psutil-5.4.6.tar.gz";
1141 1141 sha256 = "1xmw4qi6hnrhw81xqzkvmsm9im7j2vkk4v26ycjwq2jczqsmlvk8";
1142 1142 };
1143 1143 meta = {
1144 1144 license = [ pkgs.lib.licenses.bsdOriginal ];
1145 1145 };
1146 1146 };
1147 1147 "psycopg2" = super.buildPythonPackage {
1148 1148 name = "psycopg2-2.7.4";
1149 1149 doCheck = false;
1150 1150 src = fetchurl {
1151 1151 url = "https://files.pythonhosted.org/packages/74/83/51580322ed0e82cba7ad8e0af590b8fb2cf11bd5aaa1ed872661bd36f462/psycopg2-2.7.4.tar.gz";
1152 1152 sha256 = "02b2yaf1hlwb91xkscbzmajpfj5z3d8yikzh5r48fs8gss8i3xcb";
1153 1153 };
1154 1154 meta = {
1155 1155 license = [ pkgs.lib.licenses.zpl21 { fullName = "GNU Library or Lesser General Public License (LGPL)"; } { fullName = "LGPL with exceptions or ZPL"; } ];
1156 1156 };
1157 1157 };
1158 1158 "ptyprocess" = super.buildPythonPackage {
1159 1159 name = "ptyprocess-0.6.0";
1160 1160 doCheck = false;
1161 1161 src = fetchurl {
1162 1162 url = "https://files.pythonhosted.org/packages/7d/2d/e4b8733cf79b7309d84c9081a4ab558c89d8c89da5961bf4ddb050ca1ce0/ptyprocess-0.6.0.tar.gz";
1163 1163 sha256 = "1h4lcd3w5nrxnsk436ar7fwkiy5rfn5wj2xwy9l0r4mdqnf2jgwj";
1164 1164 };
1165 1165 meta = {
1166 1166 license = [ ];
1167 1167 };
1168 1168 };
1169 1169 "py" = super.buildPythonPackage {
1170 1170 name = "py-1.5.3";
1171 1171 doCheck = false;
1172 1172 src = fetchurl {
1173 1173 url = "https://files.pythonhosted.org/packages/f7/84/b4c6e84672c4ceb94f727f3da8344037b62cee960d80e999b1cd9b832d83/py-1.5.3.tar.gz";
1174 1174 sha256 = "10gq2lckvgwlk9w6yzijhzkarx44hsaknd0ypa08wlnpjnsgmj99";
1175 1175 };
1176 1176 meta = {
1177 1177 license = [ pkgs.lib.licenses.mit ];
1178 1178 };
1179 1179 };
1180 1180 "py-bcrypt" = super.buildPythonPackage {
1181 1181 name = "py-bcrypt-0.4";
1182 1182 doCheck = false;
1183 1183 src = fetchurl {
1184 1184 url = "https://files.pythonhosted.org/packages/68/b1/1c3068c5c4d2e35c48b38dcc865301ebfdf45f54507086ac65ced1fd3b3d/py-bcrypt-0.4.tar.gz";
1185 1185 sha256 = "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az";
1186 1186 };
1187 1187 meta = {
1188 1188 license = [ pkgs.lib.licenses.bsdOriginal ];
1189 1189 };
1190 1190 };
1191 1191 "py-gfm" = super.buildPythonPackage {
1192 1192 name = "py-gfm-0.1.3";
1193 1193 doCheck = false;
1194 1194 propagatedBuildInputs = [
1195 1195 self."setuptools"
1196 1196 self."markdown"
1197 1197 ];
1198 1198 src = fetchurl {
1199 1199 url = "https://files.pythonhosted.org/packages/12/e4/6b3d8678da04f97d7490d8264d8de51c2dc9fb91209ccee9c515c95e14c5/py-gfm-0.1.3.tar.gz";
1200 1200 sha256 = "162ggwwj0af9g3s1k8m4bfwbvis03x9pinnf35mj79pb90rf81zi";
1201 1201 };
1202 1202 meta = {
1203 1203 license = [ pkgs.lib.licenses.bsdOriginal ];
1204 1204 };
1205 1205 };
1206 1206 "pyasn1" = super.buildPythonPackage {
1207 1207 name = "pyasn1-0.4.4";
1208 1208 doCheck = false;
1209 1209 src = fetchurl {
1210 1210 url = "https://files.pythonhosted.org/packages/10/46/059775dc8e50f722d205452bced4b3cc965d27e8c3389156acd3b1123ae3/pyasn1-0.4.4.tar.gz";
1211 1211 sha256 = "0drilmx5j25aplfr5wrml0030cs5fgxp9yp94fhllxgx28yjm3zm";
1212 1212 };
1213 1213 meta = {
1214 1214 license = [ pkgs.lib.licenses.bsdOriginal ];
1215 1215 };
1216 1216 };
1217 1217 "pyasn1-modules" = super.buildPythonPackage {
1218 1218 name = "pyasn1-modules-0.2.2";
1219 1219 doCheck = false;
1220 1220 propagatedBuildInputs = [
1221 1221 self."pyasn1"
1222 1222 ];
1223 1223 src = fetchurl {
1224 1224 url = "https://files.pythonhosted.org/packages/37/33/74ebdc52be534e683dc91faf263931bc00ae05c6073909fde53999088541/pyasn1-modules-0.2.2.tar.gz";
1225 1225 sha256 = "0ivm850yi7ajjbi8j115qpsj95bgxdsx48nbjzg0zip788c3xkx0";
1226 1226 };
1227 1227 meta = {
1228 1228 license = [ pkgs.lib.licenses.bsdOriginal ];
1229 1229 };
1230 1230 };
1231 1231 "pycrypto" = super.buildPythonPackage {
1232 1232 name = "pycrypto-2.6.1";
1233 1233 doCheck = false;
1234 1234 src = fetchurl {
1235 1235 url = "https://files.pythonhosted.org/packages/60/db/645aa9af249f059cc3a368b118de33889219e0362141e75d4eaf6f80f163/pycrypto-2.6.1.tar.gz";
1236 1236 sha256 = "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj";
1237 1237 };
1238 1238 meta = {
1239 1239 license = [ pkgs.lib.licenses.publicDomain ];
1240 1240 };
1241 1241 };
1242 1242 "pycurl" = super.buildPythonPackage {
1243 1243 name = "pycurl-7.43.0.2";
1244 1244 doCheck = false;
1245 1245 src = fetchurl {
1246 1246 url = "https://files.pythonhosted.org/packages/e8/e4/0dbb8735407189f00b33d84122b9be52c790c7c3b25286826f4e1bdb7bde/pycurl-7.43.0.2.tar.gz";
1247 1247 sha256 = "1915kb04k1j4y6k1dx1sgnbddxrl9r1n4q928if2lkrdm73xy30g";
1248 1248 };
1249 1249 meta = {
1250 1250 license = [ pkgs.lib.licenses.mit { fullName = "LGPL/MIT"; } { fullName = "GNU Library or Lesser General Public License (LGPL)"; } ];
1251 1251 };
1252 1252 };
1253 1253 "pyflakes" = super.buildPythonPackage {
1254 1254 name = "pyflakes-0.8.1";
1255 1255 doCheck = false;
1256 1256 src = fetchurl {
1257 1257 url = "https://files.pythonhosted.org/packages/75/22/a90ec0252f4f87f3ffb6336504de71fe16a49d69c4538dae2f12b9360a38/pyflakes-0.8.1.tar.gz";
1258 1258 sha256 = "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z";
1259 1259 };
1260 1260 meta = {
1261 1261 license = [ pkgs.lib.licenses.mit ];
1262 1262 };
1263 1263 };
1264 1264 "pygments" = super.buildPythonPackage {
1265 1265 name = "pygments-2.2.0";
1266 1266 doCheck = false;
1267 1267 src = fetchurl {
1268 1268 url = "https://files.pythonhosted.org/packages/71/2a/2e4e77803a8bd6408a2903340ac498cb0a2181811af7c9ec92cb70b0308a/Pygments-2.2.0.tar.gz";
1269 1269 sha256 = "1k78qdvir1yb1c634nkv6rbga8wv4289xarghmsbbvzhvr311bnv";
1270 1270 };
1271 1271 meta = {
1272 1272 license = [ pkgs.lib.licenses.bsdOriginal ];
1273 1273 };
1274 1274 };
1275 1275 "pygments-markdown-lexer" = super.buildPythonPackage {
1276 1276 name = "pygments-markdown-lexer-0.1.0.dev39";
1277 1277 doCheck = false;
1278 1278 propagatedBuildInputs = [
1279 1279 self."pygments"
1280 1280 ];
1281 1281 src = fetchurl {
1282 1282 url = "https://files.pythonhosted.org/packages/c3/12/674cdee66635d638cedb2c5d9c85ce507b7b2f91bdba29e482f1b1160ff6/pygments-markdown-lexer-0.1.0.dev39.zip";
1283 1283 sha256 = "1pzb5wy23q3fhs0rqzasjnw6hdzwjngpakb73i98cn0b8lk8q4jc";
1284 1284 };
1285 1285 meta = {
1286 1286 license = [ pkgs.lib.licenses.asl20 ];
1287 1287 };
1288 1288 };
1289 1289 "pymysql" = super.buildPythonPackage {
1290 1290 name = "pymysql-0.8.1";
1291 1291 doCheck = false;
1292 1292 src = fetchurl {
1293 1293 url = "https://files.pythonhosted.org/packages/44/39/6bcb83cae0095a31b6be4511707fdf2009d3e29903a55a0494d3a9a2fac0/PyMySQL-0.8.1.tar.gz";
1294 1294 sha256 = "0a96crz55bw4h6myh833skrli7b0ck89m3x673y2z2ryy7zrpq9l";
1295 1295 };
1296 1296 meta = {
1297 1297 license = [ pkgs.lib.licenses.mit ];
1298 1298 };
1299 1299 };
1300 1300 "pyotp" = super.buildPythonPackage {
1301 1301 name = "pyotp-2.2.6";
1302 1302 doCheck = false;
1303 1303 src = fetchurl {
1304 1304 url = "https://files.pythonhosted.org/packages/67/69/131f5ad63de40c30f3be88d891e4a2ea1b69398528db99bc1e5c543422fa/pyotp-2.2.6.tar.gz";
1305 1305 sha256 = "0sdxxvr3j4j0pk26v258jpxhgpbnpmyqhvzhl24hsd50j7fk14fx";
1306 1306 };
1307 1307 meta = {
1308 1308 license = [ pkgs.lib.licenses.bsdOriginal ];
1309 1309 };
1310 1310 };
1311 1311 "pyparsing" = super.buildPythonPackage {
1312 1312 name = "pyparsing-1.5.7";
1313 1313 doCheck = false;
1314 1314 src = fetchurl {
1315 1315 url = "https://files.pythonhosted.org/packages/6f/2c/47457771c02a8ff0f302b695e094ec309e30452232bd79198ee94fda689f/pyparsing-1.5.7.tar.gz";
1316 1316 sha256 = "17z7ws076z977sclj628fvwrp8y9j2rvdjcsq42v129n1gwi8vk4";
1317 1317 };
1318 1318 meta = {
1319 1319 license = [ pkgs.lib.licenses.mit ];
1320 1320 };
1321 1321 };
1322 1322 "pyramid" = super.buildPythonPackage {
1323 1323 name = "pyramid-1.9.2";
1324 1324 doCheck = false;
1325 1325 propagatedBuildInputs = [
1326 1326 self."setuptools"
1327 1327 self."webob"
1328 1328 self."repoze.lru"
1329 1329 self."zope.interface"
1330 1330 self."zope.deprecation"
1331 1331 self."venusian"
1332 1332 self."translationstring"
1333 1333 self."pastedeploy"
1334 1334 self."plaster"
1335 1335 self."plaster-pastedeploy"
1336 1336 self."hupper"
1337 1337 ];
1338 1338 src = fetchurl {
1339 1339 url = "https://files.pythonhosted.org/packages/a0/c1/b321d07cfc4870541989ad131c86a1d593bfe802af0eca9718a0dadfb97a/pyramid-1.9.2.tar.gz";
1340 1340 sha256 = "09drsl0346nchgxp2j7sa5hlk7mkhfld9wvbd0wicacrp26a92fg";
1341 1341 };
1342 1342 meta = {
1343 1343 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1344 1344 };
1345 1345 };
1346 1346 "pyramid-beaker" = super.buildPythonPackage {
1347 1347 name = "pyramid-beaker-0.8";
1348 1348 doCheck = false;
1349 1349 propagatedBuildInputs = [
1350 1350 self."pyramid"
1351 1351 self."beaker"
1352 1352 ];
1353 1353 src = fetchurl {
1354 1354 url = "https://files.pythonhosted.org/packages/d9/6e/b85426e00fd3d57f4545f74e1c3828552d8700f13ededeef9233f7bca8be/pyramid_beaker-0.8.tar.gz";
1355 1355 sha256 = "0hflx3qkcdml1mwpq53sz46s7jickpfn0zy0ns2c7j445j66bp3p";
1356 1356 };
1357 1357 meta = {
1358 1358 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1359 1359 };
1360 1360 };
1361 1361 "pyramid-debugtoolbar" = super.buildPythonPackage {
1362 1362 name = "pyramid-debugtoolbar-4.4";
1363 1363 doCheck = false;
1364 1364 propagatedBuildInputs = [
1365 1365 self."pyramid"
1366 1366 self."pyramid-mako"
1367 1367 self."repoze.lru"
1368 1368 self."pygments"
1369 1369 self."ipaddress"
1370 1370 ];
1371 1371 src = fetchurl {
1372 1372 url = "https://files.pythonhosted.org/packages/00/6f/c04eb4e715a7a5a4b24079ab7ffd1dceb1f70b2e24fc17686a2922dbac0a/pyramid_debugtoolbar-4.4.tar.gz";
1373 1373 sha256 = "17p7nxvapvy2hab1rah3ndq2kbs4v83pixj8x2n4m7008ai9lxsz";
1374 1374 };
1375 1375 meta = {
1376 1376 license = [ { fullName = "Repoze Public License"; } pkgs.lib.licenses.bsdOriginal ];
1377 1377 };
1378 1378 };
1379 1379 "pyramid-jinja2" = super.buildPythonPackage {
1380 1380 name = "pyramid-jinja2-2.7";
1381 1381 doCheck = false;
1382 1382 propagatedBuildInputs = [
1383 1383 self."pyramid"
1384 1384 self."zope.deprecation"
1385 1385 self."jinja2"
1386 1386 self."markupsafe"
1387 1387 ];
1388 1388 src = fetchurl {
1389 1389 url = "https://files.pythonhosted.org/packages/d8/80/d60a7233823de22ce77bd864a8a83736a1fe8b49884b08303a2e68b2c853/pyramid_jinja2-2.7.tar.gz";
1390 1390 sha256 = "1sz5s0pp5jqhf4w22w9527yz8hgdi4mhr6apd6vw1gm5clghh8aw";
1391 1391 };
1392 1392 meta = {
1393 1393 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1394 1394 };
1395 1395 };
1396 1396 "pyramid-mako" = super.buildPythonPackage {
1397 1397 name = "pyramid-mako-1.0.2";
1398 1398 doCheck = false;
1399 1399 propagatedBuildInputs = [
1400 1400 self."pyramid"
1401 1401 self."mako"
1402 1402 ];
1403 1403 src = fetchurl {
1404 1404 url = "https://files.pythonhosted.org/packages/f1/92/7e69bcf09676d286a71cb3bbb887b16595b96f9ba7adbdc239ffdd4b1eb9/pyramid_mako-1.0.2.tar.gz";
1405 1405 sha256 = "18gk2vliq8z4acblsl6yzgbvnr9rlxjlcqir47km7kvlk1xri83d";
1406 1406 };
1407 1407 meta = {
1408 1408 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1409 1409 };
1410 1410 };
1411 1411 "pysqlite" = super.buildPythonPackage {
1412 1412 name = "pysqlite-2.8.3";
1413 1413 doCheck = false;
1414 1414 src = fetchurl {
1415 1415 url = "https://files.pythonhosted.org/packages/42/02/981b6703e3c83c5b25a829c6e77aad059f9481b0bbacb47e6e8ca12bd731/pysqlite-2.8.3.tar.gz";
1416 1416 sha256 = "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp";
1417 1417 };
1418 1418 meta = {
1419 1419 license = [ { fullName = "zlib/libpng License"; } { fullName = "zlib/libpng license"; } ];
1420 1420 };
1421 1421 };
1422 1422 "pytest" = super.buildPythonPackage {
1423 1423 name = "pytest-3.6.0";
1424 1424 doCheck = false;
1425 1425 propagatedBuildInputs = [
1426 1426 self."py"
1427 1427 self."six"
1428 1428 self."setuptools"
1429 1429 self."attrs"
1430 1430 self."more-itertools"
1431 1431 self."atomicwrites"
1432 1432 self."pluggy"
1433 1433 self."funcsigs"
1434 1434 ];
1435 1435 src = fetchurl {
1436 1436 url = "https://files.pythonhosted.org/packages/67/6a/5bcdc22f8dbada1d2910d6e1a3a03f6b14306c78f81122890735b28be4bf/pytest-3.6.0.tar.gz";
1437 1437 sha256 = "0bdfazvjjbxssqzyvkb3m2x2in7xv56ipr899l00s87k7815sm9r";
1438 1438 };
1439 1439 meta = {
1440 1440 license = [ pkgs.lib.licenses.mit ];
1441 1441 };
1442 1442 };
1443 1443 "pytest-cov" = super.buildPythonPackage {
1444 1444 name = "pytest-cov-2.5.1";
1445 1445 doCheck = false;
1446 1446 propagatedBuildInputs = [
1447 1447 self."pytest"
1448 1448 self."coverage"
1449 1449 ];
1450 1450 src = fetchurl {
1451 1451 url = "https://files.pythonhosted.org/packages/24/b4/7290d65b2f3633db51393bdf8ae66309b37620bc3ec116c5e357e3e37238/pytest-cov-2.5.1.tar.gz";
1452 1452 sha256 = "0bbfpwdh9k3636bxc88vz9fa7vf4akchgn513ql1vd0xy4n7bah3";
1453 1453 };
1454 1454 meta = {
1455 1455 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.mit ];
1456 1456 };
1457 1457 };
1458 1458 "pytest-profiling" = super.buildPythonPackage {
1459 1459 name = "pytest-profiling-1.3.0";
1460 1460 doCheck = false;
1461 1461 propagatedBuildInputs = [
1462 1462 self."six"
1463 1463 self."pytest"
1464 1464 self."gprof2dot"
1465 1465 ];
1466 1466 src = fetchurl {
1467 1467 url = "https://files.pythonhosted.org/packages/f5/34/4626126e041a51ef50a80d0619519b18d20aef249aac25b0d0fdd47e57ee/pytest-profiling-1.3.0.tar.gz";
1468 1468 sha256 = "08r5afx5z22yvpmsnl91l4amsy1yxn8qsmm61mhp06mz8zjs51kb";
1469 1469 };
1470 1470 meta = {
1471 1471 license = [ pkgs.lib.licenses.mit ];
1472 1472 };
1473 1473 };
1474 1474 "pytest-runner" = super.buildPythonPackage {
1475 1475 name = "pytest-runner-4.2";
1476 1476 doCheck = false;
1477 1477 src = fetchurl {
1478 1478 url = "https://files.pythonhosted.org/packages/9e/b7/fe6e8f87f9a756fd06722216f1b6698ccba4d269eac6329d9f0c441d0f93/pytest-runner-4.2.tar.gz";
1479 1479 sha256 = "1gkpyphawxz38ni1gdq1fmwyqcg02m7ypzqvv46z06crwdxi2gyj";
1480 1480 };
1481 1481 meta = {
1482 1482 license = [ pkgs.lib.licenses.mit ];
1483 1483 };
1484 1484 };
1485 1485 "pytest-sugar" = super.buildPythonPackage {
1486 1486 name = "pytest-sugar-0.9.1";
1487 1487 doCheck = false;
1488 1488 propagatedBuildInputs = [
1489 1489 self."pytest"
1490 1490 self."termcolor"
1491 1491 ];
1492 1492 src = fetchurl {
1493 1493 url = "https://files.pythonhosted.org/packages/3e/6a/a3f909083079d03bde11d06ab23088886bbe25f2c97fbe4bb865e2bf05bc/pytest-sugar-0.9.1.tar.gz";
1494 1494 sha256 = "0b4av40dv30727m54v211r0nzwjp2ajkjgxix6j484qjmwpw935b";
1495 1495 };
1496 1496 meta = {
1497 1497 license = [ pkgs.lib.licenses.bsdOriginal ];
1498 1498 };
1499 1499 };
1500 1500 "pytest-timeout" = super.buildPythonPackage {
1501 1501 name = "pytest-timeout-1.2.1";
1502 1502 doCheck = false;
1503 1503 propagatedBuildInputs = [
1504 1504 self."pytest"
1505 1505 ];
1506 1506 src = fetchurl {
1507 1507 url = "https://files.pythonhosted.org/packages/be/e9/a9106b8bc87521c6813060f50f7d1fdc15665bc1bbbe71c0ffc1c571aaa2/pytest-timeout-1.2.1.tar.gz";
1508 1508 sha256 = "1kdp6qbh5v1168l99rba5yfzvy05gmzkmkhldgp36p9xcdjd5dv8";
1509 1509 };
1510 1510 meta = {
1511 1511 license = [ pkgs.lib.licenses.mit { fullName = "DFSG approved"; } ];
1512 1512 };
1513 1513 };
1514 1514 "python-dateutil" = super.buildPythonPackage {
1515 1515 name = "python-dateutil-2.7.3";
1516 1516 doCheck = false;
1517 1517 propagatedBuildInputs = [
1518 1518 self."six"
1519 1519 ];
1520 1520 src = fetchurl {
1521 1521 url = "https://files.pythonhosted.org/packages/a0/b0/a4e3241d2dee665fea11baec21389aec6886655cd4db7647ddf96c3fad15/python-dateutil-2.7.3.tar.gz";
1522 1522 sha256 = "1f7h54lg0w2ckch7592xpjkh8dg87k2br256h0iw49zn6bg02w72";
1523 1523 };
1524 1524 meta = {
1525 1525 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.asl20 { fullName = "Dual License"; } ];
1526 1526 };
1527 1527 };
1528 1528 "python-editor" = super.buildPythonPackage {
1529 1529 name = "python-editor-1.0.3";
1530 1530 doCheck = false;
1531 1531 src = fetchurl {
1532 1532 url = "https://files.pythonhosted.org/packages/65/1e/adf6e000ea5dc909aa420352d6ba37f16434c8a3c2fa030445411a1ed545/python-editor-1.0.3.tar.gz";
1533 1533 sha256 = "0rf5xz8vw93v7mhdcvind7fkykipzga430wkcd7wk892xsn6dh53";
1534 1534 };
1535 1535 meta = {
1536 1536 license = [ pkgs.lib.licenses.asl20 { fullName = "Apache"; } ];
1537 1537 };
1538 1538 };
1539 1539 "python-ldap" = super.buildPythonPackage {
1540 1540 name = "python-ldap-3.1.0";
1541 1541 doCheck = false;
1542 1542 propagatedBuildInputs = [
1543 1543 self."pyasn1"
1544 1544 self."pyasn1-modules"
1545 1545 ];
1546 1546 src = fetchurl {
1547 1547 url = "https://files.pythonhosted.org/packages/7f/1c/28d721dff2fcd2fef9d55b40df63a00be26ec8a11e8c6fc612ae642f9cfd/python-ldap-3.1.0.tar.gz";
1548 1548 sha256 = "1i97nwfnraylyn0myxlf3vciicrf5h6fymrcff9c00k581wmx5s1";
1549 1549 };
1550 1550 meta = {
1551 1551 license = [ pkgs.lib.licenses.psfl ];
1552 1552 };
1553 1553 };
1554 1554 "python-memcached" = super.buildPythonPackage {
1555 1555 name = "python-memcached-1.59";
1556 1556 doCheck = false;
1557 1557 propagatedBuildInputs = [
1558 1558 self."six"
1559 1559 ];
1560 1560 src = fetchurl {
1561 1561 url = "https://files.pythonhosted.org/packages/90/59/5faf6e3cd8a568dd4f737ddae4f2e54204fd8c51f90bf8df99aca6c22318/python-memcached-1.59.tar.gz";
1562 1562 sha256 = "0kvyapavbirk2x3n1jx4yb9nyigrj1s3x15nm3qhpvhkpqvqdqm2";
1563 1563 };
1564 1564 meta = {
1565 1565 license = [ pkgs.lib.licenses.psfl ];
1566 1566 };
1567 1567 };
1568 1568 "python-pam" = super.buildPythonPackage {
1569 1569 name = "python-pam-1.8.4";
1570 1570 doCheck = false;
1571 1571 src = fetchurl {
1572 1572 url = "https://files.pythonhosted.org/packages/01/16/544d01cae9f28e0292dbd092b6b8b0bf222b528f362ee768a5bed2140111/python-pam-1.8.4.tar.gz";
1573 1573 sha256 = "16whhc0vr7gxsbzvsnq65nq8fs3wwmx755cavm8kkczdkz4djmn8";
1574 1574 };
1575 1575 meta = {
1576 1576 license = [ { fullName = "License :: OSI Approved :: MIT License"; } pkgs.lib.licenses.mit ];
1577 1577 };
1578 1578 };
1579 1579 "pytz" = super.buildPythonPackage {
1580 1580 name = "pytz-2018.4";
1581 1581 doCheck = false;
1582 1582 src = fetchurl {
1583 1583 url = "https://files.pythonhosted.org/packages/10/76/52efda4ef98e7544321fd8d5d512e11739c1df18b0649551aeccfb1c8376/pytz-2018.4.tar.gz";
1584 1584 sha256 = "0jgpqx3kk2rhv81j1izjxvmx8d0x7hzs1857pgqnixic5wq2ar60";
1585 1585 };
1586 1586 meta = {
1587 1587 license = [ pkgs.lib.licenses.mit ];
1588 1588 };
1589 1589 };
1590 1590 "pyzmq" = super.buildPythonPackage {
1591 1591 name = "pyzmq-14.6.0";
1592 1592 doCheck = false;
1593 1593 src = fetchurl {
1594 1594 url = "https://files.pythonhosted.org/packages/8a/3b/5463d5a9d712cd8bbdac335daece0d69f6a6792da4e3dd89956c0db4e4e6/pyzmq-14.6.0.tar.gz";
1595 1595 sha256 = "1frmbjykvhmdg64g7sn20c9fpamrsfxwci1nhhg8q7jgz5pq0ikp";
1596 1596 };
1597 1597 meta = {
1598 1598 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "LGPL+BSD"; } { fullName = "GNU Library or Lesser General Public License (LGPL)"; } ];
1599 1599 };
1600 1600 };
1601 1601 "redis" = super.buildPythonPackage {
1602 1602 name = "redis-2.10.6";
1603 1603 doCheck = false;
1604 1604 src = fetchurl {
1605 1605 url = "https://files.pythonhosted.org/packages/09/8d/6d34b75326bf96d4139a2ddd8e74b80840f800a0a79f9294399e212cb9a7/redis-2.10.6.tar.gz";
1606 1606 sha256 = "03vcgklykny0g0wpvqmy8p6azi2s078317wgb2xjv5m2rs9sjb52";
1607 1607 };
1608 1608 meta = {
1609 1609 license = [ pkgs.lib.licenses.mit ];
1610 1610 };
1611 1611 };
1612 1612 "repoze.lru" = super.buildPythonPackage {
1613 1613 name = "repoze.lru-0.7";
1614 1614 doCheck = false;
1615 1615 src = fetchurl {
1616 1616 url = "https://files.pythonhosted.org/packages/12/bc/595a77c4b5e204847fdf19268314ef59c85193a9dc9f83630fc459c0fee5/repoze.lru-0.7.tar.gz";
1617 1617 sha256 = "0xzz1aw2smy8hdszrq8yhnklx6w1r1mf55061kalw3iq35gafa84";
1618 1618 };
1619 1619 meta = {
1620 1620 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1621 1621 };
1622 1622 };
1623 1623 "requests" = super.buildPythonPackage {
1624 1624 name = "requests-2.9.1";
1625 1625 doCheck = false;
1626 1626 src = fetchurl {
1627 1627 url = "https://files.pythonhosted.org/packages/f9/6d/07c44fb1ebe04d069459a189e7dab9e4abfe9432adcd4477367c25332748/requests-2.9.1.tar.gz";
1628 1628 sha256 = "0zsqrzlybf25xscgi7ja4s48y2abf9wvjkn47wh984qgs1fq2xy5";
1629 1629 };
1630 1630 meta = {
1631 1631 license = [ pkgs.lib.licenses.asl20 ];
1632 1632 };
1633 1633 };
1634 1634 "rhodecode-enterprise-ce" = super.buildPythonPackage {
1635 1635 name = "rhodecode-enterprise-ce-4.13.0";
1636 1636 buildInputs = [
1637 1637 self."pytest"
1638 1638 self."py"
1639 1639 self."pytest-cov"
1640 1640 self."pytest-sugar"
1641 1641 self."pytest-runner"
1642 1642 self."pytest-profiling"
1643 1643 self."gprof2dot"
1644 1644 self."pytest-timeout"
1645 1645 self."mock"
1646 1646 self."webtest"
1647 1647 self."cov-core"
1648 1648 self."coverage"
1649 1649 self."configobj"
1650 1650 ];
1651 1651 doCheck = true;
1652 1652 propagatedBuildInputs = [
1653 1653 self."setuptools-scm"
1654 1654 self."amqp"
1655 1655 self."authomatic"
1656 self."atomicwrites"
1657 self."attrs"
1656 1658 self."babel"
1657 1659 self."beaker"
1658 1660 self."celery"
1659 1661 self."chameleon"
1660 1662 self."channelstream"
1661 1663 self."click"
1662 1664 self."colander"
1663 1665 self."configobj"
1664 1666 self."cssselect"
1665 1667 self."decorator"
1666 1668 self."deform"
1667 1669 self."docutils"
1668 1670 self."dogpile.cache"
1669 1671 self."dogpile.core"
1670 1672 self."ecdsa"
1671 1673 self."formencode"
1672 1674 self."future"
1673 1675 self."futures"
1674 1676 self."gnureadline"
1675 1677 self."infrae.cache"
1676 1678 self."iso8601"
1677 1679 self."itsdangerous"
1678 1680 self."jinja2"
1679 1681 self."billiard"
1680 1682 self."kombu"
1681 1683 self."lxml"
1682 1684 self."mako"
1683 1685 self."markdown"
1684 1686 self."markupsafe"
1685 1687 self."msgpack-python"
1686 1688 self."mysql-python"
1687 1689 self."pymysql"
1688 1690 self."pyotp"
1689 1691 self."objgraph"
1690 1692 self."packaging"
1691 1693 self."paste"
1692 1694 self."pastedeploy"
1693 1695 self."pastescript"
1694 1696 self."pathlib2"
1695 1697 self."peppercorn"
1696 1698 self."psutil"
1697 1699 self."psycopg2"
1698 1700 self."py-bcrypt"
1699 1701 self."pycrypto"
1700 1702 self."pycurl"
1701 1703 self."pyflakes"
1702 1704 self."pygments-markdown-lexer"
1703 1705 self."pygments"
1704 1706 self."pyparsing"
1705 1707 self."pyramid-beaker"
1706 1708 self."pyramid-debugtoolbar"
1707 1709 self."pyramid-jinja2"
1708 1710 self."pyramid-mako"
1709 1711 self."pyramid"
1710 1712 self."pysqlite"
1711 1713 self."python-dateutil"
1712 1714 self."python-ldap"
1713 1715 self."python-memcached"
1714 1716 self."python-pam"
1715 1717 self."pytz"
1716 1718 self."tzlocal"
1717 1719 self."pyzmq"
1718 1720 self."py-gfm"
1719 1721 self."redis"
1720 1722 self."repoze.lru"
1721 1723 self."requests"
1722 1724 self."routes"
1723 1725 self."setproctitle"
1724 1726 self."simplejson"
1725 1727 self."six"
1726 1728 self."sqlalchemy"
1727 1729 self."sshpubkeys"
1728 1730 self."subprocess32"
1729 1731 self."supervisor"
1730 1732 self."tempita"
1731 1733 self."translationstring"
1732 1734 self."trollius"
1733 1735 self."urllib3"
1734 1736 self."urlobject"
1735 1737 self."venusian"
1736 1738 self."weberror"
1737 1739 self."webhelpers2"
1738 1740 self."webhelpers"
1739 1741 self."webob"
1740 1742 self."whoosh"
1741 1743 self."wsgiref"
1742 1744 self."zope.cachedescriptors"
1743 1745 self."zope.deprecation"
1744 1746 self."zope.event"
1745 1747 self."zope.interface"
1746 1748 self."nbconvert"
1747 1749 self."bleach"
1748 1750 self."nbformat"
1749 1751 self."jupyter-client"
1750 1752 self."alembic"
1751 1753 self."invoke"
1752 1754 self."bumpversion"
1753 1755 self."gevent"
1754 1756 self."greenlet"
1755 1757 self."gunicorn"
1756 1758 self."waitress"
1757 1759 self."ipdb"
1758 1760 self."ipython"
1759 1761 self."cprofilev"
1760 1762 self."bottle"
1761 1763 self."rhodecode-tools"
1762 1764 self."appenlight-client"
1763 1765 self."pytest"
1764 1766 self."py"
1765 1767 self."pytest-cov"
1766 1768 self."pytest-sugar"
1767 1769 self."pytest-runner"
1768 1770 self."pytest-profiling"
1769 1771 self."gprof2dot"
1770 1772 self."pytest-timeout"
1771 1773 self."mock"
1772 1774 self."webtest"
1773 1775 self."cov-core"
1774 1776 self."coverage"
1775 1777 ];
1776 1778 src = ./.;
1777 1779 meta = {
1778 1780 license = [ { fullName = "Affero GNU General Public License v3 or later (AGPLv3+)"; } { fullName = "AGPLv3, and Commercial License"; } ];
1779 1781 };
1780 1782 };
1781 1783 "rhodecode-tools" = super.buildPythonPackage {
1782 1784 name = "rhodecode-tools-0.16.0";
1783 1785 doCheck = false;
1784 1786 propagatedBuildInputs = [
1785 1787 self."click"
1786 1788 self."future"
1787 1789 self."six"
1788 1790 self."mako"
1789 1791 self."markupsafe"
1790 1792 self."requests"
1791 1793 self."elasticsearch"
1792 1794 self."elasticsearch-dsl"
1793 1795 self."urllib3"
1794 1796 self."whoosh"
1795 1797 ];
1796 1798 src = fetchurl {
1797 1799 url = "https://code.rhodecode.com/rhodecode-tools-ce/archive/v0.16.0.tar.gz?md5=87f81286b49156c2ac36f1a1acfa2164";
1798 1800 sha256 = "00xcc2mj99lx9d0ksml0p2xrd00kf5ypwyigg58cc9j9bznx7mzr";
1799 1801 };
1800 1802 meta = {
1801 1803 license = [ { fullName = "AGPLv3 and Proprietary"; } ];
1802 1804 };
1803 1805 };
1804 1806 "routes" = super.buildPythonPackage {
1805 1807 name = "routes-2.4.1";
1806 1808 doCheck = false;
1807 1809 propagatedBuildInputs = [
1808 1810 self."six"
1809 1811 self."repoze.lru"
1810 1812 ];
1811 1813 src = fetchurl {
1812 1814 url = "https://files.pythonhosted.org/packages/33/38/ea827837e68d9c7dde4cff7ec122a93c319f0effc08ce92a17095576603f/Routes-2.4.1.tar.gz";
1813 1815 sha256 = "1zamff3m0kc4vyfniyhxpkkcqv1rrgnmh37ykxv34nna1ws47vi6";
1814 1816 };
1815 1817 meta = {
1816 1818 license = [ pkgs.lib.licenses.mit ];
1817 1819 };
1818 1820 };
1819 1821 "scandir" = super.buildPythonPackage {
1820 1822 name = "scandir-1.9.0";
1821 1823 doCheck = false;
1822 1824 src = fetchurl {
1823 1825 url = "https://files.pythonhosted.org/packages/16/2a/557af1181e6b4e30254d5a6163b18f5053791ca66e251e77ab08887e8fe3/scandir-1.9.0.tar.gz";
1824 1826 sha256 = "0r3hvf1a9jm1rkqgx40gxkmccknkaiqjavs8lccgq9s8khh5x5s4";
1825 1827 };
1826 1828 meta = {
1827 1829 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "New BSD License"; } ];
1828 1830 };
1829 1831 };
1830 1832 "setproctitle" = super.buildPythonPackage {
1831 1833 name = "setproctitle-1.1.10";
1832 1834 doCheck = false;
1833 1835 src = fetchurl {
1834 1836 url = "https://files.pythonhosted.org/packages/5a/0d/dc0d2234aacba6cf1a729964383e3452c52096dc695581248b548786f2b3/setproctitle-1.1.10.tar.gz";
1835 1837 sha256 = "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2";
1836 1838 };
1837 1839 meta = {
1838 1840 license = [ pkgs.lib.licenses.bsdOriginal ];
1839 1841 };
1840 1842 };
1841 1843 "setuptools" = super.buildPythonPackage {
1842 1844 name = "setuptools-40.1.0";
1843 1845 doCheck = false;
1844 1846 src = fetchurl {
1845 1847 url = "https://files.pythonhosted.org/packages/5a/df/b2e3d9693bb0dcbeac516a73dd7a9eb82b126ae52e4a74605a9b01beddd5/setuptools-40.1.0.zip";
1846 1848 sha256 = "0w1blx5ajga5y15dci0mddk49cf2xpq0mp7rp7jrqr2diqk00ib6";
1847 1849 };
1848 1850 meta = {
1849 1851 license = [ pkgs.lib.licenses.mit ];
1850 1852 };
1851 1853 };
1852 1854 "setuptools-scm" = super.buildPythonPackage {
1853 1855 name = "setuptools-scm-2.1.0";
1854 1856 doCheck = false;
1855 1857 src = fetchurl {
1856 1858 url = "https://files.pythonhosted.org/packages/e5/62/f9e1ac314464eb5945c97542acb6bf6f3381dfa5d7a658de7730c36f31a1/setuptools_scm-2.1.0.tar.gz";
1857 1859 sha256 = "0yb364cgk15sfw3x8ln4ssh98z1dj6n8iiz4r2rw1cfsxhgi8rx7";
1858 1860 };
1859 1861 meta = {
1860 1862 license = [ pkgs.lib.licenses.mit ];
1861 1863 };
1862 1864 };
1863 1865 "simplegeneric" = super.buildPythonPackage {
1864 1866 name = "simplegeneric-0.8.1";
1865 1867 doCheck = false;
1866 1868 src = fetchurl {
1867 1869 url = "https://files.pythonhosted.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b/simplegeneric-0.8.1.zip";
1868 1870 sha256 = "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw";
1869 1871 };
1870 1872 meta = {
1871 1873 license = [ pkgs.lib.licenses.zpl21 ];
1872 1874 };
1873 1875 };
1874 1876 "simplejson" = super.buildPythonPackage {
1875 1877 name = "simplejson-3.11.1";
1876 1878 doCheck = false;
1877 1879 src = fetchurl {
1878 1880 url = "https://files.pythonhosted.org/packages/08/48/c97b668d6da7d7bebe7ea1817a6f76394b0ec959cb04214ca833c34359df/simplejson-3.11.1.tar.gz";
1879 1881 sha256 = "1rr58dppsq73p0qcd9bsw066cdd3v63sqv7j6sqni8frvm4jv8h1";
1880 1882 };
1881 1883 meta = {
1882 1884 license = [ { fullName = "Academic Free License (AFL)"; } pkgs.lib.licenses.mit ];
1883 1885 };
1884 1886 };
1885 1887 "six" = super.buildPythonPackage {
1886 1888 name = "six-1.11.0";
1887 1889 doCheck = false;
1888 1890 src = fetchurl {
1889 1891 url = "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
1890 1892 sha256 = "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h";
1891 1893 };
1892 1894 meta = {
1893 1895 license = [ pkgs.lib.licenses.mit ];
1894 1896 };
1895 1897 };
1896 1898 "sqlalchemy" = super.buildPythonPackage {
1897 1899 name = "sqlalchemy-1.1.18";
1898 1900 doCheck = false;
1899 1901 src = fetchurl {
1900 1902 url = "https://files.pythonhosted.org/packages/cc/4d/96d93ff77cd67aca7618e402191eee3490d8f5f245d6ab7622d35fe504f4/SQLAlchemy-1.1.18.tar.gz";
1901 1903 sha256 = "1ab4ysip6irajfbxl9wy27kv76miaz8h6759hfx92499z4dcf3lb";
1902 1904 };
1903 1905 meta = {
1904 1906 license = [ pkgs.lib.licenses.mit ];
1905 1907 };
1906 1908 };
1907 1909 "sshpubkeys" = super.buildPythonPackage {
1908 1910 name = "sshpubkeys-2.2.0";
1909 1911 doCheck = false;
1910 1912 propagatedBuildInputs = [
1911 1913 self."pycrypto"
1912 1914 self."ecdsa"
1913 1915 ];
1914 1916 src = fetchurl {
1915 1917 url = "https://files.pythonhosted.org/packages/27/da/337fabeb3dca6b62039a93ceaa636f25065e0ae92b575b1235342076cf0a/sshpubkeys-2.2.0.tar.gz";
1916 1918 sha256 = "0r4kpwzmg96a2x56pllik7dmc3fnqk189v3sfgsi07q2ryrhr6xm";
1917 1919 };
1918 1920 meta = {
1919 1921 license = [ pkgs.lib.licenses.bsdOriginal ];
1920 1922 };
1921 1923 };
1922 1924 "subprocess32" = super.buildPythonPackage {
1923 1925 name = "subprocess32-3.5.1";
1924 1926 doCheck = false;
1925 1927 src = fetchurl {
1926 1928 url = "https://files.pythonhosted.org/packages/de/fb/fd3e91507021e2aecdb081d1b920082628d6b8869ead845e3e87b3d2e2ca/subprocess32-3.5.1.tar.gz";
1927 1929 sha256 = "0wgi3bfnssid1g6h0v803z3k1wjal6il16nr3r9c587cfzwfkv0q";
1928 1930 };
1929 1931 meta = {
1930 1932 license = [ pkgs.lib.licenses.psfl ];
1931 1933 };
1932 1934 };
1933 1935 "supervisor" = super.buildPythonPackage {
1934 1936 name = "supervisor-3.3.4";
1935 1937 doCheck = false;
1936 1938 propagatedBuildInputs = [
1937 1939 self."meld3"
1938 1940 ];
1939 1941 src = fetchurl {
1940 1942 url = "https://files.pythonhosted.org/packages/44/60/698e54b4a4a9b956b2d709b4b7b676119c833d811d53ee2500f1b5e96dc3/supervisor-3.3.4.tar.gz";
1941 1943 sha256 = "0wp62z9xprvz2krg02xnbwcnq6pxfq3byd8cxx8c2d8xznih28i1";
1942 1944 };
1943 1945 meta = {
1944 1946 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1945 1947 };
1946 1948 };
1947 1949 "tempita" = super.buildPythonPackage {
1948 1950 name = "tempita-0.5.2";
1949 1951 doCheck = false;
1950 1952 src = fetchurl {
1951 1953 url = "https://files.pythonhosted.org/packages/56/c8/8ed6eee83dbddf7b0fc64dd5d4454bc05e6ccaafff47991f73f2894d9ff4/Tempita-0.5.2.tar.gz";
1952 1954 sha256 = "177wwq45slfyajd8csy477bmdmzipyw0dm7i85k3akb7m85wzkna";
1953 1955 };
1954 1956 meta = {
1955 1957 license = [ pkgs.lib.licenses.mit ];
1956 1958 };
1957 1959 };
1958 1960 "termcolor" = super.buildPythonPackage {
1959 1961 name = "termcolor-1.1.0";
1960 1962 doCheck = false;
1961 1963 src = fetchurl {
1962 1964 url = "https://files.pythonhosted.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz";
1963 1965 sha256 = "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x";
1964 1966 };
1965 1967 meta = {
1966 1968 license = [ pkgs.lib.licenses.mit ];
1967 1969 };
1968 1970 };
1969 1971 "testpath" = super.buildPythonPackage {
1970 1972 name = "testpath-0.3.1";
1971 1973 doCheck = false;
1972 1974 src = fetchurl {
1973 1975 url = "https://files.pythonhosted.org/packages/f4/8b/b71e9ee10e5f751e9d959bc750ab122ba04187f5aa52aabdc4e63b0e31a7/testpath-0.3.1.tar.gz";
1974 1976 sha256 = "02bnmkvm6a8a1p5kcygylcd19v2s040qw3zp1n8ab3bqkj1kflqd";
1975 1977 };
1976 1978 meta = {
1977 1979 license = [ ];
1978 1980 };
1979 1981 };
1980 1982 "traitlets" = super.buildPythonPackage {
1981 1983 name = "traitlets-4.3.2";
1982 1984 doCheck = false;
1983 1985 propagatedBuildInputs = [
1984 1986 self."ipython-genutils"
1985 1987 self."six"
1986 1988 self."decorator"
1987 1989 self."enum34"
1988 1990 ];
1989 1991 src = fetchurl {
1990 1992 url = "https://files.pythonhosted.org/packages/a5/98/7f5ef2fe9e9e071813aaf9cb91d1a732e0a68b6c44a32b38cb8e14c3f069/traitlets-4.3.2.tar.gz";
1991 1993 sha256 = "0dbq7sx26xqz5ixs711k5nc88p8a0nqyz6162pwks5dpcz9d4jww";
1992 1994 };
1993 1995 meta = {
1994 1996 license = [ pkgs.lib.licenses.bsdOriginal ];
1995 1997 };
1996 1998 };
1997 1999 "translationstring" = super.buildPythonPackage {
1998 2000 name = "translationstring-1.3";
1999 2001 doCheck = false;
2000 2002 src = fetchurl {
2001 2003 url = "https://files.pythonhosted.org/packages/5e/eb/bee578cc150b44c653b63f5ebe258b5d0d812ddac12497e5f80fcad5d0b4/translationstring-1.3.tar.gz";
2002 2004 sha256 = "0bdpcnd9pv0131dl08h4zbcwmgc45lyvq3pa224xwan5b3x4rr2f";
2003 2005 };
2004 2006 meta = {
2005 2007 license = [ { fullName = "BSD-like (http://repoze.org/license.html)"; } ];
2006 2008 };
2007 2009 };
2008 2010 "trollius" = super.buildPythonPackage {
2009 2011 name = "trollius-1.0.4";
2010 2012 doCheck = false;
2011 2013 propagatedBuildInputs = [
2012 2014 self."futures"
2013 2015 ];
2014 2016 src = fetchurl {
2015 2017 url = "https://files.pythonhosted.org/packages/aa/e6/4141db437f55e6ee7a3fb69663239e3fde7841a811b4bef293145ad6c836/trollius-1.0.4.tar.gz";
2016 2018 sha256 = "0xny8y12x3wrflmyn6xi8a7n3m3ac80fgmgzphx5jbbaxkjcm148";
2017 2019 };
2018 2020 meta = {
2019 2021 license = [ pkgs.lib.licenses.asl20 ];
2020 2022 };
2021 2023 };
2022 2024 "tzlocal" = super.buildPythonPackage {
2023 2025 name = "tzlocal-1.5.1";
2024 2026 doCheck = false;
2025 2027 propagatedBuildInputs = [
2026 2028 self."pytz"
2027 2029 ];
2028 2030 src = fetchurl {
2029 2031 url = "https://files.pythonhosted.org/packages/cb/89/e3687d3ed99bc882793f82634e9824e62499fdfdc4b1ae39e211c5b05017/tzlocal-1.5.1.tar.gz";
2030 2032 sha256 = "0kiciwiqx0bv0fbc913idxibc4ygg4cb7f8rcpd9ij2shi4bigjf";
2031 2033 };
2032 2034 meta = {
2033 2035 license = [ pkgs.lib.licenses.mit ];
2034 2036 };
2035 2037 };
2036 2038 "urllib3" = super.buildPythonPackage {
2037 2039 name = "urllib3-1.21";
2038 2040 doCheck = false;
2039 2041 src = fetchurl {
2040 2042 url = "https://files.pythonhosted.org/packages/34/95/7b28259d0006ed681c424cd71a668363265eac92b67dddd018eb9a22bff8/urllib3-1.21.tar.gz";
2041 2043 sha256 = "0irnj4wvh2y36s4q3l2vas9qr9m766w6w418nb490j3mf8a8zw6h";
2042 2044 };
2043 2045 meta = {
2044 2046 license = [ pkgs.lib.licenses.mit ];
2045 2047 };
2046 2048 };
2047 2049 "urlobject" = super.buildPythonPackage {
2048 2050 name = "urlobject-2.4.3";
2049 2051 doCheck = false;
2050 2052 src = fetchurl {
2051 2053 url = "https://files.pythonhosted.org/packages/e2/b8/1d0a916f4b34c4618846e6da0e4eeaa8fcb4a2f39e006434fe38acb74b34/URLObject-2.4.3.tar.gz";
2052 2054 sha256 = "1ahc8ficzfvr2avln71immfh4ls0zyv6cdaa5xmkdj5rd87f5cj7";
2053 2055 };
2054 2056 meta = {
2055 2057 license = [ pkgs.lib.licenses.publicDomain ];
2056 2058 };
2057 2059 };
2058 2060 "venusian" = super.buildPythonPackage {
2059 2061 name = "venusian-1.1.0";
2060 2062 doCheck = false;
2061 2063 src = fetchurl {
2062 2064 url = "https://files.pythonhosted.org/packages/38/24/b4b470ab9e0a2e2e9b9030c7735828c8934b4c6b45befd1bb713ec2aeb2d/venusian-1.1.0.tar.gz";
2063 2065 sha256 = "0zapz131686qm0gazwy8bh11vr57pr89jbwbl50s528sqy9f80lr";
2064 2066 };
2065 2067 meta = {
2066 2068 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
2067 2069 };
2068 2070 };
2069 2071 "vine" = super.buildPythonPackage {
2070 2072 name = "vine-1.1.4";
2071 2073 doCheck = false;
2072 2074 src = fetchurl {
2073 2075 url = "https://files.pythonhosted.org/packages/32/23/36284986e011f3c130d802c3c66abd8f1aef371eae110ddf80c5ae22e1ff/vine-1.1.4.tar.gz";
2074 2076 sha256 = "0wkskb2hb494v9gixqnf4bl972p4ibcmxdykzpwjlfa5picns4aj";
2075 2077 };
2076 2078 meta = {
2077 2079 license = [ pkgs.lib.licenses.bsdOriginal ];
2078 2080 };
2079 2081 };
2080 2082 "waitress" = super.buildPythonPackage {
2081 2083 name = "waitress-1.1.0";
2082 2084 doCheck = false;
2083 2085 src = fetchurl {
2084 2086 url = "https://files.pythonhosted.org/packages/3c/68/1c10dd5c556872ceebe88483b0436140048d39de83a84a06a8baa8136f4f/waitress-1.1.0.tar.gz";
2085 2087 sha256 = "1a85gyji0kajc3p0s1pwwfm06w4wfxjkvvl4rnrz3h164kbd6g6k";
2086 2088 };
2087 2089 meta = {
2088 2090 license = [ pkgs.lib.licenses.zpl21 ];
2089 2091 };
2090 2092 };
2091 2093 "wcwidth" = super.buildPythonPackage {
2092 2094 name = "wcwidth-0.1.7";
2093 2095 doCheck = false;
2094 2096 src = fetchurl {
2095 2097 url = "https://files.pythonhosted.org/packages/55/11/e4a2bb08bb450fdbd42cc709dd40de4ed2c472cf0ccb9e64af22279c5495/wcwidth-0.1.7.tar.gz";
2096 2098 sha256 = "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx";
2097 2099 };
2098 2100 meta = {
2099 2101 license = [ pkgs.lib.licenses.mit ];
2100 2102 };
2101 2103 };
2102 2104 "webencodings" = super.buildPythonPackage {
2103 2105 name = "webencodings-0.5.1";
2104 2106 doCheck = false;
2105 2107 src = fetchurl {
2106 2108 url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz";
2107 2109 sha256 = "08qrgrc4hrximb2gqnl69g01s93rhf2842jfxdjljc1dbwj1qsmk";
2108 2110 };
2109 2111 meta = {
2110 2112 license = [ pkgs.lib.licenses.bsdOriginal ];
2111 2113 };
2112 2114 };
2113 2115 "weberror" = super.buildPythonPackage {
2114 2116 name = "weberror-0.10.3";
2115 2117 doCheck = false;
2116 2118 propagatedBuildInputs = [
2117 2119 self."webob"
2118 2120 self."tempita"
2119 2121 self."pygments"
2120 2122 self."paste"
2121 2123 ];
2122 2124 src = fetchurl {
2123 2125 url = "https://files.pythonhosted.org/packages/35/76/e7e5c2ce7e9c7f31b54c1ff295a495886d1279a002557d74dd8957346a79/WebError-0.10.3.tar.gz";
2124 2126 sha256 = "0frg4kvycqpj5bi8asfqfs6bxsr2cvjvb6b56c4d1ai1z57kbjx6";
2125 2127 };
2126 2128 meta = {
2127 2129 license = [ pkgs.lib.licenses.mit ];
2128 2130 };
2129 2131 };
2130 2132 "webhelpers" = super.buildPythonPackage {
2131 2133 name = "webhelpers-1.3";
2132 2134 doCheck = false;
2133 2135 propagatedBuildInputs = [
2134 2136 self."markupsafe"
2135 2137 ];
2136 2138 src = fetchurl {
2137 2139 url = "https://files.pythonhosted.org/packages/ee/68/4d07672821d514184357f1552f2dad923324f597e722de3b016ca4f7844f/WebHelpers-1.3.tar.gz";
2138 2140 sha256 = "10x5i82qdkrvyw18gsybwggfhfpl869siaab89vnndi9x62g51pa";
2139 2141 };
2140 2142 meta = {
2141 2143 license = [ pkgs.lib.licenses.bsdOriginal ];
2142 2144 };
2143 2145 };
2144 2146 "webhelpers2" = super.buildPythonPackage {
2145 2147 name = "webhelpers2-2.0";
2146 2148 doCheck = false;
2147 2149 propagatedBuildInputs = [
2148 2150 self."markupsafe"
2149 2151 self."six"
2150 2152 ];
2151 2153 src = fetchurl {
2152 2154 url = "https://files.pythonhosted.org/packages/ff/30/56342c6ea522439e3662427c8d7b5e5b390dff4ff2dc92d8afcb8ab68b75/WebHelpers2-2.0.tar.gz";
2153 2155 sha256 = "0aphva1qmxh83n01p53f5fd43m4srzbnfbz5ajvbx9aj2aipwmcs";
2154 2156 };
2155 2157 meta = {
2156 2158 license = [ pkgs.lib.licenses.mit ];
2157 2159 };
2158 2160 };
2159 2161 "webob" = super.buildPythonPackage {
2160 2162 name = "webob-1.7.4";
2161 2163 doCheck = false;
2162 2164 src = fetchurl {
2163 2165 url = "https://files.pythonhosted.org/packages/75/34/731e23f52371852dfe7490a61644826ba7fe70fd52a377aaca0f4956ba7f/WebOb-1.7.4.tar.gz";
2164 2166 sha256 = "1na01ljg04z40il7vcrn8g29vaw7nvg1xvhk64cr4jys5wcay44d";
2165 2167 };
2166 2168 meta = {
2167 2169 license = [ pkgs.lib.licenses.mit ];
2168 2170 };
2169 2171 };
2170 2172 "webtest" = super.buildPythonPackage {
2171 2173 name = "webtest-2.0.29";
2172 2174 doCheck = false;
2173 2175 propagatedBuildInputs = [
2174 2176 self."six"
2175 2177 self."webob"
2176 2178 self."waitress"
2177 2179 self."beautifulsoup4"
2178 2180 ];
2179 2181 src = fetchurl {
2180 2182 url = "https://files.pythonhosted.org/packages/94/de/8f94738be649997da99c47b104aa3c3984ecec51a1d8153ed09638253d56/WebTest-2.0.29.tar.gz";
2181 2183 sha256 = "0bcj1ica5lnmj5zbvk46x28kgphcsgh7sfnwjmn0cr94mhawrg6v";
2182 2184 };
2183 2185 meta = {
2184 2186 license = [ pkgs.lib.licenses.mit ];
2185 2187 };
2186 2188 };
2187 2189 "whoosh" = super.buildPythonPackage {
2188 2190 name = "whoosh-2.7.4";
2189 2191 doCheck = false;
2190 2192 src = fetchurl {
2191 2193 url = "https://files.pythonhosted.org/packages/25/2b/6beed2107b148edc1321da0d489afc4617b9ed317ef7b72d4993cad9b684/Whoosh-2.7.4.tar.gz";
2192 2194 sha256 = "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw";
2193 2195 };
2194 2196 meta = {
2195 2197 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.bsd2 ];
2196 2198 };
2197 2199 };
2198 2200 "ws4py" = super.buildPythonPackage {
2199 2201 name = "ws4py-0.5.1";
2200 2202 doCheck = false;
2201 2203 src = fetchurl {
2202 2204 url = "https://files.pythonhosted.org/packages/53/20/4019a739b2eefe9282d3822ef6a225250af964b117356971bd55e274193c/ws4py-0.5.1.tar.gz";
2203 2205 sha256 = "10slbbf2jm4hpr92jx7kh7mhf48sjl01v2w4d8z3f1p0ybbp7l19";
2204 2206 };
2205 2207 meta = {
2206 2208 license = [ pkgs.lib.licenses.bsdOriginal ];
2207 2209 };
2208 2210 };
2209 2211 "wsgiref" = super.buildPythonPackage {
2210 2212 name = "wsgiref-0.1.2";
2211 2213 doCheck = false;
2212 2214 src = fetchurl {
2213 2215 url = "https://files.pythonhosted.org/packages/41/9e/309259ce8dff8c596e8c26df86dbc4e848b9249fd36797fd60be456f03fc/wsgiref-0.1.2.zip";
2214 2216 sha256 = "0y8fyjmpq7vwwm4x732w97qbkw78rjwal5409k04cw4m03411rn7";
2215 2217 };
2216 2218 meta = {
2217 2219 license = [ { fullName = "PSF or ZPL"; } ];
2218 2220 };
2219 2221 };
2220 2222 "zope.cachedescriptors" = super.buildPythonPackage {
2221 2223 name = "zope.cachedescriptors-4.3.1";
2222 2224 doCheck = false;
2223 2225 propagatedBuildInputs = [
2224 2226 self."setuptools"
2225 2227 ];
2226 2228 src = fetchurl {
2227 2229 url = "https://files.pythonhosted.org/packages/2f/89/ebe1890cc6d3291ebc935558fa764d5fffe571018dbbee200e9db78762cb/zope.cachedescriptors-4.3.1.tar.gz";
2228 2230 sha256 = "0jhr3m5p74c6r7k8iv0005b8bfsialih9d7zl5vx38rf5xq1lk8z";
2229 2231 };
2230 2232 meta = {
2231 2233 license = [ pkgs.lib.licenses.zpl21 ];
2232 2234 };
2233 2235 };
2234 2236 "zope.deprecation" = super.buildPythonPackage {
2235 2237 name = "zope.deprecation-4.3.0";
2236 2238 doCheck = false;
2237 2239 propagatedBuildInputs = [
2238 2240 self."setuptools"
2239 2241 ];
2240 2242 src = fetchurl {
2241 2243 url = "https://files.pythonhosted.org/packages/a1/18/2dc5e6bfe64fdc3b79411b67464c55bb0b43b127051a20f7f492ab767758/zope.deprecation-4.3.0.tar.gz";
2242 2244 sha256 = "095jas41wbxgmw95kwdxqhbc3bgihw2hzj9b3qpdg85apcsf2lkx";
2243 2245 };
2244 2246 meta = {
2245 2247 license = [ pkgs.lib.licenses.zpl21 ];
2246 2248 };
2247 2249 };
2248 2250 "zope.event" = super.buildPythonPackage {
2249 2251 name = "zope.event-4.3.0";
2250 2252 doCheck = false;
2251 2253 propagatedBuildInputs = [
2252 2254 self."setuptools"
2253 2255 ];
2254 2256 src = fetchurl {
2255 2257 url = "https://files.pythonhosted.org/packages/9e/d0/54ba59f19a0635f6591b74be259cf6fbf67e73f4edda27b5cd0cf4d26efa/zope.event-4.3.0.tar.gz";
2256 2258 sha256 = "1rrkyx42bcq8dkpj23c2v99kczlrg8d39c06q5qpr0vs4hjfmv70";
2257 2259 };
2258 2260 meta = {
2259 2261 license = [ pkgs.lib.licenses.zpl21 ];
2260 2262 };
2261 2263 };
2262 2264 "zope.interface" = super.buildPythonPackage {
2263 2265 name = "zope.interface-4.5.0";
2264 2266 doCheck = false;
2265 2267 propagatedBuildInputs = [
2266 2268 self."setuptools"
2267 2269 ];
2268 2270 src = fetchurl {
2269 2271 url = "https://files.pythonhosted.org/packages/ac/8a/657532df378c2cd2a1fe6b12be3b4097521570769d4852ec02c24bd3594e/zope.interface-4.5.0.tar.gz";
2270 2272 sha256 = "0k67m60ij06wkg82n15qgyn96waf4pmrkhv0njpkfzpmv5q89hsp";
2271 2273 };
2272 2274 meta = {
2273 2275 license = [ pkgs.lib.licenses.zpl21 ];
2274 2276 };
2275 2277 };
2276 2278
2277 2279 ### Test requirements
2278 2280
2279 2281
2280 2282 }
@@ -1,132 +1,134 b''
1 1 ## dependencies
2 2
3 3 setuptools-scm==2.1.0
4 4 amqp==2.3.1
5 5 # not released authomatic that has updated some oauth providers
6 6 https://code.rhodecode.com/upstream/authomatic/archive/90a9ce60cc405ae8a2bf5c3713acd5d78579a04e.tar.gz?md5=3c68720a1322b25254009518d1ff6801#egg=authomatic==0.1.0.post1
7 atomicwrites==1.1.5
8 attrs==18.1.0
7 9 babel==1.3
8 10 beaker==1.9.1
9 11 celery==4.1.1
10 12 chameleon==2.24
11 13 channelstream==0.5.2
12 14 click==6.6
13 15 colander==1.4.0
14 16 # our custom configobj
15 17 https://code.rhodecode.com/upstream/configobj/archive/a11ff0a0bd4fbda9e3a91267e720f88329efb4a6.tar.gz?md5=9916c524ea11a6c418217af6b28d4b3c#egg=configobj==5.0.6
16 18 cssselect==1.0.3
17 19 decorator==4.1.2
18 20 deform==2.0.5
19 21 docutils==0.14.0
20 22 dogpile.cache==0.6.6
21 23 dogpile.core==0.4.1
22 24 ecdsa==0.13
23 25 formencode==1.2.4
24 26 future==0.14.3
25 27 futures==3.0.2
26 28 gnureadline==6.3.8
27 29 infrae.cache==1.0.1
28 30 iso8601==0.1.11
29 31 itsdangerous==0.24
30 32 jinja2==2.9.6
31 33 billiard==3.5.0.3
32 34 kombu==4.2.0
33 35 lxml==3.7.3
34 36 mako==1.0.7
35 37 markdown==2.6.11
36 38 markupsafe==1.0.0
37 39 msgpack-python==0.5.6
38 40 mysql-python==1.2.5
39 41 pymysql==0.8.1
40 42 pyotp==2.2.6
41 43 objgraph==3.1.1
42 44 packaging==15.2
43 45 paste==2.0.3
44 46 pastedeploy==1.5.2
45 47 pastescript==2.0.2
46 48 pathlib2==2.3.0
47 49 peppercorn==0.5
48 50 psutil==5.4.6
49 51 psycopg2==2.7.4
50 52 py-bcrypt==0.4
51 53 pycrypto==2.6.1
52 54 pycurl==7.43.0.2
53 55 pyflakes==0.8.1
54 56 pygments-markdown-lexer==0.1.0.dev39
55 57 pygments==2.2.0
56 58 pyparsing==1.5.7
57 59 pyramid-beaker==0.8
58 60 pyramid-debugtoolbar==4.4.0
59 61 pyramid-jinja2==2.7
60 62 pyramid-mako==1.0.2
61 63 pyramid==1.9.2
62 64 pysqlite==2.8.3
63 65 python-dateutil
64 66 python-ldap==3.1.0
65 67 python-memcached==1.59
66 68 python-pam==1.8.4
67 69 pytz==2018.4
68 70 tzlocal==1.5.1
69 71 pyzmq==14.6.0
70 72 py-gfm==0.1.3
71 73 redis==2.10.6
72 74 repoze.lru==0.7
73 75 requests==2.9.1
74 76 routes==2.4.1
75 77 setproctitle==1.1.10
76 78 simplejson==3.11.1
77 79 six==1.11.0
78 80 sqlalchemy==1.1.18
79 81 sshpubkeys==2.2.0
80 82 subprocess32==3.5.1
81 83 supervisor==3.3.4
82 84 tempita==0.5.2
83 85 translationstring==1.3
84 86 trollius==1.0.4
85 87 urllib3==1.21
86 88 urlobject==2.4.3
87 89 venusian==1.1.0
88 90 weberror==0.10.3
89 91 webhelpers2==2.0
90 92 webhelpers==1.3
91 93 webob==1.7.4
92 94 whoosh==2.7.4
93 95 wsgiref==0.1.2
94 96 zope.cachedescriptors==4.3.1
95 97 zope.deprecation==4.3.0
96 98 zope.event==4.3.0
97 99 zope.interface==4.5.0
98 100
99 101
100 102 # IPYTHON RENDERING
101 103 # entrypoints backport, pypi version doesn't support egg installs
102 104 https://code.rhodecode.com/upstream/entrypoints/archive/96e6d645684e1af3d7df5b5272f3fe85a546b233.tar.gz?md5=7db37771aea9ac9fefe093e5d6987313#egg=entrypoints==0.2.2.rhodecode-upstream1
103 105 nbconvert==5.3.1
104 106 bleach==2.1.4
105 107 nbformat==4.4.0
106 108 jupyter_client==5.0.0
107 109
108 110 ## cli tools
109 111 alembic==0.9.9
110 112 invoke==0.13.0
111 113 bumpversion==0.5.3
112 114
113 115 ## http servers
114 116 gevent==1.3.5
115 117 greenlet==0.4.13
116 118 gunicorn==19.9.0
117 119 waitress==1.1.0
118 120
119 121 ## debug
120 122 ipdb==0.11.0
121 123 ipython==5.1.0
122 124 cprofilev==1.0.7
123 125 bottle==0.12.13
124 126
125 127 ## rhodecode-tools, special case
126 128 https://code.rhodecode.com/rhodecode-tools-ce/archive/v0.16.0.tar.gz?md5=87f81286b49156c2ac36f1a1acfa2164#egg=rhodecode-tools==0.16.0
127 129
128 130 ## appenlight
129 131 appenlight-client==0.6.25
130 132
131 133 ## test related requirements
132 134 -r requirements_test.txt
@@ -1,64 +1,62 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2011-2018 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 import logging
22 22
23 23 from pyramid.view import view_config
24 24
25 25 from rhodecode.apps._base import RepoAppView
26 26 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
27 27 from rhodecode.lib import repo_maintenance
28 28
29 29 log = logging.getLogger(__name__)
30 30
31 31
32 32 class RepoMaintenanceView(RepoAppView):
33 33 def load_default_context(self):
34 34 c = self._get_local_tmpl_context()
35
36
37 35 return c
38 36
39 37 @LoginRequired()
40 38 @HasRepoPermissionAnyDecorator('repository.admin')
41 39 @view_config(
42 40 route_name='edit_repo_maintenance', request_method='GET',
43 41 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
44 42 def repo_maintenance(self):
45 43 c = self.load_default_context()
46 44 c.active = 'maintenance'
47 45 maintenance = repo_maintenance.RepoMaintenance()
48 46 c.executable_tasks = maintenance.get_tasks_for_repo(self.db_repo)
49 47 return self._get_template_context(c)
50 48
51 49 @LoginRequired()
52 50 @HasRepoPermissionAnyDecorator('repository.admin')
53 51 @view_config(
54 52 route_name='edit_repo_maintenance_execute', request_method='GET',
55 53 renderer='json', xhr=True)
56 54 def repo_maintenance_execute(self):
57 55 c = self.load_default_context()
58 56 c.active = 'maintenance'
59 57 _ = self.request.translate
60 58
61 59 maintenance = repo_maintenance.RepoMaintenance()
62 60 executed_types = maintenance.execute(self.db_repo)
63 61
64 62 return executed_types
@@ -1,556 +1,575 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2010-2018 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 import os
22 22 import sys
23 23 import logging
24 24 import collections
25 25 import tempfile
26 26
27 27 from paste.gzipper import make_gzip_middleware
28 28 import pyramid.events
29 29 from pyramid.wsgi import wsgiapp
30 30 from pyramid.authorization import ACLAuthorizationPolicy
31 31 from pyramid.config import Configurator
32 32 from pyramid.settings import asbool, aslist
33 33 from pyramid.httpexceptions import (
34 34 HTTPException, HTTPError, HTTPInternalServerError, HTTPFound, HTTPNotFound)
35 35 from pyramid.renderers import render_to_response
36 36
37 37 from rhodecode.model import meta
38 38 from rhodecode.config import patches
39 39 from rhodecode.config import utils as config_utils
40 40 from rhodecode.config.environment import load_pyramid_environment
41 41
42 42 import rhodecode.events
43 43 from rhodecode.lib.middleware.vcs import VCSMiddleware
44 44 from rhodecode.lib.request import Request
45 45 from rhodecode.lib.vcs import VCSCommunicationError
46 46 from rhodecode.lib.exceptions import VCSServerUnavailable
47 47 from rhodecode.lib.middleware.appenlight import wrap_in_appenlight_if_enabled
48 48 from rhodecode.lib.middleware.https_fixup import HttpsFixup
49 49 from rhodecode.lib.celerylib.loader import configure_celery
50 50 from rhodecode.lib.plugins.utils import register_rhodecode_plugin
51 51 from rhodecode.lib.utils2 import aslist as rhodecode_aslist, AttributeDict
52 52 from rhodecode.lib.exc_tracking import store_exception
53 53 from rhodecode.subscribers import (
54 54 scan_repositories_if_enabled, write_js_routes_if_enabled,
55 55 write_metadata_if_needed, inject_app_settings)
56 56
57 57
58 58 log = logging.getLogger(__name__)
59 59
60 60
61 61 def is_http_error(response):
62 62 # error which should have traceback
63 63 return response.status_code > 499
64 64
65 65
66 66 def make_pyramid_app(global_config, **settings):
67 67 """
68 68 Constructs the WSGI application based on Pyramid.
69 69
70 70 Specials:
71 71
72 72 * The application can also be integrated like a plugin via the call to
73 73 `includeme`. This is accompanied with the other utility functions which
74 74 are called. Changing this should be done with great care to not break
75 75 cases when these fragments are assembled from another place.
76 76
77 77 """
78 78
79 79 # Allows to use format style "{ENV_NAME}" placeholders in the configuration. It
80 80 # will be replaced by the value of the environment variable "NAME" in this case.
81 81 environ = {
82 82 'ENV_{}'.format(key): value for key, value in os.environ.items()}
83 83
84 84 global_config = _substitute_values(global_config, environ)
85 85 settings = _substitute_values(settings, environ)
86 86
87 87 sanitize_settings_and_apply_defaults(settings)
88 88
89 89 config = Configurator(settings=settings)
90 90
91 91 # Apply compatibility patches
92 92 patches.inspect_getargspec()
93 93
94 94 load_pyramid_environment(global_config, settings)
95 95
96 96 # Static file view comes first
97 97 includeme_first(config)
98 98
99 99 includeme(config)
100 100
101 101 pyramid_app = config.make_wsgi_app()
102 102 pyramid_app = wrap_app_in_wsgi_middlewares(pyramid_app, config)
103 103 pyramid_app.config = config
104 104
105 105 config.configure_celery(global_config['__file__'])
106 106 # creating the app uses a connection - return it after we are done
107 107 meta.Session.remove()
108 108
109 109 log.info('Pyramid app %s created and configured.', pyramid_app)
110 110 return pyramid_app
111 111
112 112
113 113 def not_found_view(request):
114 114 """
115 115 This creates the view which should be registered as not-found-view to
116 116 pyramid.
117 117 """
118 118
119 119 if not getattr(request, 'vcs_call', None):
120 120 # handle like regular case with our error_handler
121 121 return error_handler(HTTPNotFound(), request)
122 122
123 123 # handle not found view as a vcs call
124 124 settings = request.registry.settings
125 125 ae_client = getattr(request, 'ae_client', None)
126 126 vcs_app = VCSMiddleware(
127 127 HTTPNotFound(), request.registry, settings,
128 128 appenlight_client=ae_client)
129 129
130 130 return wsgiapp(vcs_app)(None, request)
131 131
132 132
133 133 def error_handler(exception, request):
134 134 import rhodecode
135 135 from rhodecode.lib import helpers
136 136
137 137 rhodecode_title = rhodecode.CONFIG.get('rhodecode_title') or 'RhodeCode'
138 138
139 139 base_response = HTTPInternalServerError()
140 140 # prefer original exception for the response since it may have headers set
141 141 if isinstance(exception, HTTPException):
142 142 base_response = exception
143 143 elif isinstance(exception, VCSCommunicationError):
144 144 base_response = VCSServerUnavailable()
145 145
146 146 if is_http_error(base_response):
147 147 log.exception(
148 148 'error occurred handling this request for path: %s', request.path)
149 149
150 150 error_explanation = base_response.explanation or str(base_response)
151 151 if base_response.status_code == 404:
152 152 error_explanation += " Or you don't have permission to access it."
153 153 c = AttributeDict()
154 154 c.error_message = base_response.status
155 155 c.error_explanation = error_explanation
156 156 c.visual = AttributeDict()
157 157
158 158 c.visual.rhodecode_support_url = (
159 159 request.registry.settings.get('rhodecode_support_url') or
160 160 request.route_url('rhodecode_support')
161 161 )
162 162 c.redirect_time = 0
163 163 c.rhodecode_name = rhodecode_title
164 164 if not c.rhodecode_name:
165 165 c.rhodecode_name = 'Rhodecode'
166 166
167 167 c.causes = []
168 168 if is_http_error(base_response):
169 169 c.causes.append('Server is overloaded.')
170 170 c.causes.append('Server database connection is lost.')
171 171 c.causes.append('Server expected unhandled error.')
172 172
173 173 if hasattr(base_response, 'causes'):
174 174 c.causes = base_response.causes
175 175
176 176 c.messages = helpers.flash.pop_messages(request=request)
177 177
178 178 exc_info = sys.exc_info()
179 179 c.exception_id = id(exc_info)
180 180 c.show_exception_id = isinstance(base_response, VCSServerUnavailable) \
181 181 or base_response.status_code > 499
182 182 c.exception_id_url = request.route_url(
183 183 'admin_settings_exception_tracker_show', exception_id=c.exception_id)
184 184
185 185 if c.show_exception_id:
186 186 store_exception(c.exception_id, exc_info)
187 187
188 188 response = render_to_response(
189 189 '/errors/error_document.mako', {'c': c, 'h': helpers}, request=request,
190 190 response=base_response)
191 191
192 192 return response
193 193
194 194
195 195 def includeme_first(config):
196 196 # redirect automatic browser favicon.ico requests to correct place
197 197 def favicon_redirect(context, request):
198 198 return HTTPFound(
199 199 request.static_path('rhodecode:public/images/favicon.ico'))
200 200
201 201 config.add_view(favicon_redirect, route_name='favicon')
202 202 config.add_route('favicon', '/favicon.ico')
203 203
204 204 def robots_redirect(context, request):
205 205 return HTTPFound(
206 206 request.static_path('rhodecode:public/robots.txt'))
207 207
208 208 config.add_view(robots_redirect, route_name='robots')
209 209 config.add_route('robots', '/robots.txt')
210 210
211 211 config.add_static_view(
212 212 '_static/deform', 'deform:static')
213 213 config.add_static_view(
214 214 '_static/rhodecode', path='rhodecode:public', cache_max_age=3600 * 24)
215 215
216 216
217 217 def includeme(config):
218 218 settings = config.registry.settings
219 219 config.set_request_factory(Request)
220 220
221 221 # plugin information
222 222 config.registry.rhodecode_plugins = collections.OrderedDict()
223 223
224 224 config.add_directive(
225 225 'register_rhodecode_plugin', register_rhodecode_plugin)
226 226
227 227 config.add_directive('configure_celery', configure_celery)
228 228
229 229 if asbool(settings.get('appenlight', 'false')):
230 230 config.include('appenlight_client.ext.pyramid_tween')
231 231
232 232 # Includes which are required. The application would fail without them.
233 233 config.include('pyramid_mako')
234 234 config.include('pyramid_beaker')
235 235 config.include('rhodecode.lib.rc_cache')
236 236
237 237 config.include('rhodecode.authentication')
238 238 config.include('rhodecode.integrations')
239 239
240 240 # apps
241 241 config.include('rhodecode.apps._base')
242 242 config.include('rhodecode.apps.ops')
243 243
244 244 config.include('rhodecode.apps.admin')
245 245 config.include('rhodecode.apps.channelstream')
246 246 config.include('rhodecode.apps.login')
247 247 config.include('rhodecode.apps.home')
248 248 config.include('rhodecode.apps.journal')
249 249 config.include('rhodecode.apps.repository')
250 250 config.include('rhodecode.apps.repo_group')
251 251 config.include('rhodecode.apps.user_group')
252 252 config.include('rhodecode.apps.search')
253 253 config.include('rhodecode.apps.user_profile')
254 254 config.include('rhodecode.apps.user_group_profile')
255 255 config.include('rhodecode.apps.my_account')
256 256 config.include('rhodecode.apps.svn_support')
257 257 config.include('rhodecode.apps.ssh_support')
258 258 config.include('rhodecode.apps.gist')
259 259
260 260 config.include('rhodecode.apps.debug_style')
261 261 config.include('rhodecode.tweens')
262 262 config.include('rhodecode.api')
263 263
264 264 config.add_route(
265 265 'rhodecode_support', 'https://rhodecode.com/help/', static=True)
266 266
267 267 config.add_translation_dirs('rhodecode:i18n/')
268 268 settings['default_locale_name'] = settings.get('lang', 'en')
269 269
270 270 # Add subscribers.
271 271 config.add_subscriber(inject_app_settings,
272 272 pyramid.events.ApplicationCreated)
273 273 config.add_subscriber(scan_repositories_if_enabled,
274 274 pyramid.events.ApplicationCreated)
275 275 config.add_subscriber(write_metadata_if_needed,
276 276 pyramid.events.ApplicationCreated)
277 277 config.add_subscriber(write_js_routes_if_enabled,
278 278 pyramid.events.ApplicationCreated)
279 279
280 280 # request custom methods
281 281 config.add_request_method(
282 282 'rhodecode.lib.partial_renderer.get_partial_renderer',
283 283 'get_partial_renderer')
284 284
285 285 # Set the authorization policy.
286 286 authz_policy = ACLAuthorizationPolicy()
287 287 config.set_authorization_policy(authz_policy)
288 288
289 289 # Set the default renderer for HTML templates to mako.
290 290 config.add_mako_renderer('.html')
291 291
292 292 config.add_renderer(
293 293 name='json_ext',
294 294 factory='rhodecode.lib.ext_json_renderer.pyramid_ext_json')
295 295
296 296 # include RhodeCode plugins
297 297 includes = aslist(settings.get('rhodecode.includes', []))
298 298 for inc in includes:
299 299 config.include(inc)
300 300
301 301 # custom not found view, if our pyramid app doesn't know how to handle
302 302 # the request pass it to potential VCS handling ap
303 303 config.add_notfound_view(not_found_view)
304 304 if not settings.get('debugtoolbar.enabled', False):
305 305 # disabled debugtoolbar handle all exceptions via the error_handlers
306 306 config.add_view(error_handler, context=Exception)
307 307
308 308 # all errors including 403/404/50X
309 309 config.add_view(error_handler, context=HTTPError)
310 310
311 311
312 312 def wrap_app_in_wsgi_middlewares(pyramid_app, config):
313 313 """
314 314 Apply outer WSGI middlewares around the application.
315 315 """
316 316 registry = config.registry
317 317 settings = registry.settings
318 318
319 319 # enable https redirects based on HTTP_X_URL_SCHEME set by proxy
320 320 pyramid_app = HttpsFixup(pyramid_app, settings)
321 321
322 322 pyramid_app, _ae_client = wrap_in_appenlight_if_enabled(
323 323 pyramid_app, settings)
324 324 registry.ae_client = _ae_client
325 325
326 326 if settings['gzip_responses']:
327 327 pyramid_app = make_gzip_middleware(
328 328 pyramid_app, settings, compress_level=1)
329 329
330 330 # this should be the outer most middleware in the wsgi stack since
331 331 # middleware like Routes make database calls
332 332 def pyramid_app_with_cleanup(environ, start_response):
333 333 try:
334 334 return pyramid_app(environ, start_response)
335 335 finally:
336 336 # Dispose current database session and rollback uncommitted
337 337 # transactions.
338 338 meta.Session.remove()
339 339
340 340 # In a single threaded mode server, on non sqlite db we should have
341 341 # '0 Current Checked out connections' at the end of a request,
342 342 # if not, then something, somewhere is leaving a connection open
343 343 pool = meta.Base.metadata.bind.engine.pool
344 344 log.debug('sa pool status: %s', pool.status())
345 345 log.debug('Request processing finalized')
346 346
347 347 return pyramid_app_with_cleanup
348 348
349 349
350 350 def sanitize_settings_and_apply_defaults(settings):
351 351 """
352 352 Applies settings defaults and does all type conversion.
353 353
354 354 We would move all settings parsing and preparation into this place, so that
355 355 we have only one place left which deals with this part. The remaining parts
356 356 of the application would start to rely fully on well prepared settings.
357 357
358 358 This piece would later be split up per topic to avoid a big fat monster
359 359 function.
360 360 """
361 361
362 362 settings.setdefault('rhodecode.edition', 'Community Edition')
363 363
364 364 if 'mako.default_filters' not in settings:
365 365 # set custom default filters if we don't have it defined
366 366 settings['mako.imports'] = 'from rhodecode.lib.base import h_filter'
367 367 settings['mako.default_filters'] = 'h_filter'
368 368
369 369 if 'mako.directories' not in settings:
370 370 mako_directories = settings.setdefault('mako.directories', [
371 371 # Base templates of the original application
372 372 'rhodecode:templates',
373 373 ])
374 374 log.debug(
375 375 "Using the following Mako template directories: %s",
376 376 mako_directories)
377 377
378 378 # Default includes, possible to change as a user
379 379 pyramid_includes = settings.setdefault('pyramid.includes', [
380 380 'rhodecode.lib.middleware.request_wrapper',
381 381 ])
382 382 log.debug(
383 383 "Using the following pyramid.includes: %s",
384 384 pyramid_includes)
385 385
386 386 # TODO: johbo: Re-think this, usually the call to config.include
387 387 # should allow to pass in a prefix.
388 388 settings.setdefault('rhodecode.api.url', '/_admin/api')
389 389
390 390 # Sanitize generic settings.
391 391 _list_setting(settings, 'default_encoding', 'UTF-8')
392 392 _bool_setting(settings, 'is_test', 'false')
393 393 _bool_setting(settings, 'gzip_responses', 'false')
394 394
395 395 # Call split out functions that sanitize settings for each topic.
396 396 _sanitize_appenlight_settings(settings)
397 397 _sanitize_vcs_settings(settings)
398 398 _sanitize_cache_settings(settings)
399 399
400 400 # configure instance id
401 401 config_utils.set_instance_id(settings)
402 402
403 403 return settings
404 404
405 405
406 406 def _sanitize_appenlight_settings(settings):
407 407 _bool_setting(settings, 'appenlight', 'false')
408 408
409 409
410 410 def _sanitize_vcs_settings(settings):
411 411 """
412 412 Applies settings defaults and does type conversion for all VCS related
413 413 settings.
414 414 """
415 415 _string_setting(settings, 'vcs.svn.compatible_version', '')
416 416 _string_setting(settings, 'git_rev_filter', '--all')
417 417 _string_setting(settings, 'vcs.hooks.protocol', 'http')
418 418 _string_setting(settings, 'vcs.hooks.host', '127.0.0.1')
419 419 _string_setting(settings, 'vcs.scm_app_implementation', 'http')
420 420 _string_setting(settings, 'vcs.server', '')
421 421 _string_setting(settings, 'vcs.server.log_level', 'debug')
422 422 _string_setting(settings, 'vcs.server.protocol', 'http')
423 423 _bool_setting(settings, 'startup.import_repos', 'false')
424 424 _bool_setting(settings, 'vcs.hooks.direct_calls', 'false')
425 425 _bool_setting(settings, 'vcs.server.enable', 'true')
426 426 _bool_setting(settings, 'vcs.start_server', 'false')
427 427 _list_setting(settings, 'vcs.backends', 'hg, git, svn')
428 428 _int_setting(settings, 'vcs.connection_timeout', 3600)
429 429
430 430 # Support legacy values of vcs.scm_app_implementation. Legacy
431 431 # configurations may use 'rhodecode.lib.middleware.utils.scm_app_http', or
432 432 # disabled since 4.13 'vcsserver.scm_app' which is now mapped to 'http'.
433 433 scm_app_impl = settings['vcs.scm_app_implementation']
434 434 if scm_app_impl in ['rhodecode.lib.middleware.utils.scm_app_http', 'vcsserver.scm_app']:
435 435 settings['vcs.scm_app_implementation'] = 'http'
436 436
437 437
438 438 def _sanitize_cache_settings(settings):
439 _string_setting(settings, 'cache_dir',
440 os.path.join(tempfile.gettempdir(), 'rc_cache'))
439 default_cache_dir = os.path.join(tempfile.gettempdir(), 'rc_cache')
440
441 # save default, cache dir, and use it for all backends later.
442 default_cache_dir = _string_setting(
443 settings,
444 'cache_dir',
445 default_cache_dir, lower=False, default_when_empty=True)
446
447 # ensure we have our dir created
448 if not os.path.isdir(default_cache_dir):
449 os.makedirs(default_cache_dir, mode=0755)
450
441 451 # cache_perms
442 452 _string_setting(
443 453 settings,
444 454 'rc_cache.cache_perms.backend',
445 'dogpile.cache.rc.file_namespace')
455 'dogpile.cache.rc.file_namespace', lower=False)
446 456 _int_setting(
447 457 settings,
448 458 'rc_cache.cache_perms.expiration_time',
449 459 60)
450 460 _string_setting(
451 461 settings,
452 462 'rc_cache.cache_perms.arguments.filename',
453 os.path.join(tempfile.gettempdir(), 'rc_cache_1'))
463 os.path.join(default_cache_dir, 'rc_cache_1'), lower=False)
454 464
455 465 # cache_repo
456 466 _string_setting(
457 467 settings,
458 468 'rc_cache.cache_repo.backend',
459 'dogpile.cache.rc.file_namespace')
469 'dogpile.cache.rc.file_namespace', lower=False)
460 470 _int_setting(
461 471 settings,
462 472 'rc_cache.cache_repo.expiration_time',
463 473 60)
464 474 _string_setting(
465 475 settings,
466 476 'rc_cache.cache_repo.arguments.filename',
467 os.path.join(tempfile.gettempdir(), 'rc_cache_2'))
477 os.path.join(default_cache_dir, 'rc_cache_2'), lower=False)
468 478
469 479 # cache_license
470 480 _string_setting(
471 481 settings,
472 482 'rc_cache.cache_license.backend',
473 'dogpile.cache.rc.file_namespace')
483 'dogpile.cache.rc.file_namespace', lower=False)
474 484 _int_setting(
475 485 settings,
476 486 'rc_cache.cache_license.expiration_time',
477 487 5*60)
478 488 _string_setting(
479 489 settings,
480 490 'rc_cache.cache_license.arguments.filename',
481 os.path.join(tempfile.gettempdir(), 'rc_cache_3'))
491 os.path.join(default_cache_dir, 'rc_cache_3'), lower=False)
482 492
483 493 # cache_repo_longterm memory, 96H
484 494 _string_setting(
485 495 settings,
486 496 'rc_cache.cache_repo_longterm.backend',
487 'dogpile.cache.rc.memory_lru')
497 'dogpile.cache.rc.memory_lru', lower=False)
488 498 _int_setting(
489 499 settings,
490 500 'rc_cache.cache_repo_longterm.expiration_time',
491 501 345600)
492 502 _int_setting(
493 503 settings,
494 504 'rc_cache.cache_repo_longterm.max_size',
495 505 10000)
496 506
497 507 # sql_cache_short
498 508 _string_setting(
499 509 settings,
500 510 'rc_cache.sql_cache_short.backend',
501 'dogpile.cache.rc.memory_lru')
511 'dogpile.cache.rc.memory_lru', lower=False)
502 512 _int_setting(
503 513 settings,
504 514 'rc_cache.sql_cache_short.expiration_time',
505 515 30)
506 516 _int_setting(
507 517 settings,
508 518 'rc_cache.sql_cache_short.max_size',
509 519 10000)
510 520
511 521
512 522 def _int_setting(settings, name, default):
513 523 settings[name] = int(settings.get(name, default))
524 return settings[name]
514 525
515 526
516 527 def _bool_setting(settings, name, default):
517 528 input_val = settings.get(name, default)
518 529 if isinstance(input_val, unicode):
519 530 input_val = input_val.encode('utf8')
520 531 settings[name] = asbool(input_val)
532 return settings[name]
521 533
522 534
523 535 def _list_setting(settings, name, default):
524 536 raw_value = settings.get(name, default)
525 537
526 538 old_separator = ','
527 539 if old_separator in raw_value:
528 540 # If we get a comma separated list, pass it to our own function.
529 541 settings[name] = rhodecode_aslist(raw_value, sep=old_separator)
530 542 else:
531 543 # Otherwise we assume it uses pyramids space/newline separation.
532 544 settings[name] = aslist(raw_value)
545 return settings[name]
533 546
534 547
535 def _string_setting(settings, name, default, lower=True):
548 def _string_setting(settings, name, default, lower=True, default_when_empty=False):
536 549 value = settings.get(name, default)
550
551 if default_when_empty and not value:
552 # use default value when value is empty
553 value = default
554
537 555 if lower:
538 556 value = value.lower()
539 557 settings[name] = value
558 return settings[name]
540 559
541 560
542 561 def _substitute_values(mapping, substitutions):
543 562
544 563 try:
545 564 result = {
546 565 # Note: Cannot use regular replacements, since they would clash
547 566 # with the implementation of ConfigParser. Using "format" instead.
548 567 key: value.format(**substitutions)
549 568 for key, value in mapping.items()
550 569 }
551 570 except KeyError as e:
552 571 raise ValueError(
553 572 'Failed to substitute env variable: {}. '
554 573 'Make sure you have specified this env variable without ENV_ prefix'.format(e))
555 574
556 575 return result
@@ -1,89 +1,94 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2010-2018 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 import os
22 22 import shlex
23 23 import platform
24 24
25 25 from rhodecode.model import init_model
26 26
27 27
28 28 def configure_vcs(config):
29 29 """
30 30 Patch VCS config with some RhodeCode specific stuff
31 31 """
32 32 from rhodecode.lib.vcs import conf
33 33 import rhodecode.lib.vcs.conf.settings
34 34
35 35 conf.settings.BACKENDS = {
36 36 'hg': 'rhodecode.lib.vcs.backends.hg.MercurialRepository',
37 37 'git': 'rhodecode.lib.vcs.backends.git.GitRepository',
38 38 'svn': 'rhodecode.lib.vcs.backends.svn.SubversionRepository',
39 39 }
40 40
41 41 conf.settings.HOOKS_PROTOCOL = config['vcs.hooks.protocol']
42 42 conf.settings.HOOKS_HOST = config['vcs.hooks.host']
43 43 conf.settings.HOOKS_DIRECT_CALLS = config['vcs.hooks.direct_calls']
44 44 conf.settings.GIT_REV_FILTER = shlex.split(config['git_rev_filter'])
45 45 conf.settings.DEFAULT_ENCODINGS = config['default_encoding']
46 46 conf.settings.ALIASES[:] = config['vcs.backends']
47 47 conf.settings.SVN_COMPATIBLE_VERSION = config['vcs.svn.compatible_version']
48 48
49 49
50 50 def initialize_database(config):
51 51 from rhodecode.lib.utils2 import engine_from_config, get_encryption_key
52 52 engine = engine_from_config(config, 'sqlalchemy.db1.')
53 53 init_model(engine, encryption_key=get_encryption_key(config))
54 54
55 55
56 56 def initialize_test_environment(settings, test_env=None):
57 57 if test_env is None:
58 58 test_env = not int(os.environ.get('RC_NO_TMP_PATH', 0))
59 59
60 60 from rhodecode.lib.utils import (
61 61 create_test_directory, create_test_database, create_test_repositories,
62 62 create_test_index)
63 63 from rhodecode.tests import TESTS_TMP_PATH
64 64 from rhodecode.lib.vcs.backends.hg import largefiles_store
65 65 from rhodecode.lib.vcs.backends.git import lfs_store
66 66
67 67 # test repos
68 68 if test_env:
69 69 create_test_directory(TESTS_TMP_PATH)
70 70 # large object stores
71 71 create_test_directory(largefiles_store(TESTS_TMP_PATH))
72 72 create_test_directory(lfs_store(TESTS_TMP_PATH))
73 73
74 74 create_test_database(TESTS_TMP_PATH, settings)
75 75 create_test_repositories(TESTS_TMP_PATH, settings)
76 76 create_test_index(TESTS_TMP_PATH, settings)
77 77
78 78
79 79 def get_vcs_server_protocol(config):
80 80 return config['vcs.server.protocol']
81 81
82 82
83 83 def set_instance_id(config):
84 """ Sets a dynamic generated config['instance_id'] if missing or '*' """
84 """
85 Sets a dynamic generated config['instance_id'] if missing or '*'
86 E.g instance_id = *cluster-1 or instance_id = *
87 """
85 88
86 89 config['instance_id'] = config.get('instance_id') or ''
87 if config['instance_id'] == '*' or not config['instance_id']:
90 instance_id = config['instance_id']
91 if instance_id.startswith('*') or not instance_id:
92 prefix = instance_id.lstrip('*')
88 93 _platform_id = platform.uname()[1] or 'instance'
89 config['instance_id'] = '%s-%s' % (_platform_id, os.getpid())
94 config['instance_id'] = '%s%s-%s' % (prefix, _platform_id, os.getpid())
@@ -1,70 +1,74 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2012-2018 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 import sys
21 21 import logging
22 22
23 23 from rhodecode.integrations.registry import IntegrationTypeRegistry
24 24 from rhodecode.integrations.types import webhook, slack, hipchat, email, base
25 from rhodecode.lib.exc_tracking import store_exception
26
25 27 log = logging.getLogger(__name__)
26 28
27 29
28 30 # TODO: dan: This is currently global until we figure out what to do about
29 31 # VCS's not having a pyramid context - move it to pyramid app configuration
30 32 # includeme level later to allow per instance integration setup
31 33 integration_type_registry = IntegrationTypeRegistry()
32 34
33 35 integration_type_registry.register_integration_type(
34 36 webhook.WebhookIntegrationType)
35 37 integration_type_registry.register_integration_type(
36 38 slack.SlackIntegrationType)
37 39 integration_type_registry.register_integration_type(
38 40 hipchat.HipchatIntegrationType)
39 41 integration_type_registry.register_integration_type(
40 42 email.EmailIntegrationType)
41 43
42 44
43 45 # dummy EE integration to show users what we have in EE edition
44 46 integration_type_registry.register_integration_type(
45 47 base.EEIntegration('Jira Issues integration', 'jira'))
46 48 integration_type_registry.register_integration_type(
47 49 base.EEIntegration('Redmine Tracker integration', 'redmine'))
48 50 integration_type_registry.register_integration_type(
49 51 base.EEIntegration('Jenkins CI integration', 'jenkins'))
50 52
51 53
52 54 def integrations_event_handler(event):
53 55 """
54 56 Takes an event and passes it to all enabled integrations
55 57 """
56 58 from rhodecode.model.integration import IntegrationModel
57 59
58 60 integration_model = IntegrationModel()
59 61 integrations = integration_model.get_for_event(event)
60 62 for integration in integrations:
61 63 try:
62 64 integration_model.send_event(integration, event)
63 65 except Exception:
66 exc_info = sys.exc_info()
67 store_exception(id(exc_info), exc_info)
64 68 log.exception(
65 69 'failure occurred when sending event %s to integration %s' % (
66 70 event, integration))
67 71
68 72
69 73 def includeme(config):
70 74 config.include('rhodecode.integrations.routes')
@@ -1,146 +1,153 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2010-2018 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 import os
22 22 import time
23 23 import datetime
24 24 import msgpack
25 25 import logging
26 26 import traceback
27 27 import tempfile
28 28
29 29
30 30 log = logging.getLogger(__name__)
31 31
32 32 # NOTE: Any changes should be synced with exc_tracking at vcsserver.lib.exc_tracking
33 33 global_prefix = 'rhodecode'
34 34
35 35
36 36 def exc_serialize(exc_id, tb, exc_type):
37 37
38 38 data = {
39 39 'version': 'v1',
40 40 'exc_id': exc_id,
41 41 'exc_utc_date': datetime.datetime.utcnow().isoformat(),
42 42 'exc_timestamp': repr(time.time()),
43 43 'exc_message': tb,
44 44 'exc_type': exc_type,
45 45 }
46 46 return msgpack.packb(data), data
47 47
48 48
49 49 def exc_unserialize(tb):
50 50 return msgpack.unpackb(tb)
51 51
52 52
53 53 def get_exc_store():
54 54 """
55 55 Get and create exception store if it's not existing
56 56 """
57 57 exc_store_dir = 'rc_exception_store_v1'
58 58 # fallback
59 59 _exc_store_path = os.path.join(tempfile.gettempdir(), exc_store_dir)
60 60
61 61 exc_store_dir = '' # TODO: need a persistent cross instance store here
62 62 if exc_store_dir:
63 63 _exc_store_path = os.path.join(exc_store_dir, exc_store_dir)
64 64
65 65 _exc_store_path = os.path.abspath(_exc_store_path)
66 66 if not os.path.isdir(_exc_store_path):
67 67 os.makedirs(_exc_store_path)
68 68 log.debug('Initializing exceptions store at %s', _exc_store_path)
69 69 return _exc_store_path
70 70
71 71
72 72 def _store_exception(exc_id, exc_info, prefix):
73 73 exc_type, exc_value, exc_traceback = exc_info
74 74 tb = ''.join(traceback.format_exception(
75 75 exc_type, exc_value, exc_traceback, None))
76 76
77 77 exc_type_name = exc_type.__name__
78 78 exc_store_path = get_exc_store()
79 79 exc_data, org_data = exc_serialize(exc_id, tb, exc_type_name)
80 80 exc_pref_id = '{}_{}_{}'.format(exc_id, prefix, org_data['exc_timestamp'])
81 81 if not os.path.isdir(exc_store_path):
82 82 os.makedirs(exc_store_path)
83 83 stored_exc_path = os.path.join(exc_store_path, exc_pref_id)
84 84 with open(stored_exc_path, 'wb') as f:
85 85 f.write(exc_data)
86 86 log.debug('Stored generated exception %s as: %s', exc_id, stored_exc_path)
87 87
88 88
89 89 def store_exception(exc_id, exc_info, prefix=global_prefix):
90 """
91 Example usage::
92
93 exc_info = sys.exc_info()
94 store_exception(id(exc_info), exc_info)
95 """
96
90 97 try:
91 98 _store_exception(exc_id=exc_id, exc_info=exc_info, prefix=prefix)
92 99 except Exception:
93 100 log.exception('Failed to store exception `%s` information', exc_id)
94 101 # there's no way this can fail, it will crash server badly if it does.
95 102 pass
96 103
97 104
98 105 def _find_exc_file(exc_id, prefix=global_prefix):
99 106 exc_store_path = get_exc_store()
100 107 if prefix:
101 108 exc_id = '{}_{}'.format(exc_id, prefix)
102 109 else:
103 110 # search without a prefix
104 111 exc_id = '{}'.format(exc_id)
105 112
106 113 # we need to search the store for such start pattern as above
107 114 for fname in os.listdir(exc_store_path):
108 115 if fname.startswith(exc_id):
109 116 exc_id = os.path.join(exc_store_path, fname)
110 117 break
111 118 continue
112 119 else:
113 120 exc_id = None
114 121
115 122 return exc_id
116 123
117 124
118 125 def _read_exception(exc_id, prefix):
119 126 exc_id_file_path = _find_exc_file(exc_id=exc_id, prefix=prefix)
120 127 if exc_id_file_path:
121 128 with open(exc_id_file_path, 'rb') as f:
122 129 return exc_unserialize(f.read())
123 130 else:
124 131 log.debug('Exception File `%s` not found', exc_id_file_path)
125 132 return None
126 133
127 134
128 135 def read_exception(exc_id, prefix=global_prefix):
129 136 try:
130 137 return _read_exception(exc_id=exc_id, prefix=prefix)
131 138 except Exception:
132 139 log.exception('Failed to read exception `%s` information', exc_id)
133 140 # there's no way this can fail, it will crash server badly if it does.
134 141 return None
135 142
136 143
137 144 def delete_exception(exc_id, prefix=global_prefix):
138 145 try:
139 146 exc_id_file_path = _find_exc_file(exc_id, prefix=prefix)
140 147 if exc_id_file_path:
141 148 os.remove(exc_id_file_path)
142 149
143 150 except Exception:
144 151 log.exception('Failed to remove exception `%s` information', exc_id)
145 152 # there's no way this can fail, it will crash server badly if it does.
146 153 pass
@@ -1,118 +1,175 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2017-2018 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 import logging
21 21
22 22 log = logging.getLogger(__name__)
23 23
24 24
25 25 class MaintenanceTask(object):
26 26 human_name = 'undefined'
27 27
28 28 def __init__(self, db_repo):
29 29 self.db_repo = db_repo
30 30
31 31 def run(self):
32 32 """Execute task and return task human value"""
33 33 raise NotImplementedError()
34 34
35 35
36 36 class GitGC(MaintenanceTask):
37 37 human_name = 'GIT Garbage collect'
38 38
39 39 def _count_objects(self, repo):
40 40 stdout, stderr = repo.run_git_command(
41 41 ['count-objects', '-v'], fail_on_stderr=False)
42 42
43 43 errors = ' '
44 44 objects = ' '.join(stdout.splitlines())
45 45
46 46 if stderr:
47 47 errors = '\nSTD ERR:' + '\n'.join(stderr.splitlines())
48 48 return objects + errors
49 49
50 50 def run(self):
51 51 output = []
52 52 instance = self.db_repo.scm_instance()
53 53
54 objects = self._count_objects(instance)
55 output.append(objects)
56 log.debug('GIT objects:%s', objects)
54 objects_before = self._count_objects(instance)
57 55
58 stdout, stderr = instance.run_git_command(
59 ['gc', '--aggressive'], fail_on_stderr=False)
56 log.debug('GIT objects:%s', objects_before)
57 cmd = ['gc', '--aggressive']
58 stdout, stderr = instance.run_git_command(cmd, fail_on_stderr=False)
59
60 out = 'executed {}'.format(' '.join(cmd))
61 output.append(out)
60 62
61 out = 'executed git gc --aggressive'
63 out = ''
62 64 if stderr:
63 out = ''.join(stderr.splitlines())
65 out += ''.join(stderr.splitlines())
64 66
65 elif stdout:
66 out = ''.join(stdout.splitlines())
67 if stdout:
68 out += ''.join(stdout.splitlines())
67 69
70 if out:
68 71 output.append(out)
69 72
70 objects = self._count_objects(instance)
71 log.debug('GIT objects:%s', objects)
72 output.append(objects)
73 objects_after = self._count_objects(instance)
74 log.debug('GIT objects:%s', objects_after)
75 output.append('objects before :' + objects_before)
76 output.append('objects after :' + objects_after)
77
78 return '\n'.join(output)
79
80
81 class GitFSCK(MaintenanceTask):
82 human_name = 'GIT FSCK'
83
84 def run(self):
85 output = []
86 instance = self.db_repo.scm_instance()
87
88 cmd = ['fsck', '--full']
89 stdout, stderr = instance.run_git_command(cmd, fail_on_stderr=False)
90
91 out = 'executed {}'.format(' '.join(cmd))
92 output.append(out)
93
94 out = ''
95 if stderr:
96 out += ''.join(stderr.splitlines())
97
98 if stdout:
99 out += ''.join(stdout.splitlines())
100
101 if out:
102 output.append(out)
103
104 return '\n'.join(output)
105
106
107 class GitRepack(MaintenanceTask):
108 human_name = 'GIT Repack'
109
110 def run(self):
111 output = []
112 instance = self.db_repo.scm_instance()
113 cmd = ['repack', '-a', '-d',
114 '--window-memory', '10m', '--max-pack-size', '100m']
115 stdout, stderr = instance.run_git_command(cmd, fail_on_stderr=False)
116
117 out = 'executed {}'.format(' '.join(cmd))
118 output.append(out)
119 out = ''
120
121 if stderr:
122 out += ''.join(stderr.splitlines())
123
124 if stdout:
125 out += ''.join(stdout.splitlines())
126
127 if out:
128 output.append(out)
73 129
74 130 return '\n'.join(output)
75 131
76 132
77 133 class HGVerify(MaintenanceTask):
78 134 human_name = 'HG Verify repo'
79 135
80 136 def run(self):
81 137 instance = self.db_repo.scm_instance()
82 138 res = instance.verify()
83 139 return res
84 140
85 141
86 142 class SVNVerify(MaintenanceTask):
87 143 human_name = 'SVN Verify repo'
88 144
89 145 def run(self):
90 146 instance = self.db_repo.scm_instance()
91 147 res = instance.verify()
92 148 return res
93 149
94 150
95 151 class RepoMaintenance(object):
96 152 """
97 153 Performs maintenance of repository based on it's type
98 154 """
99 155 tasks = {
100 156 'hg': [HGVerify],
101 'git': [GitGC],
157 'git': [GitFSCK, GitGC, GitRepack],
102 158 'svn': [SVNVerify],
103 159 }
104 160
105 161 def get_tasks_for_repo(self, db_repo):
106 162 """
107 163 fetches human names of tasks pending for execution for given type of repo
108 164 """
109 165 tasks = []
110 166 for task in self.tasks[db_repo.repo_type]:
111 167 tasks.append(task.human_name)
112 168 return tasks
113 169
114 170 def execute(self, db_repo):
115 171 executed_tasks = []
116 172 for task in self.tasks[db_repo.repo_type]:
117 executed_tasks.append(task(db_repo).run())
173 output = task.human_name + ':\n' + task(db_repo).run() + '\n--\n'
174 executed_tasks.append(output)
118 175 return executed_tasks
General Comments 0
You need to be logged in to leave comments. Login now