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