Show More
@@ -1,257 +1,250 b'' | |||
|
1 | 1 | # Overrides for the generated python-packages.nix |
|
2 | 2 | # |
|
3 | 3 | # This function is intended to be used as an extension to the generated file |
|
4 | 4 | # python-packages.nix. The main objective is to add needed dependencies of C |
|
5 | 5 | # libraries and tweak the build instructions where needed. |
|
6 | 6 | |
|
7 | 7 | { pkgs, basePythonPackages }: |
|
8 | 8 | |
|
9 | 9 | let |
|
10 | 10 | sed = "sed -i"; |
|
11 | 11 | localLicenses = { |
|
12 | 12 | repoze = { |
|
13 | 13 | fullName = "Repoze License"; |
|
14 | 14 | url = http://www.repoze.org/LICENSE.txt; |
|
15 | 15 | }; |
|
16 | 16 | }; |
|
17 | 17 | |
|
18 | 18 | in |
|
19 | 19 | |
|
20 | 20 | self: super: { |
|
21 | 21 | |
|
22 | 22 | appenlight-client = super.appenlight-client.override (attrs: { |
|
23 | 23 | meta = { |
|
24 | 24 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
25 | 25 | }; |
|
26 | 26 | }); |
|
27 | 27 | |
|
28 | 28 | Beaker = super.Beaker.override (attrs: { |
|
29 | 29 | patches = [ |
|
30 | 30 | ./patch-beaker-lock-func-debug.diff |
|
31 | 31 | ]; |
|
32 | 32 | }); |
|
33 | 33 | |
|
34 | 34 | future = super.future.override (attrs: { |
|
35 | 35 | meta = { |
|
36 | 36 | license = [ pkgs.lib.licenses.mit ]; |
|
37 | 37 | }; |
|
38 | 38 | }); |
|
39 | 39 | |
|
40 | 40 | testpath = super.testpath.override (attrs: { |
|
41 | 41 | meta = { |
|
42 | 42 | license = [ pkgs.lib.licenses.mit ]; |
|
43 | 43 | }; |
|
44 | 44 | }); |
|
45 | 45 | |
|
46 | 46 | gnureadline = super.gnureadline.override (attrs: { |
|
47 | 47 | buildInputs = attrs.buildInputs ++ [ |
|
48 | 48 | pkgs.ncurses |
|
49 | 49 | ]; |
|
50 | 50 | patchPhase = '' |
|
51 | 51 | substituteInPlace setup.py --replace "/bin/bash" "${pkgs.bash}/bin/bash" |
|
52 | 52 | ''; |
|
53 | 53 | }); |
|
54 | 54 | |
|
55 | 55 | gunicorn = super.gunicorn.override (attrs: { |
|
56 | 56 | propagatedBuildInputs = attrs.propagatedBuildInputs ++ [ |
|
57 | 57 | # johbo: futures is needed as long as we are on Python 2, otherwise |
|
58 | 58 | # gunicorn explodes if used with multiple threads per worker. |
|
59 | 59 | self.futures |
|
60 | 60 | ]; |
|
61 | 61 | }); |
|
62 | 62 | |
|
63 | 63 | nbconvert = super.nbconvert.override (attrs: { |
|
64 | 64 | propagatedBuildInputs = attrs.propagatedBuildInputs ++ [ |
|
65 | 65 | # marcink: plug in jupyter-client for notebook rendering |
|
66 | 66 | self.jupyter-client |
|
67 | 67 | ]; |
|
68 | 68 | }); |
|
69 | 69 | |
|
70 | 70 | ipython = super.ipython.override (attrs: { |
|
71 | 71 | propagatedBuildInputs = attrs.propagatedBuildInputs ++ [ |
|
72 | 72 | self.gnureadline |
|
73 | 73 | ]; |
|
74 | 74 | }); |
|
75 | 75 | |
|
76 | 76 | lxml = super.lxml.override (attrs: { |
|
77 | 77 | # johbo: On 16.09 we need this to compile on darwin, otherwise compilation |
|
78 | 78 | # fails on Darwin. |
|
79 | 79 | hardeningDisable = if pkgs.stdenv.isDarwin then [ "format" ] else null; |
|
80 | 80 | buildInputs = with self; [ |
|
81 | 81 | pkgs.libxml2 |
|
82 | 82 | pkgs.libxslt |
|
83 | 83 | ]; |
|
84 | 84 | }); |
|
85 | 85 | |
|
86 | 86 | MySQL-python = super.MySQL-python.override (attrs: { |
|
87 | 87 | buildInputs = attrs.buildInputs ++ [ |
|
88 | 88 | pkgs.openssl |
|
89 | 89 | ]; |
|
90 | 90 | propagatedBuildInputs = attrs.propagatedBuildInputs ++ [ |
|
91 | 91 | pkgs.libmysql |
|
92 | 92 | pkgs.zlib |
|
93 | 93 | ]; |
|
94 | 94 | }); |
|
95 | 95 | |
|
96 | 96 | psutil = super.psutil.override (attrs: { |
|
97 | 97 | buildInputs = attrs.buildInputs ++ |
|
98 | 98 | pkgs.lib.optional pkgs.stdenv.isDarwin pkgs.darwin.IOKit; |
|
99 | 99 | }); |
|
100 | 100 | |
|
101 | 101 | psycopg2 = super.psycopg2.override (attrs: { |
|
102 | 102 | buildInputs = attrs.buildInputs ++ |
|
103 | 103 | pkgs.lib.optional pkgs.stdenv.isDarwin pkgs.openssl; |
|
104 | 104 | propagatedBuildInputs = attrs.propagatedBuildInputs ++ [ |
|
105 | 105 | pkgs.postgresql |
|
106 | 106 | ]; |
|
107 | 107 | meta = { |
|
108 | 108 | license = pkgs.lib.licenses.lgpl3Plus; |
|
109 | 109 | }; |
|
110 | 110 | }); |
|
111 | 111 | |
|
112 | 112 | pycurl = super.pycurl.override (attrs: { |
|
113 | 113 | propagatedBuildInputs = attrs.propagatedBuildInputs ++ [ |
|
114 | 114 | pkgs.curl |
|
115 | 115 | pkgs.openssl |
|
116 | 116 | ]; |
|
117 | 117 | preConfigure = '' |
|
118 | 118 | substituteInPlace setup.py --replace '--static-libs' '--libs' |
|
119 | 119 | export PYCURL_SSL_LIBRARY=openssl |
|
120 | 120 | ''; |
|
121 | 121 | meta = { |
|
122 | 122 | # TODO: It is LGPL and MIT |
|
123 | 123 | license = pkgs.lib.licenses.mit; |
|
124 | 124 | }; |
|
125 | 125 | }); |
|
126 | 126 | |
|
127 | 127 | pyramid = super.pyramid.override (attrs: { |
|
128 | 128 | postFixup = '' |
|
129 | 129 | wrapPythonPrograms |
|
130 | 130 | # TODO: johbo: "wrapPython" adds this magic line which |
|
131 | 131 | # confuses pserve. |
|
132 | 132 | ${sed} '/import sys; sys.argv/d' $out/bin/.pserve-wrapped |
|
133 | 133 | ''; |
|
134 | 134 | meta = { |
|
135 | 135 | license = localLicenses.repoze; |
|
136 | 136 | }; |
|
137 | 137 | }); |
|
138 | 138 | |
|
139 | 139 | pyramid-debugtoolbar = super.pyramid-debugtoolbar.override (attrs: { |
|
140 | 140 | meta = { |
|
141 | 141 | license = [ pkgs.lib.licenses.bsdOriginal localLicenses.repoze ]; |
|
142 | 142 | }; |
|
143 | 143 | }); |
|
144 | 144 | |
|
145 | 145 | pysqlite = super.pysqlite.override (attrs: { |
|
146 | 146 | propagatedBuildInputs = [ |
|
147 | 147 | pkgs.sqlite |
|
148 | 148 | ]; |
|
149 | 149 | meta = { |
|
150 | 150 | license = [ pkgs.lib.licenses.zlib pkgs.lib.licenses.libpng ]; |
|
151 | 151 | }; |
|
152 | 152 | }); |
|
153 | 153 | |
|
154 | 154 | pytest-runner = super.pytest-runner.override (attrs: { |
|
155 | 155 | propagatedBuildInputs = [ |
|
156 | 156 | self.setuptools-scm |
|
157 | 157 | ]; |
|
158 | 158 | }); |
|
159 | 159 | |
|
160 | 160 | python-ldap = super.python-ldap.override (attrs: { |
|
161 | 161 | propagatedBuildInputs = attrs.propagatedBuildInputs ++ [ |
|
162 | 162 | pkgs.cyrus_sasl |
|
163 | 163 | pkgs.openldap |
|
164 | 164 | pkgs.openssl |
|
165 | 165 | ]; |
|
166 | 166 | # TODO: johbo: Remove the "or" once we drop 16.03 support. |
|
167 | 167 | NIX_CFLAGS_COMPILE = "-I${pkgs.cyrus_sasl.dev or pkgs.cyrus_sasl}/include/sasl"; |
|
168 | 168 | }); |
|
169 | 169 | |
|
170 | 170 | python-pam = super.python-pam.override (attrs: |
|
171 | 171 | let |
|
172 | 172 | includeLibPam = pkgs.stdenv.isLinux; |
|
173 | 173 | in { |
|
174 | 174 | # TODO: johbo: Move the option up into the default.nix, we should |
|
175 | 175 | # include python-pam only on supported platforms. |
|
176 | 176 | propagatedBuildInputs = attrs.propagatedBuildInputs ++ |
|
177 | 177 | pkgs.lib.optional includeLibPam [ |
|
178 | 178 | pkgs.pam |
|
179 | 179 | ]; |
|
180 | 180 | # TODO: johbo: Check if this can be avoided, or transform into |
|
181 | 181 | # a real patch |
|
182 | 182 | patchPhase = pkgs.lib.optionals includeLibPam '' |
|
183 | 183 | substituteInPlace pam.py \ |
|
184 | 184 | --replace 'find_library("pam")' '"${pkgs.pam}/lib/libpam.so.0"' |
|
185 | 185 | ''; |
|
186 | 186 | }); |
|
187 | 187 | |
|
188 | 188 | URLObject = super.URLObject.override (attrs: { |
|
189 | 189 | meta = { |
|
190 | 190 | license = { |
|
191 | 191 | spdxId = "Unlicense"; |
|
192 | 192 | fullName = "The Unlicense"; |
|
193 | 193 | url = http://unlicense.org/; |
|
194 | 194 | }; |
|
195 | 195 | }; |
|
196 | 196 | }); |
|
197 | 197 | |
|
198 | 198 | docutils = super.docutils.override (attrs: { |
|
199 | 199 | meta = { |
|
200 | 200 | license = pkgs.lib.licenses.bsd2; |
|
201 | 201 | }; |
|
202 | 202 | }); |
|
203 | 203 | |
|
204 | 204 | colander = super.colander.override (attrs: { |
|
205 | 205 | meta = { |
|
206 | 206 | license = localLicenses.repoze; |
|
207 | 207 | }; |
|
208 | 208 | }); |
|
209 | 209 | |
|
210 | 210 | pyramid-beaker = super.pyramid-beaker.override (attrs: { |
|
211 | 211 | meta = { |
|
212 | 212 | license = localLicenses.repoze; |
|
213 | 213 | }; |
|
214 | 214 | }); |
|
215 | 215 | |
|
216 | 216 | pyramid-mako = super.pyramid-mako.override (attrs: { |
|
217 | 217 | meta = { |
|
218 | 218 | license = localLicenses.repoze; |
|
219 | 219 | }; |
|
220 | 220 | }); |
|
221 | 221 | |
|
222 | 222 | repoze.lru = super.repoze.lru.override (attrs: { |
|
223 | 223 | meta = { |
|
224 | 224 | license = localLicenses.repoze; |
|
225 | 225 | }; |
|
226 | 226 | }); |
|
227 | 227 | |
|
228 | recaptcha-client = super.recaptcha-client.override (attrs: { | |
|
229 | meta = { | |
|
230 | # TODO: It is MIT/X11 | |
|
231 | license = pkgs.lib.licenses.mit; | |
|
232 | }; | |
|
233 | }); | |
|
234 | ||
|
235 | 228 | python-editor = super.python-editor.override (attrs: { |
|
236 | 229 | meta = { |
|
237 | 230 | license = pkgs.lib.licenses.asl20; |
|
238 | 231 | }; |
|
239 | 232 | }); |
|
240 | 233 | |
|
241 | 234 | translationstring = super.translationstring.override (attrs: { |
|
242 | 235 | meta = { |
|
243 | 236 | license = localLicenses.repoze; |
|
244 | 237 | }; |
|
245 | 238 | }); |
|
246 | 239 | |
|
247 | 240 | venusian = super.venusian.override (attrs: { |
|
248 | 241 | meta = { |
|
249 | 242 | license = localLicenses.repoze; |
|
250 | 243 | }; |
|
251 | 244 | }); |
|
252 | 245 | |
|
253 | 246 | # Avoid that setuptools is replaced, this leads to trouble |
|
254 | 247 | # with buildPythonPackage. |
|
255 | 248 | setuptools = basePythonPackages.setuptools; |
|
256 | 249 | |
|
257 | 250 | } |
@@ -1,2099 +1,2086 b'' | |||
|
1 | 1 | # Generated by pip2nix 0.4.0 |
|
2 | 2 | # See https://github.com/johbo/pip2nix |
|
3 | 3 | |
|
4 | 4 | { |
|
5 | 5 | Babel = super.buildPythonPackage { |
|
6 | 6 | name = "Babel-1.3"; |
|
7 | 7 | buildInputs = with self; []; |
|
8 | 8 | doCheck = false; |
|
9 | 9 | propagatedBuildInputs = with self; [pytz]; |
|
10 | 10 | src = fetchurl { |
|
11 | 11 | url = "https://pypi.python.org/packages/33/27/e3978243a03a76398c384c83f7ca879bc6e8f1511233a621fcada135606e/Babel-1.3.tar.gz"; |
|
12 | 12 | md5 = "5264ceb02717843cbc9ffce8e6e06bdb"; |
|
13 | 13 | }; |
|
14 | 14 | meta = { |
|
15 | 15 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
16 | 16 | }; |
|
17 | 17 | }; |
|
18 | 18 | Beaker = super.buildPythonPackage { |
|
19 | 19 | name = "Beaker-1.9.1"; |
|
20 | 20 | buildInputs = with self; []; |
|
21 | 21 | doCheck = false; |
|
22 | 22 | propagatedBuildInputs = with self; [funcsigs]; |
|
23 | 23 | src = fetchurl { |
|
24 | 24 | url = "https://pypi.python.org/packages/ca/14/a626188d0d0c7b55dd7cf1902046c2743bd392a7078bb53073e13280eb1e/Beaker-1.9.1.tar.gz"; |
|
25 | 25 | md5 = "46fda0a164e2b0d24ccbda51a2310301"; |
|
26 | 26 | }; |
|
27 | 27 | meta = { |
|
28 | 28 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
29 | 29 | }; |
|
30 | 30 | }; |
|
31 | 31 | CProfileV = super.buildPythonPackage { |
|
32 | 32 | name = "CProfileV-1.0.7"; |
|
33 | 33 | buildInputs = with self; []; |
|
34 | 34 | doCheck = false; |
|
35 | 35 | propagatedBuildInputs = with self; [bottle]; |
|
36 | 36 | src = fetchurl { |
|
37 | 37 | url = "https://pypi.python.org/packages/df/50/d8c1ada7d537c64b0f76453fa31dedb6af6e27b82fcf0331e5f71a4cf98b/CProfileV-1.0.7.tar.gz"; |
|
38 | 38 | md5 = "db4c7640438aa3d8887e194c81c7a019"; |
|
39 | 39 | }; |
|
40 | 40 | meta = { |
|
41 | 41 | license = [ pkgs.lib.licenses.mit ]; |
|
42 | 42 | }; |
|
43 | 43 | }; |
|
44 | 44 | Chameleon = super.buildPythonPackage { |
|
45 | 45 | name = "Chameleon-2.24"; |
|
46 | 46 | buildInputs = with self; []; |
|
47 | 47 | doCheck = false; |
|
48 | 48 | propagatedBuildInputs = with self; []; |
|
49 | 49 | src = fetchurl { |
|
50 | 50 | url = "https://pypi.python.org/packages/5a/9e/637379ffa13c5172b5c0e704833ffea6bf51cec7567f93fd6e903d53ed74/Chameleon-2.24.tar.gz"; |
|
51 | 51 | md5 = "1b01f1f6533a8a11d0d2f2366dec5342"; |
|
52 | 52 | }; |
|
53 | 53 | meta = { |
|
54 | 54 | license = [ { fullName = "BSD-like (http://repoze.org/license.html)"; } ]; |
|
55 | 55 | }; |
|
56 | 56 | }; |
|
57 | 57 | FormEncode = super.buildPythonPackage { |
|
58 | 58 | name = "FormEncode-1.2.4"; |
|
59 | 59 | buildInputs = with self; []; |
|
60 | 60 | doCheck = false; |
|
61 | 61 | propagatedBuildInputs = with self; []; |
|
62 | 62 | src = fetchurl { |
|
63 | 63 | url = "https://pypi.python.org/packages/8e/59/0174271a6f004512e0201188593e6d319db139d14cb7490e488bbb078015/FormEncode-1.2.4.tar.gz"; |
|
64 | 64 | md5 = "6bc17fb9aed8aea198975e888e2077f4"; |
|
65 | 65 | }; |
|
66 | 66 | meta = { |
|
67 | 67 | license = [ pkgs.lib.licenses.psfl ]; |
|
68 | 68 | }; |
|
69 | 69 | }; |
|
70 | 70 | Jinja2 = super.buildPythonPackage { |
|
71 | 71 | name = "Jinja2-2.9.6"; |
|
72 | 72 | buildInputs = with self; []; |
|
73 | 73 | doCheck = false; |
|
74 | 74 | propagatedBuildInputs = with self; [MarkupSafe]; |
|
75 | 75 | src = fetchurl { |
|
76 | 76 | url = "https://pypi.python.org/packages/90/61/f820ff0076a2599dd39406dcb858ecb239438c02ce706c8e91131ab9c7f1/Jinja2-2.9.6.tar.gz"; |
|
77 | 77 | md5 = "6411537324b4dba0956aaa8109f3c77b"; |
|
78 | 78 | }; |
|
79 | 79 | meta = { |
|
80 | 80 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
81 | 81 | }; |
|
82 | 82 | }; |
|
83 | 83 | Mako = super.buildPythonPackage { |
|
84 | 84 | name = "Mako-1.0.7"; |
|
85 | 85 | buildInputs = with self; []; |
|
86 | 86 | doCheck = false; |
|
87 | 87 | propagatedBuildInputs = with self; [MarkupSafe]; |
|
88 | 88 | src = fetchurl { |
|
89 | 89 | url = "https://pypi.python.org/packages/eb/f3/67579bb486517c0d49547f9697e36582cd19dafb5df9e687ed8e22de57fa/Mako-1.0.7.tar.gz"; |
|
90 | 90 | md5 = "5836cc997b1b773ef389bf6629c30e65"; |
|
91 | 91 | }; |
|
92 | 92 | meta = { |
|
93 | 93 | license = [ pkgs.lib.licenses.mit ]; |
|
94 | 94 | }; |
|
95 | 95 | }; |
|
96 | 96 | Markdown = super.buildPythonPackage { |
|
97 | 97 | name = "Markdown-2.6.11"; |
|
98 | 98 | buildInputs = with self; []; |
|
99 | 99 | doCheck = false; |
|
100 | 100 | propagatedBuildInputs = with self; []; |
|
101 | 101 | src = fetchurl { |
|
102 | 102 | url = "https://pypi.python.org/packages/b3/73/fc5c850f44af5889192dff783b7b0d8f3fe8d30b65c8e3f78f8f0265fecf/Markdown-2.6.11.tar.gz"; |
|
103 | 103 | md5 = "a67c1b2914f7d74eeede2ebe0fdae470"; |
|
104 | 104 | }; |
|
105 | 105 | meta = { |
|
106 | 106 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
107 | 107 | }; |
|
108 | 108 | }; |
|
109 | 109 | MarkupSafe = super.buildPythonPackage { |
|
110 | 110 | name = "MarkupSafe-1.0"; |
|
111 | 111 | buildInputs = with self; []; |
|
112 | 112 | doCheck = false; |
|
113 | 113 | propagatedBuildInputs = with self; []; |
|
114 | 114 | src = fetchurl { |
|
115 | 115 | url = "https://pypi.python.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz"; |
|
116 | 116 | md5 = "2fcedc9284d50e577b5192e8e3578355"; |
|
117 | 117 | }; |
|
118 | 118 | meta = { |
|
119 | 119 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
120 | 120 | }; |
|
121 | 121 | }; |
|
122 | 122 | MySQL-python = super.buildPythonPackage { |
|
123 | 123 | name = "MySQL-python-1.2.5"; |
|
124 | 124 | buildInputs = with self; []; |
|
125 | 125 | doCheck = false; |
|
126 | 126 | propagatedBuildInputs = with self; []; |
|
127 | 127 | src = fetchurl { |
|
128 | 128 | url = "https://pypi.python.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip"; |
|
129 | 129 | md5 = "654f75b302db6ed8dc5a898c625e030c"; |
|
130 | 130 | }; |
|
131 | 131 | meta = { |
|
132 | 132 | license = [ pkgs.lib.licenses.gpl1 ]; |
|
133 | 133 | }; |
|
134 | 134 | }; |
|
135 | 135 | Paste = super.buildPythonPackage { |
|
136 | 136 | name = "Paste-2.0.3"; |
|
137 | 137 | buildInputs = with self; []; |
|
138 | 138 | doCheck = false; |
|
139 | 139 | propagatedBuildInputs = with self; [six]; |
|
140 | 140 | src = fetchurl { |
|
141 | 141 | url = "https://pypi.python.org/packages/30/c3/5c2f7c7a02e4f58d4454353fa1c32c94f79fa4e36d07a67c0ac295ea369e/Paste-2.0.3.tar.gz"; |
|
142 | 142 | md5 = "1231e14eae62fa7ed76e9130b04bc61e"; |
|
143 | 143 | }; |
|
144 | 144 | meta = { |
|
145 | 145 | license = [ pkgs.lib.licenses.mit ]; |
|
146 | 146 | }; |
|
147 | 147 | }; |
|
148 | 148 | PasteDeploy = super.buildPythonPackage { |
|
149 | 149 | name = "PasteDeploy-1.5.2"; |
|
150 | 150 | buildInputs = with self; []; |
|
151 | 151 | doCheck = false; |
|
152 | 152 | propagatedBuildInputs = with self; []; |
|
153 | 153 | src = fetchurl { |
|
154 | 154 | url = "https://pypi.python.org/packages/0f/90/8e20cdae206c543ea10793cbf4136eb9a8b3f417e04e40a29d72d9922cbd/PasteDeploy-1.5.2.tar.gz"; |
|
155 | 155 | md5 = "352b7205c78c8de4987578d19431af3b"; |
|
156 | 156 | }; |
|
157 | 157 | meta = { |
|
158 | 158 | license = [ pkgs.lib.licenses.mit ]; |
|
159 | 159 | }; |
|
160 | 160 | }; |
|
161 | 161 | PasteScript = super.buildPythonPackage { |
|
162 | 162 | name = "PasteScript-2.0.2"; |
|
163 | 163 | buildInputs = with self; []; |
|
164 | 164 | doCheck = false; |
|
165 | 165 | propagatedBuildInputs = with self; [Paste PasteDeploy six]; |
|
166 | 166 | src = fetchurl { |
|
167 | 167 | url = "https://pypi.python.org/packages/e5/f0/78e766c3dcc61a4f3a6f71dd8c95168ae9c7a31722b5663d19c1fdf62cb6/PasteScript-2.0.2.tar.gz"; |
|
168 | 168 | md5 = "ccb3045445097192ca71a13b746c77b2"; |
|
169 | 169 | }; |
|
170 | 170 | meta = { |
|
171 | 171 | license = [ pkgs.lib.licenses.mit ]; |
|
172 | 172 | }; |
|
173 | 173 | }; |
|
174 | 174 | Pygments = super.buildPythonPackage { |
|
175 | 175 | name = "Pygments-2.2.0"; |
|
176 | 176 | buildInputs = with self; []; |
|
177 | 177 | doCheck = false; |
|
178 | 178 | propagatedBuildInputs = with self; []; |
|
179 | 179 | src = fetchurl { |
|
180 | 180 | url = "https://pypi.python.org/packages/71/2a/2e4e77803a8bd6408a2903340ac498cb0a2181811af7c9ec92cb70b0308a/Pygments-2.2.0.tar.gz"; |
|
181 | 181 | md5 = "13037baca42f16917cbd5ad2fab50844"; |
|
182 | 182 | }; |
|
183 | 183 | meta = { |
|
184 | 184 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
185 | 185 | }; |
|
186 | 186 | }; |
|
187 | 187 | Routes = super.buildPythonPackage { |
|
188 | 188 | name = "Routes-2.4.1"; |
|
189 | 189 | buildInputs = with self; []; |
|
190 | 190 | doCheck = false; |
|
191 | 191 | propagatedBuildInputs = with self; [six repoze.lru]; |
|
192 | 192 | src = fetchurl { |
|
193 | 193 | url = "https://pypi.python.org/packages/33/38/ea827837e68d9c7dde4cff7ec122a93c319f0effc08ce92a17095576603f/Routes-2.4.1.tar.gz"; |
|
194 | 194 | md5 = "c058dff6832941dec47e0d0052548ad8"; |
|
195 | 195 | }; |
|
196 | 196 | meta = { |
|
197 | 197 | license = [ pkgs.lib.licenses.mit ]; |
|
198 | 198 | }; |
|
199 | 199 | }; |
|
200 | 200 | SQLAlchemy = super.buildPythonPackage { |
|
201 | 201 | name = "SQLAlchemy-1.1.15"; |
|
202 | 202 | buildInputs = with self; []; |
|
203 | 203 | doCheck = false; |
|
204 | 204 | propagatedBuildInputs = with self; []; |
|
205 | 205 | src = fetchurl { |
|
206 | 206 | url = "https://pypi.python.org/packages/c2/f6/11fcc1ce19a7cb81b1c9377f4e27ce3813265611922e355905e57c44d164/SQLAlchemy-1.1.15.tar.gz"; |
|
207 | 207 | md5 = "077f9bd3339957f53068b5572a152674"; |
|
208 | 208 | }; |
|
209 | 209 | meta = { |
|
210 | 210 | license = [ pkgs.lib.licenses.mit ]; |
|
211 | 211 | }; |
|
212 | 212 | }; |
|
213 | 213 | Tempita = super.buildPythonPackage { |
|
214 | 214 | name = "Tempita-0.5.2"; |
|
215 | 215 | buildInputs = with self; []; |
|
216 | 216 | doCheck = false; |
|
217 | 217 | propagatedBuildInputs = with self; []; |
|
218 | 218 | src = fetchurl { |
|
219 | 219 | url = "https://pypi.python.org/packages/56/c8/8ed6eee83dbddf7b0fc64dd5d4454bc05e6ccaafff47991f73f2894d9ff4/Tempita-0.5.2.tar.gz"; |
|
220 | 220 | md5 = "4c2f17bb9d481821c41b6fbee904cea1"; |
|
221 | 221 | }; |
|
222 | 222 | meta = { |
|
223 | 223 | license = [ pkgs.lib.licenses.mit ]; |
|
224 | 224 | }; |
|
225 | 225 | }; |
|
226 | 226 | URLObject = super.buildPythonPackage { |
|
227 | 227 | name = "URLObject-2.4.0"; |
|
228 | 228 | buildInputs = with self; []; |
|
229 | 229 | doCheck = false; |
|
230 | 230 | propagatedBuildInputs = with self; []; |
|
231 | 231 | src = fetchurl { |
|
232 | 232 | url = "https://pypi.python.org/packages/cb/b6/e25e58500f9caef85d664bec71ec67c116897bfebf8622c32cb75d1ca199/URLObject-2.4.0.tar.gz"; |
|
233 | 233 | md5 = "2ed819738a9f0a3051f31dc9924e3065"; |
|
234 | 234 | }; |
|
235 | 235 | meta = { |
|
236 | 236 | license = [ ]; |
|
237 | 237 | }; |
|
238 | 238 | }; |
|
239 | 239 | WebError = super.buildPythonPackage { |
|
240 | 240 | name = "WebError-0.10.3"; |
|
241 | 241 | buildInputs = with self; []; |
|
242 | 242 | doCheck = false; |
|
243 | 243 | propagatedBuildInputs = with self; [WebOb Tempita Pygments Paste]; |
|
244 | 244 | src = fetchurl { |
|
245 | 245 | url = "https://pypi.python.org/packages/35/76/e7e5c2ce7e9c7f31b54c1ff295a495886d1279a002557d74dd8957346a79/WebError-0.10.3.tar.gz"; |
|
246 | 246 | md5 = "84b9990b0baae6fd440b1e60cdd06f9a"; |
|
247 | 247 | }; |
|
248 | 248 | meta = { |
|
249 | 249 | license = [ pkgs.lib.licenses.mit ]; |
|
250 | 250 | }; |
|
251 | 251 | }; |
|
252 | 252 | WebHelpers = super.buildPythonPackage { |
|
253 | 253 | name = "WebHelpers-1.3"; |
|
254 | 254 | buildInputs = with self; []; |
|
255 | 255 | doCheck = false; |
|
256 | 256 | propagatedBuildInputs = with self; [MarkupSafe]; |
|
257 | 257 | src = fetchurl { |
|
258 | 258 | url = "https://pypi.python.org/packages/ee/68/4d07672821d514184357f1552f2dad923324f597e722de3b016ca4f7844f/WebHelpers-1.3.tar.gz"; |
|
259 | 259 | md5 = "32749ffadfc40fea51075a7def32588b"; |
|
260 | 260 | }; |
|
261 | 261 | meta = { |
|
262 | 262 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
263 | 263 | }; |
|
264 | 264 | }; |
|
265 | 265 | WebHelpers2 = super.buildPythonPackage { |
|
266 | 266 | name = "WebHelpers2-2.0"; |
|
267 | 267 | buildInputs = with self; []; |
|
268 | 268 | doCheck = false; |
|
269 | 269 | propagatedBuildInputs = with self; [MarkupSafe six]; |
|
270 | 270 | src = fetchurl { |
|
271 | 271 | url = "https://pypi.python.org/packages/ff/30/56342c6ea522439e3662427c8d7b5e5b390dff4ff2dc92d8afcb8ab68b75/WebHelpers2-2.0.tar.gz"; |
|
272 | 272 | md5 = "0f6b68d70c12ee0aed48c00b24da13d3"; |
|
273 | 273 | }; |
|
274 | 274 | meta = { |
|
275 | 275 | license = [ pkgs.lib.licenses.mit ]; |
|
276 | 276 | }; |
|
277 | 277 | }; |
|
278 | 278 | WebOb = super.buildPythonPackage { |
|
279 | 279 | name = "WebOb-1.7.4"; |
|
280 | 280 | buildInputs = with self; []; |
|
281 | 281 | doCheck = false; |
|
282 | 282 | propagatedBuildInputs = with self; []; |
|
283 | 283 | src = fetchurl { |
|
284 | 284 | url = "https://pypi.python.org/packages/75/34/731e23f52371852dfe7490a61644826ba7fe70fd52a377aaca0f4956ba7f/WebOb-1.7.4.tar.gz"; |
|
285 | 285 | md5 = "397e46892d7f199b1a07eb20a2d3d9bd"; |
|
286 | 286 | }; |
|
287 | 287 | meta = { |
|
288 | 288 | license = [ pkgs.lib.licenses.mit ]; |
|
289 | 289 | }; |
|
290 | 290 | }; |
|
291 | 291 | WebTest = super.buildPythonPackage { |
|
292 | 292 | name = "WebTest-2.0.29"; |
|
293 | 293 | buildInputs = with self; []; |
|
294 | 294 | doCheck = false; |
|
295 | 295 | propagatedBuildInputs = with self; [six WebOb waitress beautifulsoup4]; |
|
296 | 296 | src = fetchurl { |
|
297 | 297 | url = "https://pypi.python.org/packages/94/de/8f94738be649997da99c47b104aa3c3984ecec51a1d8153ed09638253d56/WebTest-2.0.29.tar.gz"; |
|
298 | 298 | md5 = "30b4cf0d340b9a5335fac4389e6f84fc"; |
|
299 | 299 | }; |
|
300 | 300 | meta = { |
|
301 | 301 | license = [ pkgs.lib.licenses.mit ]; |
|
302 | 302 | }; |
|
303 | 303 | }; |
|
304 | 304 | Whoosh = super.buildPythonPackage { |
|
305 | 305 | name = "Whoosh-2.7.4"; |
|
306 | 306 | buildInputs = with self; []; |
|
307 | 307 | doCheck = false; |
|
308 | 308 | propagatedBuildInputs = with self; []; |
|
309 | 309 | src = fetchurl { |
|
310 | 310 | url = "https://pypi.python.org/packages/25/2b/6beed2107b148edc1321da0d489afc4617b9ed317ef7b72d4993cad9b684/Whoosh-2.7.4.tar.gz"; |
|
311 | 311 | md5 = "c2710105f20b3e29936bd2357383c325"; |
|
312 | 312 | }; |
|
313 | 313 | meta = { |
|
314 | 314 | license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.bsd2 ]; |
|
315 | 315 | }; |
|
316 | 316 | }; |
|
317 | 317 | alembic = super.buildPythonPackage { |
|
318 | 318 | name = "alembic-0.9.8"; |
|
319 | 319 | buildInputs = with self; []; |
|
320 | 320 | doCheck = false; |
|
321 | 321 | propagatedBuildInputs = with self; [SQLAlchemy Mako python-editor python-dateutil]; |
|
322 | 322 | src = fetchurl { |
|
323 | 323 | url = "https://pypi.python.org/packages/a1/95/2252783859df9ec76b9a25d968c2827ed75a43ba34c6e8d38f87a5c0fb26/alembic-0.9.8.tar.gz"; |
|
324 | 324 | md5 = "5cfef58641c9a94d4a5d547e951a7dda"; |
|
325 | 325 | }; |
|
326 | 326 | meta = { |
|
327 | 327 | license = [ pkgs.lib.licenses.mit ]; |
|
328 | 328 | }; |
|
329 | 329 | }; |
|
330 | 330 | amqp = super.buildPythonPackage { |
|
331 | 331 | name = "amqp-2.2.2"; |
|
332 | 332 | buildInputs = with self; []; |
|
333 | 333 | doCheck = false; |
|
334 | 334 | propagatedBuildInputs = with self; [vine]; |
|
335 | 335 | src = fetchurl { |
|
336 | 336 | url = "https://pypi.python.org/packages/e0/70/9ab9ccd8247fb7d2adb717e9f6a0ed358c9e1ab2c349048b0352f9e80ee2/amqp-2.2.2.tar.gz"; |
|
337 | 337 | md5 = "0971a3fd2d635ded45c349cfc17106bd"; |
|
338 | 338 | }; |
|
339 | 339 | meta = { |
|
340 | 340 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
341 | 341 | }; |
|
342 | 342 | }; |
|
343 | 343 | appenlight-client = super.buildPythonPackage { |
|
344 | 344 | name = "appenlight-client-0.6.25"; |
|
345 | 345 | buildInputs = with self; []; |
|
346 | 346 | doCheck = false; |
|
347 | 347 | propagatedBuildInputs = with self; [WebOb requests six]; |
|
348 | 348 | src = fetchurl { |
|
349 | 349 | url = "https://pypi.python.org/packages/fa/44/2911ef85ea4f4fe65058fd22959d8dad598fab6a3c84e5bcb569d15c8783/appenlight_client-0.6.25.tar.gz"; |
|
350 | 350 | md5 = "76dd2f9d42659fae8f290982078dc880"; |
|
351 | 351 | }; |
|
352 | 352 | meta = { |
|
353 | 353 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
354 | 354 | }; |
|
355 | 355 | }; |
|
356 | 356 | authomatic = super.buildPythonPackage { |
|
357 | 357 | name = "authomatic-0.1.0.post1"; |
|
358 | 358 | buildInputs = with self; []; |
|
359 | 359 | doCheck = false; |
|
360 | 360 | propagatedBuildInputs = with self; []; |
|
361 | 361 | src = fetchurl { |
|
362 | 362 | url = "https://pypi.python.org/packages/08/1a/8a930461e604c2d5a7a871e1ac59fa82ccf994c32e807230c8d2fb07815a/Authomatic-0.1.0.post1.tar.gz"; |
|
363 | 363 | md5 = "be3f3ce08747d776aae6d6cc8dcb49a9"; |
|
364 | 364 | }; |
|
365 | 365 | meta = { |
|
366 | 366 | license = [ pkgs.lib.licenses.mit ]; |
|
367 | 367 | }; |
|
368 | 368 | }; |
|
369 | 369 | backports.shutil-get-terminal-size = super.buildPythonPackage { |
|
370 | 370 | name = "backports.shutil-get-terminal-size-1.0.0"; |
|
371 | 371 | buildInputs = with self; []; |
|
372 | 372 | doCheck = false; |
|
373 | 373 | propagatedBuildInputs = with self; []; |
|
374 | 374 | src = fetchurl { |
|
375 | 375 | url = "https://pypi.python.org/packages/ec/9c/368086faa9c016efce5da3e0e13ba392c9db79e3ab740b763fe28620b18b/backports.shutil_get_terminal_size-1.0.0.tar.gz"; |
|
376 | 376 | md5 = "03267762480bd86b50580dc19dff3c66"; |
|
377 | 377 | }; |
|
378 | 378 | meta = { |
|
379 | 379 | license = [ pkgs.lib.licenses.mit ]; |
|
380 | 380 | }; |
|
381 | 381 | }; |
|
382 | 382 | beautifulsoup4 = super.buildPythonPackage { |
|
383 | 383 | name = "beautifulsoup4-4.6.0"; |
|
384 | 384 | buildInputs = with self; []; |
|
385 | 385 | doCheck = false; |
|
386 | 386 | propagatedBuildInputs = with self; []; |
|
387 | 387 | src = fetchurl { |
|
388 | 388 | url = "https://pypi.python.org/packages/fa/8d/1d14391fdaed5abada4e0f63543fef49b8331a34ca60c88bd521bcf7f782/beautifulsoup4-4.6.0.tar.gz"; |
|
389 | 389 | md5 = "c17714d0f91a23b708a592cb3c697728"; |
|
390 | 390 | }; |
|
391 | 391 | meta = { |
|
392 | 392 | license = [ pkgs.lib.licenses.mit ]; |
|
393 | 393 | }; |
|
394 | 394 | }; |
|
395 | 395 | billiard = super.buildPythonPackage { |
|
396 | 396 | name = "billiard-3.5.0.3"; |
|
397 | 397 | buildInputs = with self; []; |
|
398 | 398 | doCheck = false; |
|
399 | 399 | propagatedBuildInputs = with self; []; |
|
400 | 400 | src = fetchurl { |
|
401 | 401 | url = "https://pypi.python.org/packages/39/ac/f5571210cca2e4f4532e38aaff242f26c8654c5e2436bee966c230647ccc/billiard-3.5.0.3.tar.gz"; |
|
402 | 402 | md5 = "113ba481e48400adbf6fbbf59a2f8554"; |
|
403 | 403 | }; |
|
404 | 404 | meta = { |
|
405 | 405 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
406 | 406 | }; |
|
407 | 407 | }; |
|
408 | 408 | bleach = super.buildPythonPackage { |
|
409 | 409 | name = "bleach-2.1.2"; |
|
410 | 410 | buildInputs = with self; []; |
|
411 | 411 | doCheck = false; |
|
412 | 412 | propagatedBuildInputs = with self; [six html5lib]; |
|
413 | 413 | src = fetchurl { |
|
414 | 414 | url = "https://pypi.python.org/packages/b3/5f/0da670d30d3ffbc57cc97fa82947f81bbe3eab8d441e2d42e661f215baf2/bleach-2.1.2.tar.gz"; |
|
415 | 415 | md5 = "d0b14ae43a437ee0c650e04c6063eedd"; |
|
416 | 416 | }; |
|
417 | 417 | meta = { |
|
418 | 418 | license = [ pkgs.lib.licenses.asl20 ]; |
|
419 | 419 | }; |
|
420 | 420 | }; |
|
421 | 421 | bottle = super.buildPythonPackage { |
|
422 | 422 | name = "bottle-0.12.13"; |
|
423 | 423 | buildInputs = with self; []; |
|
424 | 424 | doCheck = false; |
|
425 | 425 | propagatedBuildInputs = with self; []; |
|
426 | 426 | src = fetchurl { |
|
427 | 427 | url = "https://pypi.python.org/packages/bd/99/04dc59ced52a8261ee0f965a8968717a255ea84a36013e527944dbf3468c/bottle-0.12.13.tar.gz"; |
|
428 | 428 | md5 = "d2fe1b48c1d49217e78bf326b1cad437"; |
|
429 | 429 | }; |
|
430 | 430 | meta = { |
|
431 | 431 | license = [ pkgs.lib.licenses.mit ]; |
|
432 | 432 | }; |
|
433 | 433 | }; |
|
434 | 434 | bumpversion = super.buildPythonPackage { |
|
435 | 435 | name = "bumpversion-0.5.3"; |
|
436 | 436 | buildInputs = with self; []; |
|
437 | 437 | doCheck = false; |
|
438 | 438 | propagatedBuildInputs = with self; []; |
|
439 | 439 | src = fetchurl { |
|
440 | 440 | url = "https://pypi.python.org/packages/14/41/8c9da3549f8e00c84f0432c3a8cf8ed6898374714676aab91501d48760db/bumpversion-0.5.3.tar.gz"; |
|
441 | 441 | md5 = "c66a3492eafcf5ad4b024be9fca29820"; |
|
442 | 442 | }; |
|
443 | 443 | meta = { |
|
444 | 444 | license = [ pkgs.lib.licenses.mit ]; |
|
445 | 445 | }; |
|
446 | 446 | }; |
|
447 | 447 | celery = super.buildPythonPackage { |
|
448 | 448 | name = "celery-4.1.0"; |
|
449 | 449 | buildInputs = with self; []; |
|
450 | 450 | doCheck = false; |
|
451 | 451 | propagatedBuildInputs = with self; [pytz billiard kombu]; |
|
452 | 452 | src = fetchurl { |
|
453 | 453 | url = "https://pypi.python.org/packages/07/65/88a2a45fc80f487872c93121a701a53bbbc3d3d832016876fac84fc8d46a/celery-4.1.0.tar.gz"; |
|
454 | 454 | md5 = "db91e1d26936381127f01e150fe3054a"; |
|
455 | 455 | }; |
|
456 | 456 | meta = { |
|
457 | 457 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
458 | 458 | }; |
|
459 | 459 | }; |
|
460 | 460 | channelstream = super.buildPythonPackage { |
|
461 | 461 | name = "channelstream-0.5.2"; |
|
462 | 462 | buildInputs = with self; []; |
|
463 | 463 | doCheck = false; |
|
464 | 464 | propagatedBuildInputs = with self; [gevent ws4py pyramid pyramid-jinja2 itsdangerous requests six]; |
|
465 | 465 | src = fetchurl { |
|
466 | 466 | url = "https://pypi.python.org/packages/2b/31/29a8e085cf5bf97fa88e7b947adabfc581a18a3463adf77fb6dada34a65f/channelstream-0.5.2.tar.gz"; |
|
467 | 467 | md5 = "1c5eb2a8a405be6f1073da94da6d81d3"; |
|
468 | 468 | }; |
|
469 | 469 | meta = { |
|
470 | 470 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
471 | 471 | }; |
|
472 | 472 | }; |
|
473 | 473 | click = super.buildPythonPackage { |
|
474 | 474 | name = "click-6.6"; |
|
475 | 475 | buildInputs = with self; []; |
|
476 | 476 | doCheck = false; |
|
477 | 477 | propagatedBuildInputs = with self; []; |
|
478 | 478 | src = fetchurl { |
|
479 | 479 | url = "https://pypi.python.org/packages/7a/00/c14926d8232b36b08218067bcd5853caefb4737cda3f0a47437151344792/click-6.6.tar.gz"; |
|
480 | 480 | md5 = "d0b09582123605220ad6977175f3e51d"; |
|
481 | 481 | }; |
|
482 | 482 | meta = { |
|
483 | 483 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
484 | 484 | }; |
|
485 | 485 | }; |
|
486 | 486 | colander = super.buildPythonPackage { |
|
487 | 487 | name = "colander-1.4"; |
|
488 | 488 | buildInputs = with self; []; |
|
489 | 489 | doCheck = false; |
|
490 | 490 | propagatedBuildInputs = with self; [translationstring iso8601]; |
|
491 | 491 | src = fetchurl { |
|
492 | 492 | url = "https://pypi.python.org/packages/cc/e2/c4e716ac4a426d8ad4dfe306c34f0018a22275d2420815784005bf771c84/colander-1.4.tar.gz"; |
|
493 | 493 | md5 = "cbb8e403c2ba05aeaa419d51fdb93736"; |
|
494 | 494 | }; |
|
495 | 495 | meta = { |
|
496 | 496 | license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ]; |
|
497 | 497 | }; |
|
498 | 498 | }; |
|
499 | 499 | configobj = super.buildPythonPackage { |
|
500 | 500 | name = "configobj-5.0.6"; |
|
501 | 501 | buildInputs = with self; []; |
|
502 | 502 | doCheck = false; |
|
503 | 503 | propagatedBuildInputs = with self; [six]; |
|
504 | 504 | src = fetchurl { |
|
505 | 505 | url = "https://pypi.python.org/packages/64/61/079eb60459c44929e684fa7d9e2fdca403f67d64dd9dbac27296be2e0fab/configobj-5.0.6.tar.gz"; |
|
506 | 506 | md5 = "e472a3a1c2a67bb0ec9b5d54c13a47d6"; |
|
507 | 507 | }; |
|
508 | 508 | meta = { |
|
509 | 509 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
510 | 510 | }; |
|
511 | 511 | }; |
|
512 | 512 | configparser = super.buildPythonPackage { |
|
513 | 513 | name = "configparser-3.5.0"; |
|
514 | 514 | buildInputs = with self; []; |
|
515 | 515 | doCheck = false; |
|
516 | 516 | propagatedBuildInputs = with self; []; |
|
517 | 517 | src = fetchurl { |
|
518 | 518 | url = "https://pypi.python.org/packages/7c/69/c2ce7e91c89dc073eb1aa74c0621c3eefbffe8216b3f9af9d3885265c01c/configparser-3.5.0.tar.gz"; |
|
519 | 519 | md5 = "cfdd915a5b7a6c09917a64a573140538"; |
|
520 | 520 | }; |
|
521 | 521 | meta = { |
|
522 | 522 | license = [ pkgs.lib.licenses.mit ]; |
|
523 | 523 | }; |
|
524 | 524 | }; |
|
525 | 525 | cov-core = super.buildPythonPackage { |
|
526 | 526 | name = "cov-core-1.15.0"; |
|
527 | 527 | buildInputs = with self; []; |
|
528 | 528 | doCheck = false; |
|
529 | 529 | propagatedBuildInputs = with self; [coverage]; |
|
530 | 530 | src = fetchurl { |
|
531 | 531 | url = "https://pypi.python.org/packages/4b/87/13e75a47b4ba1be06f29f6d807ca99638bedc6b57fa491cd3de891ca2923/cov-core-1.15.0.tar.gz"; |
|
532 | 532 | md5 = "f519d4cb4c4e52856afb14af52919fe6"; |
|
533 | 533 | }; |
|
534 | 534 | meta = { |
|
535 | 535 | license = [ pkgs.lib.licenses.mit ]; |
|
536 | 536 | }; |
|
537 | 537 | }; |
|
538 | 538 | coverage = super.buildPythonPackage { |
|
539 | 539 | name = "coverage-3.7.1"; |
|
540 | 540 | buildInputs = with self; []; |
|
541 | 541 | doCheck = false; |
|
542 | 542 | propagatedBuildInputs = with self; []; |
|
543 | 543 | src = fetchurl { |
|
544 | 544 | url = "https://pypi.python.org/packages/09/4f/89b06c7fdc09687bca507dc411c342556ef9c5a3b26756137a4878ff19bf/coverage-3.7.1.tar.gz"; |
|
545 | 545 | md5 = "c47b36ceb17eaff3ecfab3bcd347d0df"; |
|
546 | 546 | }; |
|
547 | 547 | meta = { |
|
548 | 548 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
549 | 549 | }; |
|
550 | 550 | }; |
|
551 | 551 | cssselect = super.buildPythonPackage { |
|
552 | 552 | name = "cssselect-1.0.1"; |
|
553 | 553 | buildInputs = with self; []; |
|
554 | 554 | doCheck = false; |
|
555 | 555 | propagatedBuildInputs = with self; []; |
|
556 | 556 | src = fetchurl { |
|
557 | 557 | url = "https://pypi.python.org/packages/77/ff/9c865275cd19290feba56344eba570e719efb7ca5b34d67ed12b22ebbb0d/cssselect-1.0.1.tar.gz"; |
|
558 | 558 | md5 = "3fa03bf82a9f0b1223c0f1eb1369e139"; |
|
559 | 559 | }; |
|
560 | 560 | meta = { |
|
561 | 561 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
562 | 562 | }; |
|
563 | 563 | }; |
|
564 | 564 | decorator = super.buildPythonPackage { |
|
565 | 565 | name = "decorator-4.1.2"; |
|
566 | 566 | buildInputs = with self; []; |
|
567 | 567 | doCheck = false; |
|
568 | 568 | propagatedBuildInputs = with self; []; |
|
569 | 569 | src = fetchurl { |
|
570 | 570 | url = "https://pypi.python.org/packages/bb/e0/f6e41e9091e130bf16d4437dabbac3993908e4d6485ecbc985ef1352db94/decorator-4.1.2.tar.gz"; |
|
571 | 571 | md5 = "a0f7f4fe00ae2dde93494d90c192cf8c"; |
|
572 | 572 | }; |
|
573 | 573 | meta = { |
|
574 | 574 | license = [ pkgs.lib.licenses.bsdOriginal { fullName = "new BSD License"; } ]; |
|
575 | 575 | }; |
|
576 | 576 | }; |
|
577 | 577 | deform = super.buildPythonPackage { |
|
578 | 578 | name = "deform-2.0.4"; |
|
579 | 579 | buildInputs = with self; []; |
|
580 | 580 | doCheck = false; |
|
581 | 581 | propagatedBuildInputs = with self; [Chameleon colander iso8601 peppercorn translationstring zope.deprecation]; |
|
582 | 582 | src = fetchurl { |
|
583 | 583 | url = "https://pypi.python.org/packages/66/3b/eefcb07abcab7a97f6665aa2d0cf1af741d9d6e78a2e4657fd2b89f89880/deform-2.0.4.tar.gz"; |
|
584 | 584 | md5 = "34756e42cf50dd4b4430809116c4ec0a"; |
|
585 | 585 | }; |
|
586 | 586 | meta = { |
|
587 | 587 | license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ]; |
|
588 | 588 | }; |
|
589 | 589 | }; |
|
590 | 590 | docutils = super.buildPythonPackage { |
|
591 | 591 | name = "docutils-0.14"; |
|
592 | 592 | buildInputs = with self; []; |
|
593 | 593 | doCheck = false; |
|
594 | 594 | propagatedBuildInputs = with self; []; |
|
595 | 595 | src = fetchurl { |
|
596 | 596 | url = "https://pypi.python.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-0.14.tar.gz"; |
|
597 | 597 | md5 = "c53768d63db3873b7d452833553469de"; |
|
598 | 598 | }; |
|
599 | 599 | meta = { |
|
600 | 600 | 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 ]; |
|
601 | 601 | }; |
|
602 | 602 | }; |
|
603 | 603 | dogpile.cache = super.buildPythonPackage { |
|
604 | 604 | name = "dogpile.cache-0.6.4"; |
|
605 | 605 | buildInputs = with self; []; |
|
606 | 606 | doCheck = false; |
|
607 | 607 | propagatedBuildInputs = with self; []; |
|
608 | 608 | src = fetchurl { |
|
609 | 609 | url = "https://pypi.python.org/packages/b6/3d/35c05ca01c070bb70d9d422f2c4858ecb021b05b21af438fec5ccd7b945c/dogpile.cache-0.6.4.tar.gz"; |
|
610 | 610 | md5 = "66e0a6cae6c08cb1ea25f89d0eadfeb0"; |
|
611 | 611 | }; |
|
612 | 612 | meta = { |
|
613 | 613 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
614 | 614 | }; |
|
615 | 615 | }; |
|
616 | 616 | dogpile.core = super.buildPythonPackage { |
|
617 | 617 | name = "dogpile.core-0.4.1"; |
|
618 | 618 | buildInputs = with self; []; |
|
619 | 619 | doCheck = false; |
|
620 | 620 | propagatedBuildInputs = with self; []; |
|
621 | 621 | src = fetchurl { |
|
622 | 622 | url = "https://pypi.python.org/packages/0e/77/e72abc04c22aedf874301861e5c1e761231c288b5de369c18be8f4b5c9bb/dogpile.core-0.4.1.tar.gz"; |
|
623 | 623 | md5 = "01cb19f52bba3e95c9b560f39341f045"; |
|
624 | 624 | }; |
|
625 | 625 | meta = { |
|
626 | 626 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
627 | 627 | }; |
|
628 | 628 | }; |
|
629 | 629 | ecdsa = super.buildPythonPackage { |
|
630 | 630 | name = "ecdsa-0.13"; |
|
631 | 631 | buildInputs = with self; []; |
|
632 | 632 | doCheck = false; |
|
633 | 633 | propagatedBuildInputs = with self; []; |
|
634 | 634 | src = fetchurl { |
|
635 | 635 | url = "https://pypi.python.org/packages/f9/e5/99ebb176e47f150ac115ffeda5fedb6a3dbb3c00c74a59fd84ddf12f5857/ecdsa-0.13.tar.gz"; |
|
636 | 636 | md5 = "1f60eda9cb5c46722856db41a3ae6670"; |
|
637 | 637 | }; |
|
638 | 638 | meta = { |
|
639 | 639 | license = [ pkgs.lib.licenses.mit ]; |
|
640 | 640 | }; |
|
641 | 641 | }; |
|
642 | 642 | elasticsearch = super.buildPythonPackage { |
|
643 | 643 | name = "elasticsearch-2.3.0"; |
|
644 | 644 | buildInputs = with self; []; |
|
645 | 645 | doCheck = false; |
|
646 | 646 | propagatedBuildInputs = with self; [urllib3]; |
|
647 | 647 | src = fetchurl { |
|
648 | 648 | url = "https://pypi.python.org/packages/10/35/5fd52c5f0b0ee405ed4b5195e8bce44c5e041787680dc7b94b8071cac600/elasticsearch-2.3.0.tar.gz"; |
|
649 | 649 | md5 = "2550f3b51629cf1ef9636608af92c340"; |
|
650 | 650 | }; |
|
651 | 651 | meta = { |
|
652 | 652 | license = [ pkgs.lib.licenses.asl20 ]; |
|
653 | 653 | }; |
|
654 | 654 | }; |
|
655 | 655 | elasticsearch-dsl = super.buildPythonPackage { |
|
656 | 656 | name = "elasticsearch-dsl-2.2.0"; |
|
657 | 657 | buildInputs = with self; []; |
|
658 | 658 | doCheck = false; |
|
659 | 659 | propagatedBuildInputs = with self; [six python-dateutil elasticsearch]; |
|
660 | 660 | src = fetchurl { |
|
661 | 661 | url = "https://pypi.python.org/packages/66/2f/52a086968788e58461641570f45c3207a52d46ebbe9b77dc22b6a8ffda66/elasticsearch-dsl-2.2.0.tar.gz"; |
|
662 | 662 | md5 = "fa6bd3c87ea3caa8f0f051bc37c53221"; |
|
663 | 663 | }; |
|
664 | 664 | meta = { |
|
665 | 665 | license = [ pkgs.lib.licenses.asl20 ]; |
|
666 | 666 | }; |
|
667 | 667 | }; |
|
668 | 668 | entrypoints = super.buildPythonPackage { |
|
669 | 669 | name = "entrypoints-0.2.2"; |
|
670 | 670 | buildInputs = with self; []; |
|
671 | 671 | doCheck = false; |
|
672 | 672 | propagatedBuildInputs = with self; [configparser]; |
|
673 | 673 | src = fetchurl { |
|
674 | 674 | url = "https://code.rhodecode.com/upstream/entrypoints/archive/96e6d645684e1af3d7df5b5272f3fe85a546b233.tar.gz?md5=7db37771aea9ac9fefe093e5d6987313"; |
|
675 | 675 | md5 = "7db37771aea9ac9fefe093e5d6987313"; |
|
676 | 676 | }; |
|
677 | 677 | meta = { |
|
678 | 678 | license = [ pkgs.lib.licenses.mit ]; |
|
679 | 679 | }; |
|
680 | 680 | }; |
|
681 | 681 | enum34 = super.buildPythonPackage { |
|
682 | 682 | name = "enum34-1.1.6"; |
|
683 | 683 | buildInputs = with self; []; |
|
684 | 684 | doCheck = false; |
|
685 | 685 | propagatedBuildInputs = with self; []; |
|
686 | 686 | src = fetchurl { |
|
687 | 687 | url = "https://pypi.python.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz"; |
|
688 | 688 | md5 = "5f13a0841a61f7fc295c514490d120d0"; |
|
689 | 689 | }; |
|
690 | 690 | meta = { |
|
691 | 691 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
692 | 692 | }; |
|
693 | 693 | }; |
|
694 | 694 | funcsigs = super.buildPythonPackage { |
|
695 | 695 | name = "funcsigs-1.0.2"; |
|
696 | 696 | buildInputs = with self; []; |
|
697 | 697 | doCheck = false; |
|
698 | 698 | propagatedBuildInputs = with self; []; |
|
699 | 699 | src = fetchurl { |
|
700 | 700 | url = "https://pypi.python.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz"; |
|
701 | 701 | md5 = "7e583285b1fb8a76305d6d68f4ccc14e"; |
|
702 | 702 | }; |
|
703 | 703 | meta = { |
|
704 | 704 | license = [ { fullName = "ASL"; } pkgs.lib.licenses.asl20 ]; |
|
705 | 705 | }; |
|
706 | 706 | }; |
|
707 | 707 | functools32 = super.buildPythonPackage { |
|
708 | 708 | name = "functools32-3.2.3.post2"; |
|
709 | 709 | buildInputs = with self; []; |
|
710 | 710 | doCheck = false; |
|
711 | 711 | propagatedBuildInputs = with self; []; |
|
712 | 712 | src = fetchurl { |
|
713 | 713 | url = "https://pypi.python.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db/functools32-3.2.3-2.tar.gz"; |
|
714 | 714 | md5 = "09f24ffd9af9f6cd0f63cb9f4e23d4b2"; |
|
715 | 715 | }; |
|
716 | 716 | meta = { |
|
717 | 717 | license = [ pkgs.lib.licenses.psfl ]; |
|
718 | 718 | }; |
|
719 | 719 | }; |
|
720 | 720 | future = super.buildPythonPackage { |
|
721 | 721 | name = "future-0.14.3"; |
|
722 | 722 | buildInputs = with self; []; |
|
723 | 723 | doCheck = false; |
|
724 | 724 | propagatedBuildInputs = with self; []; |
|
725 | 725 | src = fetchurl { |
|
726 | 726 | url = "https://pypi.python.org/packages/83/80/8ef3a11a15f8eaafafa0937b20c1b3f73527e69ab6b3fa1cf94a5a96aabb/future-0.14.3.tar.gz"; |
|
727 | 727 | md5 = "e94079b0bd1fc054929e8769fc0f6083"; |
|
728 | 728 | }; |
|
729 | 729 | meta = { |
|
730 | 730 | license = [ { fullName = "OSI Approved"; } pkgs.lib.licenses.mit ]; |
|
731 | 731 | }; |
|
732 | 732 | }; |
|
733 | 733 | futures = super.buildPythonPackage { |
|
734 | 734 | name = "futures-3.0.2"; |
|
735 | 735 | buildInputs = with self; []; |
|
736 | 736 | doCheck = false; |
|
737 | 737 | propagatedBuildInputs = with self; []; |
|
738 | 738 | src = fetchurl { |
|
739 | 739 | url = "https://pypi.python.org/packages/f8/e7/fc0fcbeb9193ba2d4de00b065e7fd5aecd0679e93ce95a07322b2b1434f4/futures-3.0.2.tar.gz"; |
|
740 | 740 | md5 = "42aaf1e4de48d6e871d77dc1f9d96d5a"; |
|
741 | 741 | }; |
|
742 | 742 | meta = { |
|
743 | 743 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
744 | 744 | }; |
|
745 | 745 | }; |
|
746 | 746 | gevent = super.buildPythonPackage { |
|
747 | 747 | name = "gevent-1.2.2"; |
|
748 | 748 | buildInputs = with self; []; |
|
749 | 749 | doCheck = false; |
|
750 | 750 | propagatedBuildInputs = with self; [greenlet]; |
|
751 | 751 | src = fetchurl { |
|
752 | 752 | url = "https://pypi.python.org/packages/1b/92/b111f76e54d2be11375b47b213b56687214f258fd9dae703546d30b837be/gevent-1.2.2.tar.gz"; |
|
753 | 753 | md5 = "7f0baf355384fe5ff2ecf66853422554"; |
|
754 | 754 | }; |
|
755 | 755 | meta = { |
|
756 | 756 | license = [ pkgs.lib.licenses.mit ]; |
|
757 | 757 | }; |
|
758 | 758 | }; |
|
759 | 759 | gnureadline = super.buildPythonPackage { |
|
760 | 760 | name = "gnureadline-6.3.8"; |
|
761 | 761 | buildInputs = with self; []; |
|
762 | 762 | doCheck = false; |
|
763 | 763 | propagatedBuildInputs = with self; []; |
|
764 | 764 | src = fetchurl { |
|
765 | 765 | url = "https://pypi.python.org/packages/50/64/86085c823cd78f9df9d8e33dce0baa71618016f8860460b82cf6610e1eb3/gnureadline-6.3.8.tar.gz"; |
|
766 | 766 | md5 = "ba341f4b907250bd1f47dbc06290604f"; |
|
767 | 767 | }; |
|
768 | 768 | meta = { |
|
769 | 769 | license = [ { fullName = "GNU General Public License v3 (GPLv3)"; } pkgs.lib.licenses.gpl1 ]; |
|
770 | 770 | }; |
|
771 | 771 | }; |
|
772 | 772 | gprof2dot = super.buildPythonPackage { |
|
773 | 773 | name = "gprof2dot-2017.9.19"; |
|
774 | 774 | buildInputs = with self; []; |
|
775 | 775 | doCheck = false; |
|
776 | 776 | propagatedBuildInputs = with self; []; |
|
777 | 777 | src = fetchurl { |
|
778 | 778 | url = "https://pypi.python.org/packages/9d/36/f977122502979f3dfb50704979c9ed70e6b620787942b089bf1af15f5aba/gprof2dot-2017.9.19.tar.gz"; |
|
779 | 779 | md5 = "cda2d552bb0d0b9f16e6824a9aabd225"; |
|
780 | 780 | }; |
|
781 | 781 | meta = { |
|
782 | 782 | license = [ { fullName = "GNU Lesser General Public License v3 or later (LGPLv3+)"; } { fullName = "LGPL"; } ]; |
|
783 | 783 | }; |
|
784 | 784 | }; |
|
785 | 785 | graphviz = super.buildPythonPackage { |
|
786 | 786 | name = "graphviz-0.8.2"; |
|
787 | 787 | buildInputs = with self; []; |
|
788 | 788 | doCheck = false; |
|
789 | 789 | propagatedBuildInputs = with self; []; |
|
790 | 790 | src = fetchurl { |
|
791 | 791 | url = "https://pypi.python.org/packages/fa/d1/63b62dee9e55368f60b5ea445e6afb361bb47e692fc27553f3672e16efb8/graphviz-0.8.2.zip"; |
|
792 | 792 | md5 = "50866e780f43e1cb0d073c70424fcaff"; |
|
793 | 793 | }; |
|
794 | 794 | meta = { |
|
795 | 795 | license = [ pkgs.lib.licenses.mit ]; |
|
796 | 796 | }; |
|
797 | 797 | }; |
|
798 | 798 | greenlet = super.buildPythonPackage { |
|
799 | 799 | name = "greenlet-0.4.13"; |
|
800 | 800 | buildInputs = with self; []; |
|
801 | 801 | doCheck = false; |
|
802 | 802 | propagatedBuildInputs = with self; []; |
|
803 | 803 | src = fetchurl { |
|
804 | 804 | url = "https://pypi.python.org/packages/13/de/ba92335e9e76040ca7274224942282a80d54f85e342a5e33c5277c7f87eb/greenlet-0.4.13.tar.gz"; |
|
805 | 805 | md5 = "6e0b9dd5385f81d478451ec8ed1d62b3"; |
|
806 | 806 | }; |
|
807 | 807 | meta = { |
|
808 | 808 | license = [ pkgs.lib.licenses.mit ]; |
|
809 | 809 | }; |
|
810 | 810 | }; |
|
811 | 811 | gunicorn = super.buildPythonPackage { |
|
812 | 812 | name = "gunicorn-19.7.1"; |
|
813 | 813 | buildInputs = with self; []; |
|
814 | 814 | doCheck = false; |
|
815 | 815 | propagatedBuildInputs = with self; []; |
|
816 | 816 | src = fetchurl { |
|
817 | 817 | url = "https://pypi.python.org/packages/30/3a/10bb213cede0cc4d13ac2263316c872a64bf4c819000c8ccd801f1d5f822/gunicorn-19.7.1.tar.gz"; |
|
818 | 818 | md5 = "174d3c3cd670a5be0404d84c484e590c"; |
|
819 | 819 | }; |
|
820 | 820 | meta = { |
|
821 | 821 | license = [ pkgs.lib.licenses.mit ]; |
|
822 | 822 | }; |
|
823 | 823 | }; |
|
824 | 824 | html5lib = super.buildPythonPackage { |
|
825 | 825 | name = "html5lib-1.0.1"; |
|
826 | 826 | buildInputs = with self; []; |
|
827 | 827 | doCheck = false; |
|
828 | 828 | propagatedBuildInputs = with self; [six webencodings]; |
|
829 | 829 | src = fetchurl { |
|
830 | 830 | url = "https://pypi.python.org/packages/85/3e/cf449cf1b5004e87510b9368e7a5f1acd8831c2d6691edd3c62a0823f98f/html5lib-1.0.1.tar.gz"; |
|
831 | 831 | md5 = "942a0688d6bdf20d087c9805c40182ad"; |
|
832 | 832 | }; |
|
833 | 833 | meta = { |
|
834 | 834 | license = [ pkgs.lib.licenses.mit ]; |
|
835 | 835 | }; |
|
836 | 836 | }; |
|
837 | 837 | hupper = super.buildPythonPackage { |
|
838 | 838 | name = "hupper-1.0"; |
|
839 | 839 | buildInputs = with self; []; |
|
840 | 840 | doCheck = false; |
|
841 | 841 | propagatedBuildInputs = with self; []; |
|
842 | 842 | src = fetchurl { |
|
843 | 843 | url = "https://pypi.python.org/packages/2e/07/df892c564dc09bb3cf6f6deb976c26adf9117db75ba218cb4353dbc9d826/hupper-1.0.tar.gz"; |
|
844 | 844 | md5 = "26e77da7d5ac5858f59af050d1a6eb5a"; |
|
845 | 845 | }; |
|
846 | 846 | meta = { |
|
847 | 847 | license = [ pkgs.lib.licenses.mit ]; |
|
848 | 848 | }; |
|
849 | 849 | }; |
|
850 | 850 | infrae.cache = super.buildPythonPackage { |
|
851 | 851 | name = "infrae.cache-1.0.1"; |
|
852 | 852 | buildInputs = with self; []; |
|
853 | 853 | doCheck = false; |
|
854 | 854 | propagatedBuildInputs = with self; [Beaker repoze.lru]; |
|
855 | 855 | src = fetchurl { |
|
856 | 856 | url = "https://pypi.python.org/packages/bb/f0/e7d5e984cf6592fd2807dc7bc44a93f9d18e04e6a61f87fdfb2622422d74/infrae.cache-1.0.1.tar.gz"; |
|
857 | 857 | md5 = "b09076a766747e6ed2a755cc62088e32"; |
|
858 | 858 | }; |
|
859 | 859 | meta = { |
|
860 | 860 | license = [ pkgs.lib.licenses.zpt21 ]; |
|
861 | 861 | }; |
|
862 | 862 | }; |
|
863 | 863 | invoke = super.buildPythonPackage { |
|
864 | 864 | name = "invoke-0.13.0"; |
|
865 | 865 | buildInputs = with self; []; |
|
866 | 866 | doCheck = false; |
|
867 | 867 | propagatedBuildInputs = with self; []; |
|
868 | 868 | src = fetchurl { |
|
869 | 869 | url = "https://pypi.python.org/packages/47/bf/d07ef52fa1ac645468858bbac7cb95b246a972a045e821493d17d89c81be/invoke-0.13.0.tar.gz"; |
|
870 | 870 | md5 = "c0d1ed4bfb34eaab551662d8cfee6540"; |
|
871 | 871 | }; |
|
872 | 872 | meta = { |
|
873 | 873 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
874 | 874 | }; |
|
875 | 875 | }; |
|
876 | 876 | ipaddress = super.buildPythonPackage { |
|
877 | 877 | name = "ipaddress-1.0.19"; |
|
878 | 878 | buildInputs = with self; []; |
|
879 | 879 | doCheck = false; |
|
880 | 880 | propagatedBuildInputs = with self; []; |
|
881 | 881 | src = fetchurl { |
|
882 | 882 | url = "https://pypi.python.org/packages/f0/ba/860a4a3e283456d6b7e2ab39ce5cf11a3490ee1a363652ac50abf9f0f5df/ipaddress-1.0.19.tar.gz"; |
|
883 | 883 | md5 = "d0687efaf93a32476d81e90ba0609c57"; |
|
884 | 884 | }; |
|
885 | 885 | meta = { |
|
886 | 886 | license = [ pkgs.lib.licenses.psfl ]; |
|
887 | 887 | }; |
|
888 | 888 | }; |
|
889 | 889 | ipdb = super.buildPythonPackage { |
|
890 | 890 | name = "ipdb-0.10.3"; |
|
891 | 891 | buildInputs = with self; []; |
|
892 | 892 | doCheck = false; |
|
893 | 893 | propagatedBuildInputs = with self; [setuptools ipython]; |
|
894 | 894 | src = fetchurl { |
|
895 | 895 | url = "https://pypi.python.org/packages/ad/cc/0e7298e1fbf2efd52667c9354a12aa69fb6f796ce230cca03525051718ef/ipdb-0.10.3.tar.gz"; |
|
896 | 896 | md5 = "def1f6ac075d54bdee07e6501263d4fa"; |
|
897 | 897 | }; |
|
898 | 898 | meta = { |
|
899 | 899 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
900 | 900 | }; |
|
901 | 901 | }; |
|
902 | 902 | ipython = super.buildPythonPackage { |
|
903 | 903 | name = "ipython-5.1.0"; |
|
904 | 904 | buildInputs = with self; []; |
|
905 | 905 | doCheck = false; |
|
906 | 906 | propagatedBuildInputs = with self; [setuptools decorator pickleshare simplegeneric traitlets prompt-toolkit Pygments pexpect backports.shutil-get-terminal-size pathlib2 pexpect]; |
|
907 | 907 | src = fetchurl { |
|
908 | 908 | url = "https://pypi.python.org/packages/89/63/a9292f7cd9d0090a0f995e1167f3f17d5889dcbc9a175261719c513b9848/ipython-5.1.0.tar.gz"; |
|
909 | 909 | md5 = "47c8122420f65b58784cb4b9b4af35e3"; |
|
910 | 910 | }; |
|
911 | 911 | meta = { |
|
912 | 912 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
913 | 913 | }; |
|
914 | 914 | }; |
|
915 | 915 | ipython-genutils = super.buildPythonPackage { |
|
916 | 916 | name = "ipython-genutils-0.2.0"; |
|
917 | 917 | buildInputs = with self; []; |
|
918 | 918 | doCheck = false; |
|
919 | 919 | propagatedBuildInputs = with self; []; |
|
920 | 920 | src = fetchurl { |
|
921 | 921 | url = "https://pypi.python.org/packages/e8/69/fbeffffc05236398ebfcfb512b6d2511c622871dca1746361006da310399/ipython_genutils-0.2.0.tar.gz"; |
|
922 | 922 | md5 = "5a4f9781f78466da0ea1a648f3e1f79f"; |
|
923 | 923 | }; |
|
924 | 924 | meta = { |
|
925 | 925 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
926 | 926 | }; |
|
927 | 927 | }; |
|
928 | 928 | iso8601 = super.buildPythonPackage { |
|
929 | 929 | name = "iso8601-0.1.12"; |
|
930 | 930 | buildInputs = with self; []; |
|
931 | 931 | doCheck = false; |
|
932 | 932 | propagatedBuildInputs = with self; []; |
|
933 | 933 | src = fetchurl { |
|
934 | 934 | url = "https://pypi.python.org/packages/45/13/3db24895497345fb44c4248c08b16da34a9eb02643cea2754b21b5ed08b0/iso8601-0.1.12.tar.gz"; |
|
935 | 935 | md5 = "4de940f691c5ea759fb254384c8ddcf6"; |
|
936 | 936 | }; |
|
937 | 937 | meta = { |
|
938 | 938 | license = [ pkgs.lib.licenses.mit ]; |
|
939 | 939 | }; |
|
940 | 940 | }; |
|
941 | 941 | itsdangerous = super.buildPythonPackage { |
|
942 | 942 | name = "itsdangerous-0.24"; |
|
943 | 943 | buildInputs = with self; []; |
|
944 | 944 | doCheck = false; |
|
945 | 945 | propagatedBuildInputs = with self; []; |
|
946 | 946 | src = fetchurl { |
|
947 | 947 | url = "https://pypi.python.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz"; |
|
948 | 948 | md5 = "a3d55aa79369aef5345c036a8a26307f"; |
|
949 | 949 | }; |
|
950 | 950 | meta = { |
|
951 | 951 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
952 | 952 | }; |
|
953 | 953 | }; |
|
954 | 954 | jsonschema = super.buildPythonPackage { |
|
955 | 955 | name = "jsonschema-2.6.0"; |
|
956 | 956 | buildInputs = with self; []; |
|
957 | 957 | doCheck = false; |
|
958 | 958 | propagatedBuildInputs = with self; [functools32]; |
|
959 | 959 | src = fetchurl { |
|
960 | 960 | url = "https://pypi.python.org/packages/58/b9/171dbb07e18c6346090a37f03c7e74410a1a56123f847efed59af260a298/jsonschema-2.6.0.tar.gz"; |
|
961 | 961 | md5 = "50c6b69a373a8b55ff1e0ec6e78f13f4"; |
|
962 | 962 | }; |
|
963 | 963 | meta = { |
|
964 | 964 | license = [ pkgs.lib.licenses.mit ]; |
|
965 | 965 | }; |
|
966 | 966 | }; |
|
967 | 967 | jupyter-client = super.buildPythonPackage { |
|
968 | 968 | name = "jupyter-client-5.0.0"; |
|
969 | 969 | buildInputs = with self; []; |
|
970 | 970 | doCheck = false; |
|
971 | 971 | propagatedBuildInputs = with self; [traitlets jupyter-core pyzmq python-dateutil]; |
|
972 | 972 | src = fetchurl { |
|
973 | 973 | url = "https://pypi.python.org/packages/e5/6f/65412ed462202b90134b7e761b0b7e7f949e07a549c1755475333727b3d0/jupyter_client-5.0.0.tar.gz"; |
|
974 | 974 | md5 = "1acd331b5c9fb4d79dae9939e79f2426"; |
|
975 | 975 | }; |
|
976 | 976 | meta = { |
|
977 | 977 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
978 | 978 | }; |
|
979 | 979 | }; |
|
980 | 980 | jupyter-core = super.buildPythonPackage { |
|
981 | 981 | name = "jupyter-core-4.4.0"; |
|
982 | 982 | buildInputs = with self; []; |
|
983 | 983 | doCheck = false; |
|
984 | 984 | propagatedBuildInputs = with self; [traitlets]; |
|
985 | 985 | src = fetchurl { |
|
986 | 986 | url = "https://pypi.python.org/packages/b6/2d/2804f4de3a95583f65e5dcb4d7c8c7183124882323758996e867f47e72af/jupyter_core-4.4.0.tar.gz"; |
|
987 | 987 | md5 = "7829fc07884ed98459e170f217e2a5ba"; |
|
988 | 988 | }; |
|
989 | 989 | meta = { |
|
990 | 990 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
991 | 991 | }; |
|
992 | 992 | }; |
|
993 | 993 | kombu = super.buildPythonPackage { |
|
994 | 994 | name = "kombu-4.1.0"; |
|
995 | 995 | buildInputs = with self; []; |
|
996 | 996 | doCheck = false; |
|
997 | 997 | propagatedBuildInputs = with self; [amqp]; |
|
998 | 998 | src = fetchurl { |
|
999 | 999 | url = "https://pypi.python.org/packages/03/5e/1a47d1e543d4943d65330af4e4406049f443878818fb65bfdc651bb93a96/kombu-4.1.0.tar.gz"; |
|
1000 | 1000 | md5 = "2fb2be9fec0e6514231bba23a3779439"; |
|
1001 | 1001 | }; |
|
1002 | 1002 | meta = { |
|
1003 | 1003 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1004 | 1004 | }; |
|
1005 | 1005 | }; |
|
1006 | 1006 | lxml = super.buildPythonPackage { |
|
1007 | 1007 | name = "lxml-3.7.3"; |
|
1008 | 1008 | buildInputs = with self; []; |
|
1009 | 1009 | doCheck = false; |
|
1010 | 1010 | propagatedBuildInputs = with self; []; |
|
1011 | 1011 | src = fetchurl { |
|
1012 | 1012 | url = "https://pypi.python.org/packages/39/e8/a8e0b1fa65dd021d48fe21464f71783655f39a41f218293c1c590d54eb82/lxml-3.7.3.tar.gz"; |
|
1013 | 1013 | md5 = "075692ce442e69bbd604d44e21c02753"; |
|
1014 | 1014 | }; |
|
1015 | 1015 | meta = { |
|
1016 | 1016 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1017 | 1017 | }; |
|
1018 | 1018 | }; |
|
1019 | 1019 | meld3 = super.buildPythonPackage { |
|
1020 | 1020 | name = "meld3-1.0.2"; |
|
1021 | 1021 | buildInputs = with self; []; |
|
1022 | 1022 | doCheck = false; |
|
1023 | 1023 | propagatedBuildInputs = with self; []; |
|
1024 | 1024 | src = fetchurl { |
|
1025 | 1025 | url = "https://pypi.python.org/packages/45/a0/317c6422b26c12fe0161e936fc35f36552069ba8e6f7ecbd99bbffe32a5f/meld3-1.0.2.tar.gz"; |
|
1026 | 1026 | md5 = "3ccc78cd79cffd63a751ad7684c02c91"; |
|
1027 | 1027 | }; |
|
1028 | 1028 | meta = { |
|
1029 | 1029 | license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ]; |
|
1030 | 1030 | }; |
|
1031 | 1031 | }; |
|
1032 | 1032 | mistune = super.buildPythonPackage { |
|
1033 | 1033 | name = "mistune-0.8.3"; |
|
1034 | 1034 | buildInputs = with self; []; |
|
1035 | 1035 | doCheck = false; |
|
1036 | 1036 | propagatedBuildInputs = with self; []; |
|
1037 | 1037 | src = fetchurl { |
|
1038 | 1038 | url = "https://pypi.python.org/packages/9d/be/e06d4346cc608a01dec6bf770d7d0303a4fd6db588b318ced18f5f257145/mistune-0.8.3.tar.gz"; |
|
1039 | 1039 | md5 = "a5e4043e93fb8f9082e27f29eeb5e054"; |
|
1040 | 1040 | }; |
|
1041 | 1041 | meta = { |
|
1042 | 1042 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1043 | 1043 | }; |
|
1044 | 1044 | }; |
|
1045 | 1045 | mock = super.buildPythonPackage { |
|
1046 | 1046 | name = "mock-1.0.1"; |
|
1047 | 1047 | buildInputs = with self; []; |
|
1048 | 1048 | doCheck = false; |
|
1049 | 1049 | propagatedBuildInputs = with self; []; |
|
1050 | 1050 | src = fetchurl { |
|
1051 | 1051 | url = "https://pypi.python.org/packages/a2/52/7edcd94f0afb721a2d559a5b9aae8af4f8f2c79bc63fdbe8a8a6c9b23bbe/mock-1.0.1.tar.gz"; |
|
1052 | 1052 | md5 = "c3971991738caa55ec7c356bbc154ee2"; |
|
1053 | 1053 | }; |
|
1054 | 1054 | meta = { |
|
1055 | 1055 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1056 | 1056 | }; |
|
1057 | 1057 | }; |
|
1058 | 1058 | msgpack-python = super.buildPythonPackage { |
|
1059 | 1059 | name = "msgpack-python-0.4.8"; |
|
1060 | 1060 | buildInputs = with self; []; |
|
1061 | 1061 | doCheck = false; |
|
1062 | 1062 | propagatedBuildInputs = with self; []; |
|
1063 | 1063 | src = fetchurl { |
|
1064 | 1064 | url = "https://pypi.python.org/packages/21/27/8a1d82041c7a2a51fcc73675875a5f9ea06c2663e02fcfeb708be1d081a0/msgpack-python-0.4.8.tar.gz"; |
|
1065 | 1065 | md5 = "dcd854fb41ee7584ebbf35e049e6be98"; |
|
1066 | 1066 | }; |
|
1067 | 1067 | meta = { |
|
1068 | 1068 | license = [ pkgs.lib.licenses.asl20 ]; |
|
1069 | 1069 | }; |
|
1070 | 1070 | }; |
|
1071 | 1071 | nbconvert = super.buildPythonPackage { |
|
1072 | 1072 | name = "nbconvert-5.3.1"; |
|
1073 | 1073 | buildInputs = with self; []; |
|
1074 | 1074 | doCheck = false; |
|
1075 | 1075 | propagatedBuildInputs = with self; [mistune Jinja2 Pygments traitlets jupyter-core nbformat entrypoints bleach pandocfilters testpath]; |
|
1076 | 1076 | src = fetchurl { |
|
1077 | 1077 | url = "https://pypi.python.org/packages/b9/a4/d0a0938ad6f5eeb4dea4e73d255c617ef94b0b2849d51194c9bbdb838412/nbconvert-5.3.1.tar.gz"; |
|
1078 | 1078 | md5 = "c128d0d93d02f70a85429a383dae96d2"; |
|
1079 | 1079 | }; |
|
1080 | 1080 | meta = { |
|
1081 | 1081 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1082 | 1082 | }; |
|
1083 | 1083 | }; |
|
1084 | 1084 | nbformat = super.buildPythonPackage { |
|
1085 | 1085 | name = "nbformat-4.4.0"; |
|
1086 | 1086 | buildInputs = with self; []; |
|
1087 | 1087 | doCheck = false; |
|
1088 | 1088 | propagatedBuildInputs = with self; [ipython-genutils traitlets jsonschema jupyter-core]; |
|
1089 | 1089 | src = fetchurl { |
|
1090 | 1090 | url = "https://pypi.python.org/packages/6e/0e/160754f7ae3e984863f585a3743b0ed1702043a81245907c8fae2d537155/nbformat-4.4.0.tar.gz"; |
|
1091 | 1091 | md5 = "2d5f873138d9fbc2a3f9eaaebca3b8a1"; |
|
1092 | 1092 | }; |
|
1093 | 1093 | meta = { |
|
1094 | 1094 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1095 | 1095 | }; |
|
1096 | 1096 | }; |
|
1097 | 1097 | objgraph = super.buildPythonPackage { |
|
1098 | 1098 | name = "objgraph-3.1.1"; |
|
1099 | 1099 | buildInputs = with self; []; |
|
1100 | 1100 | doCheck = false; |
|
1101 | 1101 | propagatedBuildInputs = with self; [graphviz]; |
|
1102 | 1102 | src = fetchurl { |
|
1103 | 1103 | url = "https://pypi.python.org/packages/be/58/9ca81a20cc837054e94866df1475d899caaa94f3732b8a46006858b015f7/objgraph-3.1.1.tar.gz"; |
|
1104 | 1104 | md5 = "253af9944763377877c3678d8aaebb8b"; |
|
1105 | 1105 | }; |
|
1106 | 1106 | meta = { |
|
1107 | 1107 | license = [ pkgs.lib.licenses.mit ]; |
|
1108 | 1108 | }; |
|
1109 | 1109 | }; |
|
1110 | 1110 | packaging = super.buildPythonPackage { |
|
1111 | 1111 | name = "packaging-15.2"; |
|
1112 | 1112 | buildInputs = with self; []; |
|
1113 | 1113 | doCheck = false; |
|
1114 | 1114 | propagatedBuildInputs = with self; []; |
|
1115 | 1115 | src = fetchurl { |
|
1116 | 1116 | url = "https://pypi.python.org/packages/24/c4/185da1304f07047dc9e0c46c31db75c0351bd73458ac3efad7da3dbcfbe1/packaging-15.2.tar.gz"; |
|
1117 | 1117 | md5 = "c16093476f6ced42128bf610e5db3784"; |
|
1118 | 1118 | }; |
|
1119 | 1119 | meta = { |
|
1120 | 1120 | license = [ pkgs.lib.licenses.asl20 ]; |
|
1121 | 1121 | }; |
|
1122 | 1122 | }; |
|
1123 | 1123 | pandocfilters = super.buildPythonPackage { |
|
1124 | 1124 | name = "pandocfilters-1.4.2"; |
|
1125 | 1125 | buildInputs = with self; []; |
|
1126 | 1126 | doCheck = false; |
|
1127 | 1127 | propagatedBuildInputs = with self; []; |
|
1128 | 1128 | src = fetchurl { |
|
1129 | 1129 | url = "https://pypi.python.org/packages/4c/ea/236e2584af67bb6df960832731a6e5325fd4441de001767da328c33368ce/pandocfilters-1.4.2.tar.gz"; |
|
1130 | 1130 | md5 = "dc391791ef54c7de1572d7b46b63361f"; |
|
1131 | 1131 | }; |
|
1132 | 1132 | meta = { |
|
1133 | 1133 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1134 | 1134 | }; |
|
1135 | 1135 | }; |
|
1136 | 1136 | pathlib2 = super.buildPythonPackage { |
|
1137 | 1137 | name = "pathlib2-2.3.0"; |
|
1138 | 1138 | buildInputs = with self; []; |
|
1139 | 1139 | doCheck = false; |
|
1140 | 1140 | propagatedBuildInputs = with self; [six scandir]; |
|
1141 | 1141 | src = fetchurl { |
|
1142 | 1142 | url = "https://pypi.python.org/packages/a1/14/df0deb867c2733f7d857523c10942b3d6612a1b222502fdffa9439943dfb/pathlib2-2.3.0.tar.gz"; |
|
1143 | 1143 | md5 = "89c90409d11fd5947966b6a30a47d18c"; |
|
1144 | 1144 | }; |
|
1145 | 1145 | meta = { |
|
1146 | 1146 | license = [ pkgs.lib.licenses.mit ]; |
|
1147 | 1147 | }; |
|
1148 | 1148 | }; |
|
1149 | 1149 | peppercorn = super.buildPythonPackage { |
|
1150 | 1150 | name = "peppercorn-0.5"; |
|
1151 | 1151 | buildInputs = with self; []; |
|
1152 | 1152 | doCheck = false; |
|
1153 | 1153 | propagatedBuildInputs = with self; []; |
|
1154 | 1154 | src = fetchurl { |
|
1155 | 1155 | url = "https://pypi.python.org/packages/45/ec/a62ec317d1324a01567c5221b420742f094f05ee48097e5157d32be3755c/peppercorn-0.5.tar.gz"; |
|
1156 | 1156 | md5 = "f08efbca5790019ab45d76b7244abd40"; |
|
1157 | 1157 | }; |
|
1158 | 1158 | meta = { |
|
1159 | 1159 | license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ]; |
|
1160 | 1160 | }; |
|
1161 | 1161 | }; |
|
1162 | 1162 | pexpect = super.buildPythonPackage { |
|
1163 | 1163 | name = "pexpect-4.4.0"; |
|
1164 | 1164 | buildInputs = with self; []; |
|
1165 | 1165 | doCheck = false; |
|
1166 | 1166 | propagatedBuildInputs = with self; [ptyprocess]; |
|
1167 | 1167 | src = fetchurl { |
|
1168 | 1168 | url = "https://pypi.python.org/packages/fa/c3/60c0cbf96f242d0b47a82e9ca634dcd6dcb043832cf05e17540812e1c707/pexpect-4.4.0.tar.gz"; |
|
1169 | 1169 | md5 = "e9b07f0765df8245ac72201d757baaef"; |
|
1170 | 1170 | }; |
|
1171 | 1171 | meta = { |
|
1172 | 1172 | license = [ pkgs.lib.licenses.isc { fullName = "ISC License (ISCL)"; } ]; |
|
1173 | 1173 | }; |
|
1174 | 1174 | }; |
|
1175 | 1175 | pickleshare = super.buildPythonPackage { |
|
1176 | 1176 | name = "pickleshare-0.7.4"; |
|
1177 | 1177 | buildInputs = with self; []; |
|
1178 | 1178 | doCheck = false; |
|
1179 | 1179 | propagatedBuildInputs = with self; [pathlib2]; |
|
1180 | 1180 | src = fetchurl { |
|
1181 | 1181 | url = "https://pypi.python.org/packages/69/fe/dd137d84daa0fd13a709e448138e310d9ea93070620c9db5454e234af525/pickleshare-0.7.4.tar.gz"; |
|
1182 | 1182 | md5 = "6a9e5dd8dfc023031f6b7b3f824cab12"; |
|
1183 | 1183 | }; |
|
1184 | 1184 | meta = { |
|
1185 | 1185 | license = [ pkgs.lib.licenses.mit ]; |
|
1186 | 1186 | }; |
|
1187 | 1187 | }; |
|
1188 | 1188 | plaster = super.buildPythonPackage { |
|
1189 | 1189 | name = "plaster-1.0"; |
|
1190 | 1190 | buildInputs = with self; []; |
|
1191 | 1191 | doCheck = false; |
|
1192 | 1192 | propagatedBuildInputs = with self; [setuptools]; |
|
1193 | 1193 | src = fetchurl { |
|
1194 | 1194 | url = "https://pypi.python.org/packages/37/e1/56d04382d718d32751017d32f351214384e529b794084eee20bb52405563/plaster-1.0.tar.gz"; |
|
1195 | 1195 | md5 = "80e6beb4760c16fea31754babcc0576e"; |
|
1196 | 1196 | }; |
|
1197 | 1197 | meta = { |
|
1198 | 1198 | license = [ pkgs.lib.licenses.mit ]; |
|
1199 | 1199 | }; |
|
1200 | 1200 | }; |
|
1201 | 1201 | plaster-pastedeploy = super.buildPythonPackage { |
|
1202 | 1202 | name = "plaster-pastedeploy-0.4.2"; |
|
1203 | 1203 | buildInputs = with self; []; |
|
1204 | 1204 | doCheck = false; |
|
1205 | 1205 | propagatedBuildInputs = with self; [PasteDeploy plaster]; |
|
1206 | 1206 | src = fetchurl { |
|
1207 | 1207 | url = "https://pypi.python.org/packages/2c/62/0daf9c0be958e785023e583e51baac15863699e956bfb3d448898d80edd8/plaster_pastedeploy-0.4.2.tar.gz"; |
|
1208 | 1208 | md5 = "58fd7852002909378e818c9d5b71e90a"; |
|
1209 | 1209 | }; |
|
1210 | 1210 | meta = { |
|
1211 | 1211 | license = [ pkgs.lib.licenses.mit ]; |
|
1212 | 1212 | }; |
|
1213 | 1213 | }; |
|
1214 | 1214 | prompt-toolkit = super.buildPythonPackage { |
|
1215 | 1215 | name = "prompt-toolkit-1.0.15"; |
|
1216 | 1216 | buildInputs = with self; []; |
|
1217 | 1217 | doCheck = false; |
|
1218 | 1218 | propagatedBuildInputs = with self; [six wcwidth]; |
|
1219 | 1219 | src = fetchurl { |
|
1220 | 1220 | url = "https://pypi.python.org/packages/8a/ad/cf6b128866e78ad6d7f1dc5b7f99885fb813393d9860778b2984582e81b5/prompt_toolkit-1.0.15.tar.gz"; |
|
1221 | 1221 | md5 = "8fe70295006dbc8afedd43e5eba99032"; |
|
1222 | 1222 | }; |
|
1223 | 1223 | meta = { |
|
1224 | 1224 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1225 | 1225 | }; |
|
1226 | 1226 | }; |
|
1227 | 1227 | psutil = super.buildPythonPackage { |
|
1228 | 1228 | name = "psutil-5.4.3"; |
|
1229 | 1229 | buildInputs = with self; []; |
|
1230 | 1230 | doCheck = false; |
|
1231 | 1231 | propagatedBuildInputs = with self; []; |
|
1232 | 1232 | src = fetchurl { |
|
1233 | 1233 | url = "https://pypi.python.org/packages/e2/e1/600326635f97fee89bf8426fef14c5c29f4849c79f68fd79f433d8c1bd96/psutil-5.4.3.tar.gz"; |
|
1234 | 1234 | md5 = "3b291833dbea631db9d271aa602a169a"; |
|
1235 | 1235 | }; |
|
1236 | 1236 | meta = { |
|
1237 | 1237 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1238 | 1238 | }; |
|
1239 | 1239 | }; |
|
1240 | 1240 | psycopg2 = super.buildPythonPackage { |
|
1241 | 1241 | name = "psycopg2-2.7.3.2"; |
|
1242 | 1242 | buildInputs = with self; []; |
|
1243 | 1243 | doCheck = false; |
|
1244 | 1244 | propagatedBuildInputs = with self; []; |
|
1245 | 1245 | src = fetchurl { |
|
1246 | 1246 | url = "https://pypi.python.org/packages/dd/47/000b405d73ca22980684fd7bd3318690cc03cfa3b2ae1c5b7fff8050b28a/psycopg2-2.7.3.2.tar.gz"; |
|
1247 | 1247 | md5 = "8114e672d5f23fa5329874a4314fbd6f"; |
|
1248 | 1248 | }; |
|
1249 | 1249 | meta = { |
|
1250 | 1250 | license = [ pkgs.lib.licenses.zpt21 { fullName = "GNU Library or Lesser General Public License (LGPL)"; } { fullName = "LGPL with exceptions or ZPL"; } ]; |
|
1251 | 1251 | }; |
|
1252 | 1252 | }; |
|
1253 | 1253 | ptyprocess = super.buildPythonPackage { |
|
1254 | 1254 | name = "ptyprocess-0.5.2"; |
|
1255 | 1255 | buildInputs = with self; []; |
|
1256 | 1256 | doCheck = false; |
|
1257 | 1257 | propagatedBuildInputs = with self; []; |
|
1258 | 1258 | src = fetchurl { |
|
1259 | 1259 | url = "https://pypi.python.org/packages/51/83/5d07dc35534640b06f9d9f1a1d2bc2513fb9cc7595a1b0e28ae5477056ce/ptyprocess-0.5.2.tar.gz"; |
|
1260 | 1260 | md5 = "d3b8febae1b8c53b054bd818d0bb8665"; |
|
1261 | 1261 | }; |
|
1262 | 1262 | meta = { |
|
1263 | 1263 | license = [ ]; |
|
1264 | 1264 | }; |
|
1265 | 1265 | }; |
|
1266 | 1266 | py = super.buildPythonPackage { |
|
1267 | 1267 | name = "py-1.5.2"; |
|
1268 | 1268 | buildInputs = with self; []; |
|
1269 | 1269 | doCheck = false; |
|
1270 | 1270 | propagatedBuildInputs = with self; []; |
|
1271 | 1271 | src = fetchurl { |
|
1272 | 1272 | url = "https://pypi.python.org/packages/90/e3/e075127d39d35f09a500ebb4a90afd10f9ef0a1d28a6d09abeec0e444fdd/py-1.5.2.tar.gz"; |
|
1273 | 1273 | md5 = "279ca69c632069e1b71e11b14641ca28"; |
|
1274 | 1274 | }; |
|
1275 | 1275 | meta = { |
|
1276 | 1276 | license = [ pkgs.lib.licenses.mit ]; |
|
1277 | 1277 | }; |
|
1278 | 1278 | }; |
|
1279 | 1279 | py-bcrypt = super.buildPythonPackage { |
|
1280 | 1280 | name = "py-bcrypt-0.4"; |
|
1281 | 1281 | buildInputs = with self; []; |
|
1282 | 1282 | doCheck = false; |
|
1283 | 1283 | propagatedBuildInputs = with self; []; |
|
1284 | 1284 | src = fetchurl { |
|
1285 | 1285 | url = "https://pypi.python.org/packages/68/b1/1c3068c5c4d2e35c48b38dcc865301ebfdf45f54507086ac65ced1fd3b3d/py-bcrypt-0.4.tar.gz"; |
|
1286 | 1286 | md5 = "dd8b367d6b716a2ea2e72392525f4e36"; |
|
1287 | 1287 | }; |
|
1288 | 1288 | meta = { |
|
1289 | 1289 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1290 | 1290 | }; |
|
1291 | 1291 | }; |
|
1292 | 1292 | py-gfm = super.buildPythonPackage { |
|
1293 | 1293 | name = "py-gfm-0.1.3"; |
|
1294 | 1294 | buildInputs = with self; []; |
|
1295 | 1295 | doCheck = false; |
|
1296 | 1296 | propagatedBuildInputs = with self; [setuptools Markdown]; |
|
1297 | 1297 | src = fetchurl { |
|
1298 | 1298 | url = "https://pypi.python.org/packages/12/e4/6b3d8678da04f97d7490d8264d8de51c2dc9fb91209ccee9c515c95e14c5/py-gfm-0.1.3.tar.gz"; |
|
1299 | 1299 | md5 = "e588d9e69640a241b97e2c59c22527a6"; |
|
1300 | 1300 | }; |
|
1301 | 1301 | meta = { |
|
1302 | 1302 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1303 | 1303 | }; |
|
1304 | 1304 | }; |
|
1305 | 1305 | pycrypto = super.buildPythonPackage { |
|
1306 | 1306 | name = "pycrypto-2.6.1"; |
|
1307 | 1307 | buildInputs = with self; []; |
|
1308 | 1308 | doCheck = false; |
|
1309 | 1309 | propagatedBuildInputs = with self; []; |
|
1310 | 1310 | src = fetchurl { |
|
1311 | 1311 | url = "https://pypi.python.org/packages/60/db/645aa9af249f059cc3a368b118de33889219e0362141e75d4eaf6f80f163/pycrypto-2.6.1.tar.gz"; |
|
1312 | 1312 | md5 = "55a61a054aa66812daf5161a0d5d7eda"; |
|
1313 | 1313 | }; |
|
1314 | 1314 | meta = { |
|
1315 | 1315 | license = [ pkgs.lib.licenses.publicDomain ]; |
|
1316 | 1316 | }; |
|
1317 | 1317 | }; |
|
1318 | 1318 | pycurl = super.buildPythonPackage { |
|
1319 | 1319 | name = "pycurl-7.19.5"; |
|
1320 | 1320 | buildInputs = with self; []; |
|
1321 | 1321 | doCheck = false; |
|
1322 | 1322 | propagatedBuildInputs = with self; []; |
|
1323 | 1323 | src = fetchurl { |
|
1324 | 1324 | url = "https://pypi.python.org/packages/6c/48/13bad289ef6f4869b1d8fc11ae54de8cfb3cc4a2eb9f7419c506f763be46/pycurl-7.19.5.tar.gz"; |
|
1325 | 1325 | md5 = "47b4eac84118e2606658122104e62072"; |
|
1326 | 1326 | }; |
|
1327 | 1327 | meta = { |
|
1328 | 1328 | license = [ pkgs.lib.licenses.mit { fullName = "LGPL/MIT"; } { fullName = "GNU Library or Lesser General Public License (LGPL)"; } ]; |
|
1329 | 1329 | }; |
|
1330 | 1330 | }; |
|
1331 | 1331 | pyflakes = super.buildPythonPackage { |
|
1332 | 1332 | name = "pyflakes-0.8.1"; |
|
1333 | 1333 | buildInputs = with self; []; |
|
1334 | 1334 | doCheck = false; |
|
1335 | 1335 | propagatedBuildInputs = with self; []; |
|
1336 | 1336 | src = fetchurl { |
|
1337 | 1337 | url = "https://pypi.python.org/packages/75/22/a90ec0252f4f87f3ffb6336504de71fe16a49d69c4538dae2f12b9360a38/pyflakes-0.8.1.tar.gz"; |
|
1338 | 1338 | md5 = "905fe91ad14b912807e8fdc2ac2e2c23"; |
|
1339 | 1339 | }; |
|
1340 | 1340 | meta = { |
|
1341 | 1341 | license = [ pkgs.lib.licenses.mit ]; |
|
1342 | 1342 | }; |
|
1343 | 1343 | }; |
|
1344 | 1344 | pygments-markdown-lexer = super.buildPythonPackage { |
|
1345 | 1345 | name = "pygments-markdown-lexer-0.1.0.dev39"; |
|
1346 | 1346 | buildInputs = with self; []; |
|
1347 | 1347 | doCheck = false; |
|
1348 | 1348 | propagatedBuildInputs = with self; [Pygments]; |
|
1349 | 1349 | src = fetchurl { |
|
1350 | 1350 | url = "https://pypi.python.org/packages/c3/12/674cdee66635d638cedb2c5d9c85ce507b7b2f91bdba29e482f1b1160ff6/pygments-markdown-lexer-0.1.0.dev39.zip"; |
|
1351 | 1351 | md5 = "6360fe0f6d1f896e35b7a0142ce6459c"; |
|
1352 | 1352 | }; |
|
1353 | 1353 | meta = { |
|
1354 | 1354 | license = [ pkgs.lib.licenses.asl20 ]; |
|
1355 | 1355 | }; |
|
1356 | 1356 | }; |
|
1357 | 1357 | pyparsing = super.buildPythonPackage { |
|
1358 | 1358 | name = "pyparsing-1.5.7"; |
|
1359 | 1359 | buildInputs = with self; []; |
|
1360 | 1360 | doCheck = false; |
|
1361 | 1361 | propagatedBuildInputs = with self; []; |
|
1362 | 1362 | src = fetchurl { |
|
1363 | 1363 | url = "https://pypi.python.org/packages/6f/2c/47457771c02a8ff0f302b695e094ec309e30452232bd79198ee94fda689f/pyparsing-1.5.7.tar.gz"; |
|
1364 | 1364 | md5 = "9be0fcdcc595199c646ab317c1d9a709"; |
|
1365 | 1365 | }; |
|
1366 | 1366 | meta = { |
|
1367 | 1367 | license = [ pkgs.lib.licenses.mit ]; |
|
1368 | 1368 | }; |
|
1369 | 1369 | }; |
|
1370 | 1370 | pyramid = super.buildPythonPackage { |
|
1371 | 1371 | name = "pyramid-1.9.1"; |
|
1372 | 1372 | buildInputs = with self; []; |
|
1373 | 1373 | doCheck = false; |
|
1374 | 1374 | propagatedBuildInputs = with self; [setuptools WebOb repoze.lru zope.interface zope.deprecation venusian translationstring PasteDeploy plaster plaster-pastedeploy hupper]; |
|
1375 | 1375 | src = fetchurl { |
|
1376 | 1376 | url = "https://pypi.python.org/packages/9a/57/73447be9e7d0512d601e3f0a1fb9d7d1efb941911f49efdfe036d2826507/pyramid-1.9.1.tar.gz"; |
|
1377 | 1377 | md5 = "0163e19c58c2d12976a3b6fdb57e052d"; |
|
1378 | 1378 | }; |
|
1379 | 1379 | meta = { |
|
1380 | 1380 | license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ]; |
|
1381 | 1381 | }; |
|
1382 | 1382 | }; |
|
1383 | 1383 | pyramid-beaker = super.buildPythonPackage { |
|
1384 | 1384 | name = "pyramid-beaker-0.8"; |
|
1385 | 1385 | buildInputs = with self; []; |
|
1386 | 1386 | doCheck = false; |
|
1387 | 1387 | propagatedBuildInputs = with self; [pyramid Beaker]; |
|
1388 | 1388 | src = fetchurl { |
|
1389 | 1389 | url = "https://pypi.python.org/packages/d9/6e/b85426e00fd3d57f4545f74e1c3828552d8700f13ededeef9233f7bca8be/pyramid_beaker-0.8.tar.gz"; |
|
1390 | 1390 | md5 = "22f14be31b06549f80890e2c63a93834"; |
|
1391 | 1391 | }; |
|
1392 | 1392 | meta = { |
|
1393 | 1393 | license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ]; |
|
1394 | 1394 | }; |
|
1395 | 1395 | }; |
|
1396 | 1396 | pyramid-debugtoolbar = super.buildPythonPackage { |
|
1397 | 1397 | name = "pyramid-debugtoolbar-4.3"; |
|
1398 | 1398 | buildInputs = with self; []; |
|
1399 | 1399 | doCheck = false; |
|
1400 | 1400 | propagatedBuildInputs = with self; [pyramid pyramid-mako repoze.lru Pygments ipaddress]; |
|
1401 | 1401 | src = fetchurl { |
|
1402 | 1402 | url = "https://pypi.python.org/packages/a4/40/f09d8800bfc3c09bdb6c95f37bb61c890dc62c19c4e7caa304da7aa77403/pyramid_debugtoolbar-4.3.tar.gz"; |
|
1403 | 1403 | md5 = "9c49029e9f0695130499ef6416ffaaf8"; |
|
1404 | 1404 | }; |
|
1405 | 1405 | meta = { |
|
1406 | 1406 | license = [ { fullName = "Repoze Public License"; } pkgs.lib.licenses.bsdOriginal ]; |
|
1407 | 1407 | }; |
|
1408 | 1408 | }; |
|
1409 | 1409 | pyramid-jinja2 = super.buildPythonPackage { |
|
1410 | 1410 | name = "pyramid-jinja2-2.7"; |
|
1411 | 1411 | buildInputs = with self; []; |
|
1412 | 1412 | doCheck = false; |
|
1413 | 1413 | propagatedBuildInputs = with self; [pyramid zope.deprecation Jinja2 MarkupSafe]; |
|
1414 | 1414 | src = fetchurl { |
|
1415 | 1415 | url = "https://pypi.python.org/packages/d8/80/d60a7233823de22ce77bd864a8a83736a1fe8b49884b08303a2e68b2c853/pyramid_jinja2-2.7.tar.gz"; |
|
1416 | 1416 | md5 = "c2f8b2cd7b73a6f1d9a311fcfaf4fb92"; |
|
1417 | 1417 | }; |
|
1418 | 1418 | meta = { |
|
1419 | 1419 | license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ]; |
|
1420 | 1420 | }; |
|
1421 | 1421 | }; |
|
1422 | 1422 | pyramid-mako = super.buildPythonPackage { |
|
1423 | 1423 | name = "pyramid-mako-1.0.2"; |
|
1424 | 1424 | buildInputs = with self; []; |
|
1425 | 1425 | doCheck = false; |
|
1426 | 1426 | propagatedBuildInputs = with self; [pyramid Mako]; |
|
1427 | 1427 | src = fetchurl { |
|
1428 | 1428 | url = "https://pypi.python.org/packages/f1/92/7e69bcf09676d286a71cb3bbb887b16595b96f9ba7adbdc239ffdd4b1eb9/pyramid_mako-1.0.2.tar.gz"; |
|
1429 | 1429 | md5 = "ee25343a97eb76bd90abdc2a774eb48a"; |
|
1430 | 1430 | }; |
|
1431 | 1431 | meta = { |
|
1432 | 1432 | license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ]; |
|
1433 | 1433 | }; |
|
1434 | 1434 | }; |
|
1435 | 1435 | pysqlite = super.buildPythonPackage { |
|
1436 | 1436 | name = "pysqlite-2.8.3"; |
|
1437 | 1437 | buildInputs = with self; []; |
|
1438 | 1438 | doCheck = false; |
|
1439 | 1439 | propagatedBuildInputs = with self; []; |
|
1440 | 1440 | src = fetchurl { |
|
1441 | 1441 | url = "https://pypi.python.org/packages/42/02/981b6703e3c83c5b25a829c6e77aad059f9481b0bbacb47e6e8ca12bd731/pysqlite-2.8.3.tar.gz"; |
|
1442 | 1442 | md5 = "033f17b8644577715aee55e8832ac9fc"; |
|
1443 | 1443 | }; |
|
1444 | 1444 | meta = { |
|
1445 | 1445 | license = [ { fullName = "zlib/libpng License"; } { fullName = "zlib/libpng license"; } ]; |
|
1446 | 1446 | }; |
|
1447 | 1447 | }; |
|
1448 | 1448 | pytest = super.buildPythonPackage { |
|
1449 | 1449 | name = "pytest-3.2.5"; |
|
1450 | 1450 | buildInputs = with self; []; |
|
1451 | 1451 | doCheck = false; |
|
1452 | 1452 | propagatedBuildInputs = with self; [py setuptools]; |
|
1453 | 1453 | src = fetchurl { |
|
1454 | 1454 | url = "https://pypi.python.org/packages/1f/f8/8cd74c16952163ce0db0bd95fdd8810cbf093c08be00e6e665ebf0dc3138/pytest-3.2.5.tar.gz"; |
|
1455 | 1455 | md5 = "6dbe9bb093883f75394a689a1426ac6f"; |
|
1456 | 1456 | }; |
|
1457 | 1457 | meta = { |
|
1458 | 1458 | license = [ pkgs.lib.licenses.mit ]; |
|
1459 | 1459 | }; |
|
1460 | 1460 | }; |
|
1461 | 1461 | pytest-catchlog = super.buildPythonPackage { |
|
1462 | 1462 | name = "pytest-catchlog-1.2.2"; |
|
1463 | 1463 | buildInputs = with self; []; |
|
1464 | 1464 | doCheck = false; |
|
1465 | 1465 | propagatedBuildInputs = with self; [py pytest]; |
|
1466 | 1466 | src = fetchurl { |
|
1467 | 1467 | url = "https://pypi.python.org/packages/f2/2b/2faccdb1a978fab9dd0bf31cca9f6847fbe9184a0bdcc3011ac41dd44191/pytest-catchlog-1.2.2.zip"; |
|
1468 | 1468 | md5 = "09d890c54c7456c818102b7ff8c182c8"; |
|
1469 | 1469 | }; |
|
1470 | 1470 | meta = { |
|
1471 | 1471 | license = [ pkgs.lib.licenses.mit ]; |
|
1472 | 1472 | }; |
|
1473 | 1473 | }; |
|
1474 | 1474 | pytest-cov = super.buildPythonPackage { |
|
1475 | 1475 | name = "pytest-cov-2.5.1"; |
|
1476 | 1476 | buildInputs = with self; []; |
|
1477 | 1477 | doCheck = false; |
|
1478 | 1478 | propagatedBuildInputs = with self; [pytest coverage]; |
|
1479 | 1479 | src = fetchurl { |
|
1480 | 1480 | url = "https://pypi.python.org/packages/24/b4/7290d65b2f3633db51393bdf8ae66309b37620bc3ec116c5e357e3e37238/pytest-cov-2.5.1.tar.gz"; |
|
1481 | 1481 | md5 = "5acf38d4909e19819eb5c1754fbfc0ac"; |
|
1482 | 1482 | }; |
|
1483 | 1483 | meta = { |
|
1484 | 1484 | license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.mit ]; |
|
1485 | 1485 | }; |
|
1486 | 1486 | }; |
|
1487 | 1487 | pytest-profiling = super.buildPythonPackage { |
|
1488 | 1488 | name = "pytest-profiling-1.2.11"; |
|
1489 | 1489 | buildInputs = with self; []; |
|
1490 | 1490 | doCheck = false; |
|
1491 | 1491 | propagatedBuildInputs = with self; [six pytest gprof2dot]; |
|
1492 | 1492 | src = fetchurl { |
|
1493 | 1493 | url = "https://pypi.python.org/packages/c0/4a/b4aa786e93c07a86f1f87c581a36bf355a9e06a9da7e00dbd05047626bd2/pytest-profiling-1.2.11.tar.gz"; |
|
1494 | 1494 | md5 = "9ef6b60248731be5d44477980408e8f7"; |
|
1495 | 1495 | }; |
|
1496 | 1496 | meta = { |
|
1497 | 1497 | license = [ pkgs.lib.licenses.mit ]; |
|
1498 | 1498 | }; |
|
1499 | 1499 | }; |
|
1500 | 1500 | pytest-runner = super.buildPythonPackage { |
|
1501 | 1501 | name = "pytest-runner-3.0"; |
|
1502 | 1502 | buildInputs = with self; []; |
|
1503 | 1503 | doCheck = false; |
|
1504 | 1504 | propagatedBuildInputs = with self; []; |
|
1505 | 1505 | src = fetchurl { |
|
1506 | 1506 | url = "https://pypi.python.org/packages/65/b4/ae89338cd2d81e2cc54bd6db2e962bfe948f612303610d68ab24539ac2d1/pytest-runner-3.0.tar.gz"; |
|
1507 | 1507 | md5 = "8f8363a52bbabc4cedd5e239beb2ba11"; |
|
1508 | 1508 | }; |
|
1509 | 1509 | meta = { |
|
1510 | 1510 | license = [ pkgs.lib.licenses.mit ]; |
|
1511 | 1511 | }; |
|
1512 | 1512 | }; |
|
1513 | 1513 | pytest-sugar = super.buildPythonPackage { |
|
1514 | 1514 | name = "pytest-sugar-0.9.0"; |
|
1515 | 1515 | buildInputs = with self; []; |
|
1516 | 1516 | doCheck = false; |
|
1517 | 1517 | propagatedBuildInputs = with self; [pytest termcolor]; |
|
1518 | 1518 | src = fetchurl { |
|
1519 | 1519 | url = "https://pypi.python.org/packages/49/d8/c5ff6cca3ce2ebd8b73eec89779bf6b4a7737456a70e8ea4d44c1ff90f71/pytest-sugar-0.9.0.tar.gz"; |
|
1520 | 1520 | md5 = "89fbff17277fa6a95a560a04b68cb9f9"; |
|
1521 | 1521 | }; |
|
1522 | 1522 | meta = { |
|
1523 | 1523 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1524 | 1524 | }; |
|
1525 | 1525 | }; |
|
1526 | 1526 | pytest-timeout = super.buildPythonPackage { |
|
1527 | 1527 | name = "pytest-timeout-1.2.0"; |
|
1528 | 1528 | buildInputs = with self; []; |
|
1529 | 1529 | doCheck = false; |
|
1530 | 1530 | propagatedBuildInputs = with self; [pytest]; |
|
1531 | 1531 | src = fetchurl { |
|
1532 | 1532 | url = "https://pypi.python.org/packages/cc/b7/b2a61365ea6b6d2e8881360ae7ed8dad0327ad2df89f2f0be4a02304deb2/pytest-timeout-1.2.0.tar.gz"; |
|
1533 | 1533 | md5 = "83607d91aa163562c7ee835da57d061d"; |
|
1534 | 1534 | }; |
|
1535 | 1535 | meta = { |
|
1536 | 1536 | license = [ pkgs.lib.licenses.mit { fullName = "DFSG approved"; } ]; |
|
1537 | 1537 | }; |
|
1538 | 1538 | }; |
|
1539 | 1539 | python-dateutil = super.buildPythonPackage { |
|
1540 | 1540 | name = "python-dateutil-2.6.1"; |
|
1541 | 1541 | buildInputs = with self; []; |
|
1542 | 1542 | doCheck = false; |
|
1543 | 1543 | propagatedBuildInputs = with self; [six]; |
|
1544 | 1544 | src = fetchurl { |
|
1545 | 1545 | url = "https://pypi.python.org/packages/54/bb/f1db86504f7a49e1d9b9301531181b00a1c7325dc85a29160ee3eaa73a54/python-dateutil-2.6.1.tar.gz"; |
|
1546 | 1546 | md5 = "db38f6b4511cefd76014745bb0cc45a4"; |
|
1547 | 1547 | }; |
|
1548 | 1548 | meta = { |
|
1549 | 1549 | license = [ pkgs.lib.licenses.bsdOriginal { fullName = "Simplified BSD"; } ]; |
|
1550 | 1550 | }; |
|
1551 | 1551 | }; |
|
1552 | 1552 | python-editor = super.buildPythonPackage { |
|
1553 | 1553 | name = "python-editor-1.0.3"; |
|
1554 | 1554 | buildInputs = with self; []; |
|
1555 | 1555 | doCheck = false; |
|
1556 | 1556 | propagatedBuildInputs = with self; []; |
|
1557 | 1557 | src = fetchurl { |
|
1558 | 1558 | url = "https://pypi.python.org/packages/65/1e/adf6e000ea5dc909aa420352d6ba37f16434c8a3c2fa030445411a1ed545/python-editor-1.0.3.tar.gz"; |
|
1559 | 1559 | md5 = "0aca5f2ef176ce68e98a5b7e31372835"; |
|
1560 | 1560 | }; |
|
1561 | 1561 | meta = { |
|
1562 | 1562 | license = [ pkgs.lib.licenses.asl20 { fullName = "Apache"; } ]; |
|
1563 | 1563 | }; |
|
1564 | 1564 | }; |
|
1565 | 1565 | python-ldap = super.buildPythonPackage { |
|
1566 | 1566 | name = "python-ldap-2.4.45"; |
|
1567 | 1567 | buildInputs = with self; []; |
|
1568 | 1568 | doCheck = false; |
|
1569 | 1569 | propagatedBuildInputs = with self; [setuptools]; |
|
1570 | 1570 | src = fetchurl { |
|
1571 | 1571 | url = "https://pypi.python.org/packages/ce/52/6b5372d0166820f4a4b0a88ed73dc7504219355049fc1d266d8ccdb7942e/python-ldap-2.4.45.tar.gz"; |
|
1572 | 1572 | md5 = "6108e189a44eea8bc7d1cc281c222978"; |
|
1573 | 1573 | }; |
|
1574 | 1574 | meta = { |
|
1575 | 1575 | license = [ pkgs.lib.licenses.psfl ]; |
|
1576 | 1576 | }; |
|
1577 | 1577 | }; |
|
1578 | 1578 | python-memcached = super.buildPythonPackage { |
|
1579 | 1579 | name = "python-memcached-1.58"; |
|
1580 | 1580 | buildInputs = with self; []; |
|
1581 | 1581 | doCheck = false; |
|
1582 | 1582 | propagatedBuildInputs = with self; [six]; |
|
1583 | 1583 | src = fetchurl { |
|
1584 | 1584 | url = "https://pypi.python.org/packages/f7/62/14b2448cfb04427366f24104c9da97cf8ea380d7258a3233f066a951a8d8/python-memcached-1.58.tar.gz"; |
|
1585 | 1585 | md5 = "23b258105013d14d899828d334e6b044"; |
|
1586 | 1586 | }; |
|
1587 | 1587 | meta = { |
|
1588 | 1588 | license = [ pkgs.lib.licenses.psfl ]; |
|
1589 | 1589 | }; |
|
1590 | 1590 | }; |
|
1591 | 1591 | python-pam = super.buildPythonPackage { |
|
1592 | 1592 | name = "python-pam-1.8.2"; |
|
1593 | 1593 | buildInputs = with self; []; |
|
1594 | 1594 | doCheck = false; |
|
1595 | 1595 | propagatedBuildInputs = with self; []; |
|
1596 | 1596 | src = fetchurl { |
|
1597 | 1597 | url = "https://pypi.python.org/packages/de/8c/f8f5d38b4f26893af267ea0b39023d4951705ab0413a39e0cf7cf4900505/python-pam-1.8.2.tar.gz"; |
|
1598 | 1598 | md5 = "db71b6b999246fb05d78ecfbe166629d"; |
|
1599 | 1599 | }; |
|
1600 | 1600 | meta = { |
|
1601 | 1601 | license = [ { fullName = "License :: OSI Approved :: MIT License"; } pkgs.lib.licenses.mit ]; |
|
1602 | 1602 | }; |
|
1603 | 1603 | }; |
|
1604 | 1604 | pytz = super.buildPythonPackage { |
|
1605 | 1605 | name = "pytz-2018.3"; |
|
1606 | 1606 | buildInputs = with self; []; |
|
1607 | 1607 | doCheck = false; |
|
1608 | 1608 | propagatedBuildInputs = with self; []; |
|
1609 | 1609 | src = fetchurl { |
|
1610 | 1610 | url = "https://pypi.python.org/packages/1b/50/4cdc62fc0753595fc16c8f722a89740f487c6e5670c644eb8983946777be/pytz-2018.3.tar.gz"; |
|
1611 | 1611 | md5 = "abb07c09c79f78d7c04f222a550c99ef"; |
|
1612 | 1612 | }; |
|
1613 | 1613 | meta = { |
|
1614 | 1614 | license = [ pkgs.lib.licenses.mit ]; |
|
1615 | 1615 | }; |
|
1616 | 1616 | }; |
|
1617 | 1617 | pyzmq = super.buildPythonPackage { |
|
1618 | 1618 | name = "pyzmq-14.6.0"; |
|
1619 | 1619 | buildInputs = with self; []; |
|
1620 | 1620 | doCheck = false; |
|
1621 | 1621 | propagatedBuildInputs = with self; []; |
|
1622 | 1622 | src = fetchurl { |
|
1623 | 1623 | url = "https://pypi.python.org/packages/8a/3b/5463d5a9d712cd8bbdac335daece0d69f6a6792da4e3dd89956c0db4e4e6/pyzmq-14.6.0.tar.gz"; |
|
1624 | 1624 | md5 = "395b5de95a931afa5b14c9349a5b8024"; |
|
1625 | 1625 | }; |
|
1626 | 1626 | meta = { |
|
1627 | 1627 | license = [ pkgs.lib.licenses.bsdOriginal { fullName = "LGPL+BSD"; } { fullName = "GNU Library or Lesser General Public License (LGPL)"; } ]; |
|
1628 | 1628 | }; |
|
1629 | 1629 | }; |
|
1630 | recaptcha-client = super.buildPythonPackage { | |
|
1631 | name = "recaptcha-client-1.0.6"; | |
|
1632 | buildInputs = with self; []; | |
|
1633 | doCheck = false; | |
|
1634 | propagatedBuildInputs = with self; []; | |
|
1635 | src = fetchurl { | |
|
1636 | url = "https://pypi.python.org/packages/0a/ea/5f2fbbfd894bdac1c68ef8d92019066cfcf9fbff5fe3d728d2b5c25c8db4/recaptcha-client-1.0.6.tar.gz"; | |
|
1637 | md5 = "74228180f7e1fb76c4d7089160b0d919"; | |
|
1638 | }; | |
|
1639 | meta = { | |
|
1640 | license = [ { fullName = "MIT/X11"; } ]; | |
|
1641 | }; | |
|
1642 | }; | |
|
1643 | 1630 | redis = super.buildPythonPackage { |
|
1644 | 1631 | name = "redis-2.10.6"; |
|
1645 | 1632 | buildInputs = with self; []; |
|
1646 | 1633 | doCheck = false; |
|
1647 | 1634 | propagatedBuildInputs = with self; []; |
|
1648 | 1635 | src = fetchurl { |
|
1649 | 1636 | url = "https://pypi.python.org/packages/09/8d/6d34b75326bf96d4139a2ddd8e74b80840f800a0a79f9294399e212cb9a7/redis-2.10.6.tar.gz"; |
|
1650 | 1637 | md5 = "048348d8cfe0b5d0bba2f4d835005c3b"; |
|
1651 | 1638 | }; |
|
1652 | 1639 | meta = { |
|
1653 | 1640 | license = [ pkgs.lib.licenses.mit ]; |
|
1654 | 1641 | }; |
|
1655 | 1642 | }; |
|
1656 | 1643 | repoze.lru = super.buildPythonPackage { |
|
1657 | 1644 | name = "repoze.lru-0.7"; |
|
1658 | 1645 | buildInputs = with self; []; |
|
1659 | 1646 | doCheck = false; |
|
1660 | 1647 | propagatedBuildInputs = with self; []; |
|
1661 | 1648 | src = fetchurl { |
|
1662 | 1649 | url = "https://pypi.python.org/packages/12/bc/595a77c4b5e204847fdf19268314ef59c85193a9dc9f83630fc459c0fee5/repoze.lru-0.7.tar.gz"; |
|
1663 | 1650 | md5 = "c08cc030387e0b1fc53c5c7d964b35e2"; |
|
1664 | 1651 | }; |
|
1665 | 1652 | meta = { |
|
1666 | 1653 | license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ]; |
|
1667 | 1654 | }; |
|
1668 | 1655 | }; |
|
1669 | 1656 | requests = super.buildPythonPackage { |
|
1670 | 1657 | name = "requests-2.9.1"; |
|
1671 | 1658 | buildInputs = with self; []; |
|
1672 | 1659 | doCheck = false; |
|
1673 | 1660 | propagatedBuildInputs = with self; []; |
|
1674 | 1661 | src = fetchurl { |
|
1675 | 1662 | url = "https://pypi.python.org/packages/f9/6d/07c44fb1ebe04d069459a189e7dab9e4abfe9432adcd4477367c25332748/requests-2.9.1.tar.gz"; |
|
1676 | 1663 | md5 = "0b7f480d19012ec52bab78292efd976d"; |
|
1677 | 1664 | }; |
|
1678 | 1665 | meta = { |
|
1679 | 1666 | license = [ pkgs.lib.licenses.asl20 ]; |
|
1680 | 1667 | }; |
|
1681 | 1668 | }; |
|
1682 | 1669 | rhodecode-enterprise-ce = super.buildPythonPackage { |
|
1683 | 1670 | name = "rhodecode-enterprise-ce-4.12.0"; |
|
1684 | 1671 | buildInputs = with self; [pytest py pytest-cov pytest-sugar pytest-runner pytest-catchlog pytest-profiling gprof2dot pytest-timeout mock WebTest cov-core coverage configobj]; |
|
1685 | 1672 | doCheck = true; |
|
1686 |
propagatedBuildInputs = with self; [setuptools-scm amqp authomatic Babel Beaker celery Chameleon channelstream click colander configobj cssselect decorator deform docutils dogpile.cache dogpile.core ecdsa FormEncode future futures gnureadline infrae.cache iso8601 itsdangerous Jinja2 billiard kombu lxml Mako Markdown MarkupSafe msgpack-python MySQL-python objgraph packaging Paste PasteDeploy PasteScript pathlib2 peppercorn psutil psycopg2 py-bcrypt pycrypto pycurl pyflakes pygments-markdown-lexer Pygments pyparsing pyramid-beaker pyramid-debugtoolbar pyramid-jinja2 pyramid-mako pyramid pysqlite python-dateutil python-ldap python-memcached python-pam pytz tzlocal pyzmq py-gfm |
|
|
1673 | propagatedBuildInputs = with self; [setuptools-scm amqp authomatic Babel Beaker celery Chameleon channelstream click colander configobj cssselect decorator deform docutils dogpile.cache dogpile.core ecdsa FormEncode future futures gnureadline infrae.cache iso8601 itsdangerous Jinja2 billiard kombu lxml Mako Markdown MarkupSafe msgpack-python MySQL-python objgraph packaging Paste PasteDeploy PasteScript pathlib2 peppercorn psutil psycopg2 py-bcrypt pycrypto pycurl pyflakes pygments-markdown-lexer Pygments pyparsing pyramid-beaker pyramid-debugtoolbar pyramid-jinja2 pyramid-mako pyramid pysqlite python-dateutil python-ldap python-memcached python-pam pytz tzlocal pyzmq py-gfm redis repoze.lru requests Routes setproctitle simplejson six SQLAlchemy sshpubkeys subprocess32 supervisor Tempita translationstring trollius urllib3 URLObject venusian WebError WebHelpers2 WebHelpers WebOb Whoosh wsgiref zope.cachedescriptors zope.deprecation zope.event zope.interface nbconvert bleach nbformat jupyter-client alembic invoke bumpversion transifex-client gevent greenlet gunicorn waitress uWSGI ipdb ipython CProfileV bottle rhodecode-tools appenlight-client pytest py pytest-cov pytest-sugar pytest-runner pytest-catchlog pytest-profiling gprof2dot pytest-timeout mock WebTest cov-core coverage]; | |
|
1687 | 1674 | src = ./.; |
|
1688 | 1675 | meta = { |
|
1689 | 1676 | license = [ { fullName = "Affero GNU General Public License v3 or later (AGPLv3+)"; } { fullName = "AGPLv3, and Commercial License"; } ]; |
|
1690 | 1677 | }; |
|
1691 | 1678 | }; |
|
1692 | 1679 | rhodecode-tools = super.buildPythonPackage { |
|
1693 | 1680 | name = "rhodecode-tools-0.14.1"; |
|
1694 | 1681 | buildInputs = with self; []; |
|
1695 | 1682 | doCheck = false; |
|
1696 | 1683 | propagatedBuildInputs = with self; [click future six Mako MarkupSafe requests elasticsearch elasticsearch-dsl urllib3 Whoosh]; |
|
1697 | 1684 | src = fetchurl { |
|
1698 | 1685 | url = "https://code.rhodecode.com/rhodecode-tools-ce/archive/v0.14.1.tar.gz?md5=0b9c2caad160b68889f8172ea54af7b2"; |
|
1699 | 1686 | md5 = "0b9c2caad160b68889f8172ea54af7b2"; |
|
1700 | 1687 | }; |
|
1701 | 1688 | meta = { |
|
1702 | 1689 | license = [ { fullName = "AGPLv3 and Proprietary"; } ]; |
|
1703 | 1690 | }; |
|
1704 | 1691 | }; |
|
1705 | 1692 | scandir = super.buildPythonPackage { |
|
1706 | 1693 | name = "scandir-1.7"; |
|
1707 | 1694 | buildInputs = with self; []; |
|
1708 | 1695 | doCheck = false; |
|
1709 | 1696 | propagatedBuildInputs = with self; []; |
|
1710 | 1697 | src = fetchurl { |
|
1711 | 1698 | url = "https://pypi.python.org/packages/13/bb/e541b74230bbf7a20a3949a2ee6631be299378a784f5445aa5d0047c192b/scandir-1.7.tar.gz"; |
|
1712 | 1699 | md5 = "037e5f24d1a0e78b17faca72dea9555f"; |
|
1713 | 1700 | }; |
|
1714 | 1701 | meta = { |
|
1715 | 1702 | license = [ pkgs.lib.licenses.bsdOriginal { fullName = "New BSD License"; } ]; |
|
1716 | 1703 | }; |
|
1717 | 1704 | }; |
|
1718 | 1705 | setproctitle = super.buildPythonPackage { |
|
1719 | 1706 | name = "setproctitle-1.1.10"; |
|
1720 | 1707 | buildInputs = with self; []; |
|
1721 | 1708 | doCheck = false; |
|
1722 | 1709 | propagatedBuildInputs = with self; []; |
|
1723 | 1710 | src = fetchurl { |
|
1724 | 1711 | url = "https://pypi.python.org/packages/5a/0d/dc0d2234aacba6cf1a729964383e3452c52096dc695581248b548786f2b3/setproctitle-1.1.10.tar.gz"; |
|
1725 | 1712 | md5 = "2dcdd1b761700a5a13252fea3dfd1977"; |
|
1726 | 1713 | }; |
|
1727 | 1714 | meta = { |
|
1728 | 1715 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1729 | 1716 | }; |
|
1730 | 1717 | }; |
|
1731 | 1718 | setuptools = super.buildPythonPackage { |
|
1732 | 1719 | name = "setuptools-30.1.0"; |
|
1733 | 1720 | buildInputs = with self; []; |
|
1734 | 1721 | doCheck = false; |
|
1735 | 1722 | propagatedBuildInputs = with self; []; |
|
1736 | 1723 | src = fetchurl { |
|
1737 | 1724 | url = "https://pypi.python.org/packages/1e/43/002c8616db9a3e7be23c2556e39b90a32bb40ba0dc652de1999d5334d372/setuptools-30.1.0.tar.gz"; |
|
1738 | 1725 | md5 = "cac497f42e5096ac8df29e38d3f81c3e"; |
|
1739 | 1726 | }; |
|
1740 | 1727 | meta = { |
|
1741 | 1728 | license = [ pkgs.lib.licenses.mit ]; |
|
1742 | 1729 | }; |
|
1743 | 1730 | }; |
|
1744 | 1731 | setuptools-scm = super.buildPythonPackage { |
|
1745 | 1732 | name = "setuptools-scm-1.15.6"; |
|
1746 | 1733 | buildInputs = with self; []; |
|
1747 | 1734 | doCheck = false; |
|
1748 | 1735 | propagatedBuildInputs = with self; []; |
|
1749 | 1736 | src = fetchurl { |
|
1750 | 1737 | url = "https://pypi.python.org/packages/03/6d/aafdd01edd227ee879b691455bf19895091872af7e48192bea1758c82032/setuptools_scm-1.15.6.tar.gz"; |
|
1751 | 1738 | md5 = "f17493d53f0d842bb0152f214775640b"; |
|
1752 | 1739 | }; |
|
1753 | 1740 | meta = { |
|
1754 | 1741 | license = [ pkgs.lib.licenses.mit ]; |
|
1755 | 1742 | }; |
|
1756 | 1743 | }; |
|
1757 | 1744 | simplegeneric = super.buildPythonPackage { |
|
1758 | 1745 | name = "simplegeneric-0.8.1"; |
|
1759 | 1746 | buildInputs = with self; []; |
|
1760 | 1747 | doCheck = false; |
|
1761 | 1748 | propagatedBuildInputs = with self; []; |
|
1762 | 1749 | src = fetchurl { |
|
1763 | 1750 | url = "https://pypi.python.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b/simplegeneric-0.8.1.zip"; |
|
1764 | 1751 | md5 = "f9c1fab00fd981be588fc32759f474e3"; |
|
1765 | 1752 | }; |
|
1766 | 1753 | meta = { |
|
1767 | 1754 | license = [ pkgs.lib.licenses.zpt21 ]; |
|
1768 | 1755 | }; |
|
1769 | 1756 | }; |
|
1770 | 1757 | simplejson = super.buildPythonPackage { |
|
1771 | 1758 | name = "simplejson-3.11.1"; |
|
1772 | 1759 | buildInputs = with self; []; |
|
1773 | 1760 | doCheck = false; |
|
1774 | 1761 | propagatedBuildInputs = with self; []; |
|
1775 | 1762 | src = fetchurl { |
|
1776 | 1763 | url = "https://pypi.python.org/packages/08/48/c97b668d6da7d7bebe7ea1817a6f76394b0ec959cb04214ca833c34359df/simplejson-3.11.1.tar.gz"; |
|
1777 | 1764 | md5 = "6e2f1bd5fb0a926facf5d89d217a7183"; |
|
1778 | 1765 | }; |
|
1779 | 1766 | meta = { |
|
1780 | 1767 | license = [ { fullName = "Academic Free License (AFL)"; } pkgs.lib.licenses.mit ]; |
|
1781 | 1768 | }; |
|
1782 | 1769 | }; |
|
1783 | 1770 | six = super.buildPythonPackage { |
|
1784 | 1771 | name = "six-1.11.0"; |
|
1785 | 1772 | buildInputs = with self; []; |
|
1786 | 1773 | doCheck = false; |
|
1787 | 1774 | propagatedBuildInputs = with self; []; |
|
1788 | 1775 | src = fetchurl { |
|
1789 | 1776 | url = "https://pypi.python.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz"; |
|
1790 | 1777 | md5 = "d12789f9baf7e9fb2524c0c64f1773f8"; |
|
1791 | 1778 | }; |
|
1792 | 1779 | meta = { |
|
1793 | 1780 | license = [ pkgs.lib.licenses.mit ]; |
|
1794 | 1781 | }; |
|
1795 | 1782 | }; |
|
1796 | 1783 | sshpubkeys = super.buildPythonPackage { |
|
1797 | 1784 | name = "sshpubkeys-2.2.0"; |
|
1798 | 1785 | buildInputs = with self; []; |
|
1799 | 1786 | doCheck = false; |
|
1800 | 1787 | propagatedBuildInputs = with self; [pycrypto ecdsa]; |
|
1801 | 1788 | src = fetchurl { |
|
1802 | 1789 | url = "https://pypi.python.org/packages/27/da/337fabeb3dca6b62039a93ceaa636f25065e0ae92b575b1235342076cf0a/sshpubkeys-2.2.0.tar.gz"; |
|
1803 | 1790 | md5 = "458e45f6b92b1afa84f0ffe1f1c90935"; |
|
1804 | 1791 | }; |
|
1805 | 1792 | meta = { |
|
1806 | 1793 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1807 | 1794 | }; |
|
1808 | 1795 | }; |
|
1809 | 1796 | subprocess32 = super.buildPythonPackage { |
|
1810 | 1797 | name = "subprocess32-3.2.7"; |
|
1811 | 1798 | buildInputs = with self; []; |
|
1812 | 1799 | doCheck = false; |
|
1813 | 1800 | propagatedBuildInputs = with self; []; |
|
1814 | 1801 | src = fetchurl { |
|
1815 | 1802 | url = "https://pypi.python.org/packages/b8/2f/49e53b0d0e94611a2dc624a1ad24d41b6d94d0f1b0a078443407ea2214c2/subprocess32-3.2.7.tar.gz"; |
|
1816 | 1803 | md5 = "824c801e479d3e916879aae3e9c15e16"; |
|
1817 | 1804 | }; |
|
1818 | 1805 | meta = { |
|
1819 | 1806 | license = [ pkgs.lib.licenses.psfl ]; |
|
1820 | 1807 | }; |
|
1821 | 1808 | }; |
|
1822 | 1809 | supervisor = super.buildPythonPackage { |
|
1823 | 1810 | name = "supervisor-3.3.4"; |
|
1824 | 1811 | buildInputs = with self; []; |
|
1825 | 1812 | doCheck = false; |
|
1826 | 1813 | propagatedBuildInputs = with self; [meld3]; |
|
1827 | 1814 | src = fetchurl { |
|
1828 | 1815 | url = "https://pypi.python.org/packages/44/60/698e54b4a4a9b956b2d709b4b7b676119c833d811d53ee2500f1b5e96dc3/supervisor-3.3.4.tar.gz"; |
|
1829 | 1816 | md5 = "f1814d71d820ddfa8c86d46a72314cec"; |
|
1830 | 1817 | }; |
|
1831 | 1818 | meta = { |
|
1832 | 1819 | license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ]; |
|
1833 | 1820 | }; |
|
1834 | 1821 | }; |
|
1835 | 1822 | termcolor = super.buildPythonPackage { |
|
1836 | 1823 | name = "termcolor-1.1.0"; |
|
1837 | 1824 | buildInputs = with self; []; |
|
1838 | 1825 | doCheck = false; |
|
1839 | 1826 | propagatedBuildInputs = with self; []; |
|
1840 | 1827 | src = fetchurl { |
|
1841 | 1828 | url = "https://pypi.python.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz"; |
|
1842 | 1829 | md5 = "043e89644f8909d462fbbfa511c768df"; |
|
1843 | 1830 | }; |
|
1844 | 1831 | meta = { |
|
1845 | 1832 | license = [ pkgs.lib.licenses.mit ]; |
|
1846 | 1833 | }; |
|
1847 | 1834 | }; |
|
1848 | 1835 | testpath = super.buildPythonPackage { |
|
1849 | 1836 | name = "testpath-0.3.1"; |
|
1850 | 1837 | buildInputs = with self; []; |
|
1851 | 1838 | doCheck = false; |
|
1852 | 1839 | propagatedBuildInputs = with self; []; |
|
1853 | 1840 | src = fetchurl { |
|
1854 | 1841 | url = "https://pypi.python.org/packages/f4/8b/b71e9ee10e5f751e9d959bc750ab122ba04187f5aa52aabdc4e63b0e31a7/testpath-0.3.1.tar.gz"; |
|
1855 | 1842 | md5 = "2cd5ed5522fda781bb497c9d80ae2fc9"; |
|
1856 | 1843 | }; |
|
1857 | 1844 | meta = { |
|
1858 | 1845 | license = [ pkgs.lib.licenses.mit ]; |
|
1859 | 1846 | }; |
|
1860 | 1847 | }; |
|
1861 | 1848 | traitlets = super.buildPythonPackage { |
|
1862 | 1849 | name = "traitlets-4.3.2"; |
|
1863 | 1850 | buildInputs = with self; []; |
|
1864 | 1851 | doCheck = false; |
|
1865 | 1852 | propagatedBuildInputs = with self; [ipython-genutils six decorator enum34]; |
|
1866 | 1853 | src = fetchurl { |
|
1867 | 1854 | url = "https://pypi.python.org/packages/a5/98/7f5ef2fe9e9e071813aaf9cb91d1a732e0a68b6c44a32b38cb8e14c3f069/traitlets-4.3.2.tar.gz"; |
|
1868 | 1855 | md5 = "3068663f2f38fd939a9eb3a500ccc154"; |
|
1869 | 1856 | }; |
|
1870 | 1857 | meta = { |
|
1871 | 1858 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1872 | 1859 | }; |
|
1873 | 1860 | }; |
|
1874 | 1861 | transifex-client = super.buildPythonPackage { |
|
1875 | 1862 | name = "transifex-client-0.12.5"; |
|
1876 | 1863 | buildInputs = with self; []; |
|
1877 | 1864 | doCheck = false; |
|
1878 | 1865 | propagatedBuildInputs = with self; [urllib3 six]; |
|
1879 | 1866 | src = fetchurl { |
|
1880 | 1867 | url = "https://pypi.python.org/packages/7b/86/60f31a0c9b8d0b1266ce15b6c80b55f88522140c8acfc395d5aec5e23475/transifex-client-0.12.5.tar.gz"; |
|
1881 | 1868 | md5 = "e6e278117b23f60702c06e203b7e51ae"; |
|
1882 | 1869 | }; |
|
1883 | 1870 | meta = { |
|
1884 | 1871 | license = [ pkgs.lib.licenses.gpl2 ]; |
|
1885 | 1872 | }; |
|
1886 | 1873 | }; |
|
1887 | 1874 | translationstring = super.buildPythonPackage { |
|
1888 | 1875 | name = "translationstring-1.3"; |
|
1889 | 1876 | buildInputs = with self; []; |
|
1890 | 1877 | doCheck = false; |
|
1891 | 1878 | propagatedBuildInputs = with self; []; |
|
1892 | 1879 | src = fetchurl { |
|
1893 | 1880 | url = "https://pypi.python.org/packages/5e/eb/bee578cc150b44c653b63f5ebe258b5d0d812ddac12497e5f80fcad5d0b4/translationstring-1.3.tar.gz"; |
|
1894 | 1881 | md5 = "a4b62e0f3c189c783a1685b3027f7c90"; |
|
1895 | 1882 | }; |
|
1896 | 1883 | meta = { |
|
1897 | 1884 | license = [ { fullName = "BSD-like (http://repoze.org/license.html)"; } ]; |
|
1898 | 1885 | }; |
|
1899 | 1886 | }; |
|
1900 | 1887 | trollius = super.buildPythonPackage { |
|
1901 | 1888 | name = "trollius-1.0.4"; |
|
1902 | 1889 | buildInputs = with self; []; |
|
1903 | 1890 | doCheck = false; |
|
1904 | 1891 | propagatedBuildInputs = with self; [futures]; |
|
1905 | 1892 | src = fetchurl { |
|
1906 | 1893 | url = "https://pypi.python.org/packages/aa/e6/4141db437f55e6ee7a3fb69663239e3fde7841a811b4bef293145ad6c836/trollius-1.0.4.tar.gz"; |
|
1907 | 1894 | md5 = "3631a464d49d0cbfd30ab2918ef2b783"; |
|
1908 | 1895 | }; |
|
1909 | 1896 | meta = { |
|
1910 | 1897 | license = [ pkgs.lib.licenses.asl20 ]; |
|
1911 | 1898 | }; |
|
1912 | 1899 | }; |
|
1913 | 1900 | tzlocal = super.buildPythonPackage { |
|
1914 | 1901 | name = "tzlocal-1.5.1"; |
|
1915 | 1902 | buildInputs = with self; []; |
|
1916 | 1903 | doCheck = false; |
|
1917 | 1904 | propagatedBuildInputs = with self; [pytz]; |
|
1918 | 1905 | src = fetchurl { |
|
1919 | 1906 | url = "https://pypi.python.org/packages/cb/89/e3687d3ed99bc882793f82634e9824e62499fdfdc4b1ae39e211c5b05017/tzlocal-1.5.1.tar.gz"; |
|
1920 | 1907 | md5 = "4553be891efa0812c4adfb0c6e818eec"; |
|
1921 | 1908 | }; |
|
1922 | 1909 | meta = { |
|
1923 | 1910 | license = [ pkgs.lib.licenses.mit ]; |
|
1924 | 1911 | }; |
|
1925 | 1912 | }; |
|
1926 | 1913 | uWSGI = super.buildPythonPackage { |
|
1927 | 1914 | name = "uWSGI-2.0.15"; |
|
1928 | 1915 | buildInputs = with self; []; |
|
1929 | 1916 | doCheck = false; |
|
1930 | 1917 | propagatedBuildInputs = with self; []; |
|
1931 | 1918 | src = fetchurl { |
|
1932 | 1919 | url = "https://pypi.python.org/packages/bb/0a/45e5aa80dc135889594bb371c082d20fb7ee7303b174874c996888cc8511/uwsgi-2.0.15.tar.gz"; |
|
1933 | 1920 | md5 = "fc50bd9e83b7602fa474b032167010a7"; |
|
1934 | 1921 | }; |
|
1935 | 1922 | meta = { |
|
1936 | 1923 | license = [ pkgs.lib.licenses.gpl2 ]; |
|
1937 | 1924 | }; |
|
1938 | 1925 | }; |
|
1939 | 1926 | urllib3 = super.buildPythonPackage { |
|
1940 | 1927 | name = "urllib3-1.16"; |
|
1941 | 1928 | buildInputs = with self; []; |
|
1942 | 1929 | doCheck = false; |
|
1943 | 1930 | propagatedBuildInputs = with self; []; |
|
1944 | 1931 | src = fetchurl { |
|
1945 | 1932 | url = "https://pypi.python.org/packages/3b/f0/e763169124e3f5db0926bc3dbfcd580a105f9ca44cf5d8e6c7a803c9f6b5/urllib3-1.16.tar.gz"; |
|
1946 | 1933 | md5 = "fcaab1c5385c57deeb7053d3d7d81d59"; |
|
1947 | 1934 | }; |
|
1948 | 1935 | meta = { |
|
1949 | 1936 | license = [ pkgs.lib.licenses.mit ]; |
|
1950 | 1937 | }; |
|
1951 | 1938 | }; |
|
1952 | 1939 | venusian = super.buildPythonPackage { |
|
1953 | 1940 | name = "venusian-1.1.0"; |
|
1954 | 1941 | buildInputs = with self; []; |
|
1955 | 1942 | doCheck = false; |
|
1956 | 1943 | propagatedBuildInputs = with self; []; |
|
1957 | 1944 | src = fetchurl { |
|
1958 | 1945 | url = "https://pypi.python.org/packages/38/24/b4b470ab9e0a2e2e9b9030c7735828c8934b4c6b45befd1bb713ec2aeb2d/venusian-1.1.0.tar.gz"; |
|
1959 | 1946 | md5 = "56bc5e6756e4bda37bcdb94f74a72b8f"; |
|
1960 | 1947 | }; |
|
1961 | 1948 | meta = { |
|
1962 | 1949 | license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ]; |
|
1963 | 1950 | }; |
|
1964 | 1951 | }; |
|
1965 | 1952 | vine = super.buildPythonPackage { |
|
1966 | 1953 | name = "vine-1.1.4"; |
|
1967 | 1954 | buildInputs = with self; []; |
|
1968 | 1955 | doCheck = false; |
|
1969 | 1956 | propagatedBuildInputs = with self; []; |
|
1970 | 1957 | src = fetchurl { |
|
1971 | 1958 | url = "https://pypi.python.org/packages/32/23/36284986e011f3c130d802c3c66abd8f1aef371eae110ddf80c5ae22e1ff/vine-1.1.4.tar.gz"; |
|
1972 | 1959 | md5 = "9fdb971e7fd15b181b84f3bfcf20d11c"; |
|
1973 | 1960 | }; |
|
1974 | 1961 | meta = { |
|
1975 | 1962 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
1976 | 1963 | }; |
|
1977 | 1964 | }; |
|
1978 | 1965 | waitress = super.buildPythonPackage { |
|
1979 | 1966 | name = "waitress-1.1.0"; |
|
1980 | 1967 | buildInputs = with self; []; |
|
1981 | 1968 | doCheck = false; |
|
1982 | 1969 | propagatedBuildInputs = with self; []; |
|
1983 | 1970 | src = fetchurl { |
|
1984 | 1971 | url = "https://pypi.python.org/packages/3c/68/1c10dd5c556872ceebe88483b0436140048d39de83a84a06a8baa8136f4f/waitress-1.1.0.tar.gz"; |
|
1985 | 1972 | md5 = "0f1eb7fdfdbf2e6d18decbda1733045c"; |
|
1986 | 1973 | }; |
|
1987 | 1974 | meta = { |
|
1988 | 1975 | license = [ pkgs.lib.licenses.zpt21 ]; |
|
1989 | 1976 | }; |
|
1990 | 1977 | }; |
|
1991 | 1978 | wcwidth = super.buildPythonPackage { |
|
1992 | 1979 | name = "wcwidth-0.1.7"; |
|
1993 | 1980 | buildInputs = with self; []; |
|
1994 | 1981 | doCheck = false; |
|
1995 | 1982 | propagatedBuildInputs = with self; []; |
|
1996 | 1983 | src = fetchurl { |
|
1997 | 1984 | url = "https://pypi.python.org/packages/55/11/e4a2bb08bb450fdbd42cc709dd40de4ed2c472cf0ccb9e64af22279c5495/wcwidth-0.1.7.tar.gz"; |
|
1998 | 1985 | md5 = "b3b6a0a08f0c8a34d1de8cf44150a4ad"; |
|
1999 | 1986 | }; |
|
2000 | 1987 | meta = { |
|
2001 | 1988 | license = [ pkgs.lib.licenses.mit ]; |
|
2002 | 1989 | }; |
|
2003 | 1990 | }; |
|
2004 | 1991 | webencodings = super.buildPythonPackage { |
|
2005 | 1992 | name = "webencodings-0.5.1"; |
|
2006 | 1993 | buildInputs = with self; []; |
|
2007 | 1994 | doCheck = false; |
|
2008 | 1995 | propagatedBuildInputs = with self; []; |
|
2009 | 1996 | src = fetchurl { |
|
2010 | 1997 | url = "https://pypi.python.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz"; |
|
2011 | 1998 | md5 = "32f6e261d52e57bf7e1c4d41546d15b8"; |
|
2012 | 1999 | }; |
|
2013 | 2000 | meta = { |
|
2014 | 2001 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
2015 | 2002 | }; |
|
2016 | 2003 | }; |
|
2017 | 2004 | ws4py = super.buildPythonPackage { |
|
2018 | 2005 | name = "ws4py-0.4.3"; |
|
2019 | 2006 | buildInputs = with self; []; |
|
2020 | 2007 | doCheck = false; |
|
2021 | 2008 | propagatedBuildInputs = with self; []; |
|
2022 | 2009 | src = fetchurl { |
|
2023 | 2010 | url = "https://pypi.python.org/packages/fa/a1/33c43a4304ac3b4dc81deb93cbd329de9297dd034d75c47cce64fda806bc/ws4py-0.4.3.tar.gz"; |
|
2024 | 2011 | md5 = "d5834cf7d3965bb0da31bbb02bd8513a"; |
|
2025 | 2012 | }; |
|
2026 | 2013 | meta = { |
|
2027 | 2014 | license = [ pkgs.lib.licenses.bsdOriginal ]; |
|
2028 | 2015 | }; |
|
2029 | 2016 | }; |
|
2030 | 2017 | wsgiref = super.buildPythonPackage { |
|
2031 | 2018 | name = "wsgiref-0.1.2"; |
|
2032 | 2019 | buildInputs = with self; []; |
|
2033 | 2020 | doCheck = false; |
|
2034 | 2021 | propagatedBuildInputs = with self; []; |
|
2035 | 2022 | src = fetchurl { |
|
2036 | 2023 | url = "https://pypi.python.org/packages/41/9e/309259ce8dff8c596e8c26df86dbc4e848b9249fd36797fd60be456f03fc/wsgiref-0.1.2.zip"; |
|
2037 | 2024 | md5 = "29b146e6ebd0f9fb119fe321f7bcf6cb"; |
|
2038 | 2025 | }; |
|
2039 | 2026 | meta = { |
|
2040 | 2027 | license = [ { fullName = "PSF or ZPL"; } ]; |
|
2041 | 2028 | }; |
|
2042 | 2029 | }; |
|
2043 | 2030 | zope.cachedescriptors = super.buildPythonPackage { |
|
2044 | 2031 | name = "zope.cachedescriptors-4.3.1"; |
|
2045 | 2032 | buildInputs = with self; []; |
|
2046 | 2033 | doCheck = false; |
|
2047 | 2034 | propagatedBuildInputs = with self; [setuptools]; |
|
2048 | 2035 | src = fetchurl { |
|
2049 | 2036 | url = "https://pypi.python.org/packages/2f/89/ebe1890cc6d3291ebc935558fa764d5fffe571018dbbee200e9db78762cb/zope.cachedescriptors-4.3.1.tar.gz"; |
|
2050 | 2037 | md5 = "42f3693f43bc93f3b1eb86940f58acf3"; |
|
2051 | 2038 | }; |
|
2052 | 2039 | meta = { |
|
2053 | 2040 | license = [ pkgs.lib.licenses.zpt21 ]; |
|
2054 | 2041 | }; |
|
2055 | 2042 | }; |
|
2056 | 2043 | zope.deprecation = super.buildPythonPackage { |
|
2057 | 2044 | name = "zope.deprecation-4.3.0"; |
|
2058 | 2045 | buildInputs = with self; []; |
|
2059 | 2046 | doCheck = false; |
|
2060 | 2047 | propagatedBuildInputs = with self; [setuptools]; |
|
2061 | 2048 | src = fetchurl { |
|
2062 | 2049 | url = "https://pypi.python.org/packages/a1/18/2dc5e6bfe64fdc3b79411b67464c55bb0b43b127051a20f7f492ab767758/zope.deprecation-4.3.0.tar.gz"; |
|
2063 | 2050 | md5 = "2166b2cb7e0e96a21104e6f8f9b696bb"; |
|
2064 | 2051 | }; |
|
2065 | 2052 | meta = { |
|
2066 | 2053 | license = [ pkgs.lib.licenses.zpt21 ]; |
|
2067 | 2054 | }; |
|
2068 | 2055 | }; |
|
2069 | 2056 | zope.event = super.buildPythonPackage { |
|
2070 | 2057 | name = "zope.event-4.3.0"; |
|
2071 | 2058 | buildInputs = with self; []; |
|
2072 | 2059 | doCheck = false; |
|
2073 | 2060 | propagatedBuildInputs = with self; [setuptools]; |
|
2074 | 2061 | src = fetchurl { |
|
2075 | 2062 | url = "https://pypi.python.org/packages/9e/d0/54ba59f19a0635f6591b74be259cf6fbf67e73f4edda27b5cd0cf4d26efa/zope.event-4.3.0.tar.gz"; |
|
2076 | 2063 | md5 = "8ca737960741c6fd112972f3313303bd"; |
|
2077 | 2064 | }; |
|
2078 | 2065 | meta = { |
|
2079 | 2066 | license = [ pkgs.lib.licenses.zpt21 ]; |
|
2080 | 2067 | }; |
|
2081 | 2068 | }; |
|
2082 | 2069 | zope.interface = super.buildPythonPackage { |
|
2083 | 2070 | name = "zope.interface-4.4.3"; |
|
2084 | 2071 | buildInputs = with self; []; |
|
2085 | 2072 | doCheck = false; |
|
2086 | 2073 | propagatedBuildInputs = with self; [setuptools]; |
|
2087 | 2074 | src = fetchurl { |
|
2088 | 2075 | url = "https://pypi.python.org/packages/bd/d2/25349ed41f9dcff7b3baf87bd88a4c82396cf6e02f1f42bb68657a3132af/zope.interface-4.4.3.tar.gz"; |
|
2089 | 2076 | md5 = "8700a4f527c1203b34b10c2b4e7a6912"; |
|
2090 | 2077 | }; |
|
2091 | 2078 | meta = { |
|
2092 | 2079 | license = [ pkgs.lib.licenses.zpt21 ]; |
|
2093 | 2080 | }; |
|
2094 | 2081 | }; |
|
2095 | 2082 | |
|
2096 | 2083 | ### Test requirements |
|
2097 | 2084 | |
|
2098 | 2085 | |
|
2099 | 2086 | } |
@@ -1,132 +1,131 b'' | |||
|
1 | 1 | ## core |
|
2 | 2 | setuptools==30.1.0 |
|
3 | 3 | setuptools-scm==1.15.6 |
|
4 | 4 | |
|
5 | 5 | amqp==2.2.2 |
|
6 | 6 | authomatic==0.1.0.post1 |
|
7 | 7 | Babel==1.3 |
|
8 | 8 | Beaker==1.9.1 |
|
9 | 9 | celery==4.1.0 |
|
10 | 10 | Chameleon==2.24 |
|
11 | 11 | channelstream==0.5.2 |
|
12 | 12 | click==6.6 |
|
13 | 13 | colander==1.4.0 |
|
14 | 14 | configobj==5.0.6 |
|
15 | 15 | cssselect==1.0.1 |
|
16 | 16 | decorator==4.1.2 |
|
17 | 17 | deform==2.0.4 |
|
18 | 18 | docutils==0.14.0 |
|
19 | 19 | dogpile.cache==0.6.4 |
|
20 | 20 | dogpile.core==0.4.1 |
|
21 | 21 | ecdsa==0.13 |
|
22 | 22 | FormEncode==1.2.4 |
|
23 | 23 | future==0.14.3 |
|
24 | 24 | futures==3.0.2 |
|
25 | 25 | gnureadline==6.3.8 |
|
26 | 26 | infrae.cache==1.0.1 |
|
27 | 27 | iso8601==0.1.12 |
|
28 | 28 | itsdangerous==0.24 |
|
29 | 29 | Jinja2==2.9.6 |
|
30 | 30 | billiard==3.5.0.3 |
|
31 | 31 | kombu==4.1.0 |
|
32 | 32 | lxml==3.7.3 |
|
33 | 33 | Mako==1.0.7 |
|
34 | 34 | Markdown==2.6.11 |
|
35 | 35 | MarkupSafe==1.0.0 |
|
36 | 36 | msgpack-python==0.4.8 |
|
37 | 37 | MySQL-python==1.2.5 |
|
38 | 38 | objgraph==3.1.1 |
|
39 | 39 | packaging==15.2 |
|
40 | 40 | Paste==2.0.3 |
|
41 | 41 | PasteDeploy==1.5.2 |
|
42 | 42 | PasteScript==2.0.2 |
|
43 | 43 | pathlib2==2.3.0 |
|
44 | 44 | peppercorn==0.5 |
|
45 | 45 | psutil==5.4.3 |
|
46 | 46 | psycopg2==2.7.3.2 |
|
47 | 47 | py-bcrypt==0.4 |
|
48 | 48 | pycrypto==2.6.1 |
|
49 | 49 | pycurl==7.19.5 |
|
50 | 50 | pyflakes==0.8.1 |
|
51 | 51 | pygments-markdown-lexer==0.1.0.dev39 |
|
52 | 52 | Pygments==2.2.0 |
|
53 | 53 | pyparsing==1.5.7 |
|
54 | 54 | pyramid-beaker==0.8 |
|
55 | 55 | pyramid-debugtoolbar==4.3.0 |
|
56 | 56 | pyramid-jinja2==2.7 |
|
57 | 57 | pyramid-mako==1.0.2 |
|
58 | 58 | pyramid==1.9.1 |
|
59 | 59 | pysqlite==2.8.3 |
|
60 | 60 | python-dateutil |
|
61 | 61 | python-ldap==2.4.45 |
|
62 | 62 | python-memcached==1.58 |
|
63 | 63 | python-pam==1.8.2 |
|
64 | 64 | pytz==2018.3 |
|
65 | 65 | tzlocal==1.5.1 |
|
66 | 66 | pyzmq==14.6.0 |
|
67 | 67 | py-gfm==0.1.3 |
|
68 | recaptcha-client==1.0.6 | |
|
69 | 68 | redis==2.10.6 |
|
70 | 69 | repoze.lru==0.7 |
|
71 | 70 | requests==2.9.1 |
|
72 | 71 | Routes==2.4.1 |
|
73 | 72 | setproctitle==1.1.10 |
|
74 | 73 | simplejson==3.11.1 |
|
75 | 74 | six==1.11.0 |
|
76 | 75 | SQLAlchemy==1.1.15 |
|
77 | 76 | sshpubkeys==2.2.0 |
|
78 | 77 | subprocess32==3.2.7 |
|
79 | 78 | supervisor==3.3.4 |
|
80 | 79 | Tempita==0.5.2 |
|
81 | 80 | translationstring==1.3 |
|
82 | 81 | trollius==1.0.4 |
|
83 | 82 | urllib3==1.16 |
|
84 | 83 | URLObject==2.4.0 |
|
85 | 84 | venusian==1.1.0 |
|
86 | 85 | WebError==0.10.3 |
|
87 | 86 | WebHelpers2==2.0 |
|
88 | 87 | WebHelpers==1.3 |
|
89 | 88 | WebOb==1.7.4 |
|
90 | 89 | Whoosh==2.7.4 |
|
91 | 90 | wsgiref==0.1.2 |
|
92 | 91 | zope.cachedescriptors==4.3.1 |
|
93 | 92 | zope.deprecation==4.3.0 |
|
94 | 93 | zope.event==4.3.0 |
|
95 | 94 | zope.interface==4.4.3 |
|
96 | 95 | |
|
97 | 96 | |
|
98 | 97 | # IPYTHON RENDERING |
|
99 | 98 | # entrypoints backport, pypi version doesn't support egg installs |
|
100 | 99 | https://code.rhodecode.com/upstream/entrypoints/archive/96e6d645684e1af3d7df5b5272f3fe85a546b233.tar.gz?md5=7db37771aea9ac9fefe093e5d6987313#egg=entrypoints==0.2.2.rhodecode-upstream1 |
|
101 | 100 | nbconvert==5.3.1 |
|
102 | 101 | bleach==2.1.2 |
|
103 | 102 | nbformat==4.4.0 |
|
104 | 103 | jupyter_client==5.0.0 |
|
105 | 104 | |
|
106 | 105 | ## cli tools |
|
107 | 106 | alembic==0.9.8 |
|
108 | 107 | invoke==0.13.0 |
|
109 | 108 | bumpversion==0.5.3 |
|
110 | 109 | transifex-client==0.12.5 |
|
111 | 110 | |
|
112 | 111 | ## http servers |
|
113 | 112 | gevent==1.2.2 |
|
114 | 113 | greenlet==0.4.13 |
|
115 | 114 | gunicorn==19.7.1 |
|
116 | 115 | waitress==1.1.0 |
|
117 | 116 | uWSGI==2.0.15 |
|
118 | 117 | |
|
119 | 118 | ## debug |
|
120 | 119 | ipdb==0.10.3 |
|
121 | 120 | ipython==5.1.0 |
|
122 | 121 | CProfileV==1.0.7 |
|
123 | 122 | bottle==0.12.13 |
|
124 | 123 | |
|
125 | 124 | ## rhodecode-tools, special case |
|
126 | 125 | https://code.rhodecode.com/rhodecode-tools-ce/archive/v0.14.1.tar.gz?md5=0b9c2caad160b68889f8172ea54af7b2#egg=rhodecode-tools==0.14.1 |
|
127 | 126 | |
|
128 | 127 | ## appenlight |
|
129 | 128 | appenlight-client==0.6.25 |
|
130 | 129 | |
|
131 | 130 | ## test related requirements |
|
132 | 131 | -r requirements_test.txt |
@@ -1,133 +1,133 b'' | |||
|
1 | 1 | # -*- coding: utf-8 -*- |
|
2 | 2 | |
|
3 | 3 | # Copyright (C) 2016-2018 RhodeCode GmbH |
|
4 | 4 | # |
|
5 | 5 | # This program is free software: you can redistribute it and/or modify |
|
6 | 6 | # it under the terms of the GNU Affero General Public License, version 3 |
|
7 | 7 | # (only), as published by the Free Software Foundation. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU Affero General Public License |
|
15 | 15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
16 | 16 | # |
|
17 | 17 | # This program is dual-licensed. If you wish to learn more about the |
|
18 | 18 | # RhodeCode Enterprise Edition, including its added features, Support services, |
|
19 | 19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ |
|
20 | 20 | |
|
21 | 21 | |
|
22 | 22 | import mock |
|
23 | 23 | import pytest |
|
24 | 24 | |
|
25 | 25 | from rhodecode.apps._base import ADMIN_PREFIX |
|
26 | 26 | from rhodecode.apps.login.views import LoginView, CaptchaData |
|
27 | 27 | from rhodecode.model.settings import SettingsModel |
|
28 | 28 | from rhodecode.lib.utils2 import AttributeDict |
|
29 | 29 | from rhodecode.tests.utils import AssertResponse |
|
30 | 30 | |
|
31 | 31 | |
|
32 | 32 | class RhodeCodeSetting(object): |
|
33 | 33 | def __init__(self, name, value): |
|
34 | 34 | self.name = name |
|
35 | 35 | self.value = value |
|
36 | 36 | |
|
37 | 37 | def __enter__(self): |
|
38 | 38 | from rhodecode.model.settings import SettingsModel |
|
39 | 39 | model = SettingsModel() |
|
40 | 40 | self.old_setting = model.get_setting_by_name(self.name) |
|
41 | 41 | model.create_or_update_setting(name=self.name, val=self.value) |
|
42 | 42 | return self |
|
43 | 43 | |
|
44 | 44 | def __exit__(self, exc_type, exc_val, exc_tb): |
|
45 | 45 | model = SettingsModel() |
|
46 | 46 | if self.old_setting: |
|
47 | 47 | model.create_or_update_setting( |
|
48 | 48 | name=self.name, val=self.old_setting.app_settings_value) |
|
49 | 49 | else: |
|
50 | 50 | model.create_or_update_setting(name=self.name) |
|
51 | 51 | |
|
52 | 52 | |
|
53 | 53 | class TestRegisterCaptcha(object): |
|
54 | 54 | |
|
55 | 55 | @pytest.mark.parametrize('private_key, public_key, expected', [ |
|
56 | 56 | ('', '', CaptchaData(False, '', '')), |
|
57 | 57 | ('', 'pubkey', CaptchaData(False, '', 'pubkey')), |
|
58 | 58 | ('privkey', '', CaptchaData(True, 'privkey', '')), |
|
59 | 59 | ('privkey', 'pubkey', CaptchaData(True, 'privkey', 'pubkey')), |
|
60 | 60 | ]) |
|
61 | 61 | def test_get_captcha_data(self, private_key, public_key, expected, |
|
62 | 62 | request_stub, user_util): |
|
63 | 63 | request_stub.user = user_util.create_user().AuthUser() |
|
64 | 64 | request_stub.matched_route = AttributeDict({'name': 'login'}) |
|
65 | 65 | login_view = LoginView(mock.Mock(), request_stub) |
|
66 | 66 | |
|
67 | 67 | with RhodeCodeSetting('captcha_private_key', private_key): |
|
68 | 68 | with RhodeCodeSetting('captcha_public_key', public_key): |
|
69 | 69 | captcha = login_view._get_captcha_data() |
|
70 | 70 | assert captcha == expected |
|
71 | 71 | |
|
72 | 72 | @pytest.mark.parametrize('active', [False, True]) |
|
73 | 73 | @mock.patch.object(LoginView, '_get_captcha_data') |
|
74 | 74 | def test_private_key_does_not_leak_to_html( |
|
75 | 75 | self, m_get_captcha_data, active, app): |
|
76 | 76 | captcha = CaptchaData( |
|
77 | 77 | active=active, private_key='PRIVATE_KEY', public_key='PUBLIC_KEY') |
|
78 | 78 | m_get_captcha_data.return_value = captcha |
|
79 | 79 | |
|
80 | 80 | response = app.get(ADMIN_PREFIX + '/register') |
|
81 | 81 | assert 'PRIVATE_KEY' not in response |
|
82 | 82 | |
|
83 | 83 | @pytest.mark.parametrize('active', [False, True]) |
|
84 | 84 | @mock.patch.object(LoginView, '_get_captcha_data') |
|
85 | 85 | def test_register_view_renders_captcha( |
|
86 | 86 | self, m_get_captcha_data, active, app): |
|
87 | 87 | captcha = CaptchaData( |
|
88 | 88 | active=active, private_key='PRIVATE_KEY', public_key='PUBLIC_KEY') |
|
89 | 89 | m_get_captcha_data.return_value = captcha |
|
90 | 90 | |
|
91 | 91 | response = app.get(ADMIN_PREFIX + '/register') |
|
92 | 92 | |
|
93 | 93 | assertr = AssertResponse(response) |
|
94 | 94 | if active: |
|
95 | 95 | assertr.one_element_exists('#recaptcha_field') |
|
96 | 96 | else: |
|
97 | 97 | assertr.no_element_exists('#recaptcha_field') |
|
98 | 98 | |
|
99 | 99 | @pytest.mark.parametrize('valid', [False, True]) |
|
100 | @mock.patch('rhodecode.apps.login.views.submit') | |
|
100 | @mock.patch.object(LoginView, 'validate_captcha') | |
|
101 | 101 | @mock.patch.object(LoginView, '_get_captcha_data') |
|
102 | 102 | def test_register_with_active_captcha( |
|
103 |
self, m_get_captcha_data, m_ |
|
|
103 | self, m_get_captcha_data, m_validate_captcha, valid, app, csrf_token): | |
|
104 | 104 | captcha = CaptchaData( |
|
105 | 105 | active=True, private_key='PRIVATE_KEY', public_key='PUBLIC_KEY') |
|
106 | 106 | m_get_captcha_data.return_value = captcha |
|
107 | 107 | m_response = mock.Mock() |
|
108 | 108 | m_response.is_valid = valid |
|
109 |
m_ |
|
|
109 | m_validate_captcha.return_value = valid, 'ok' | |
|
110 | 110 | |
|
111 | 111 | params = { |
|
112 | 112 | 'csrf_token': csrf_token, |
|
113 | 113 | 'email': 'pytest@example.com', |
|
114 | 114 | 'firstname': 'pytest-firstname', |
|
115 | 115 | 'lastname': 'pytest-lastname', |
|
116 | 116 | 'password': 'secret', |
|
117 | 117 | 'password_confirmation': 'secret', |
|
118 | 118 | 'username': 'pytest', |
|
119 | 119 | } |
|
120 | 120 | response = app.post(ADMIN_PREFIX + '/register', params=params) |
|
121 | 121 | |
|
122 | 122 | if valid: |
|
123 | 123 | # If we provided a valid captcha input we expect a successful |
|
124 | 124 | # registration and redirect to the login page. |
|
125 | 125 | assert response.status_int == 302 |
|
126 | 126 | assert 'location' in response.headers |
|
127 | 127 | assert ADMIN_PREFIX + '/login' in response.headers['location'] |
|
128 | 128 | else: |
|
129 | 129 | # If captche input is invalid we expect to stay on the registration |
|
130 | 130 | # page with an error message displayed. |
|
131 | 131 | assertr = AssertResponse(response) |
|
132 | 132 | assert response.status_int == 200 |
|
133 | 133 | assertr.one_element_exists('#recaptcha_field ~ span.error-message') |
@@ -1,435 +1,454 b'' | |||
|
1 | 1 | # -*- coding: utf-8 -*- |
|
2 | 2 | |
|
3 | 3 | # Copyright (C) 2016-2018 RhodeCode GmbH |
|
4 | 4 | # |
|
5 | 5 | # This program is free software: you can redistribute it and/or modify |
|
6 | 6 | # it under the terms of the GNU Affero General Public License, version 3 |
|
7 | 7 | # (only), as published by the Free Software Foundation. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU Affero General Public License |
|
15 | 15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
16 | 16 | # |
|
17 | 17 | # This program is dual-licensed. If you wish to learn more about the |
|
18 | 18 | # RhodeCode Enterprise Edition, including its added features, Support services, |
|
19 | 19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ |
|
20 | 20 | |
|
21 | 21 | import time |
|
22 | 22 | import collections |
|
23 | 23 | import datetime |
|
24 | 24 | import formencode |
|
25 | 25 | import formencode.htmlfill |
|
26 | 26 | import logging |
|
27 | 27 | import urlparse |
|
28 | import requests | |
|
28 | 29 | |
|
29 | 30 | from pyramid.httpexceptions import HTTPFound |
|
30 | 31 | from pyramid.view import view_config |
|
31 | from recaptcha.client.captcha import submit | |
|
32 | 32 | |
|
33 | 33 | from rhodecode.apps._base import BaseAppView |
|
34 | 34 | from rhodecode.authentication.base import authenticate, HTTP_TYPE |
|
35 | 35 | from rhodecode.events import UserRegistered, trigger |
|
36 | 36 | from rhodecode.lib import helpers as h |
|
37 | 37 | from rhodecode.lib import audit_logger |
|
38 | 38 | from rhodecode.lib.auth import ( |
|
39 | 39 | AuthUser, HasPermissionAnyDecorator, CSRFRequired) |
|
40 | 40 | from rhodecode.lib.base import get_ip_addr |
|
41 | 41 | from rhodecode.lib.exceptions import UserCreationError |
|
42 | 42 | from rhodecode.lib.utils2 import safe_str |
|
43 | 43 | from rhodecode.model.db import User, UserApiKeys |
|
44 | 44 | from rhodecode.model.forms import LoginForm, RegisterForm, PasswordResetForm |
|
45 | 45 | from rhodecode.model.meta import Session |
|
46 | 46 | from rhodecode.model.auth_token import AuthTokenModel |
|
47 | 47 | from rhodecode.model.settings import SettingsModel |
|
48 | 48 | from rhodecode.model.user import UserModel |
|
49 | 49 | from rhodecode.translation import _ |
|
50 | 50 | |
|
51 | 51 | |
|
52 | 52 | log = logging.getLogger(__name__) |
|
53 | 53 | |
|
54 | 54 | CaptchaData = collections.namedtuple( |
|
55 | 55 | 'CaptchaData', 'active, private_key, public_key') |
|
56 | 56 | |
|
57 | 57 | |
|
58 | 58 | def _store_user_in_session(session, username, remember=False): |
|
59 | 59 | user = User.get_by_username(username, case_insensitive=True) |
|
60 | 60 | auth_user = AuthUser(user.user_id) |
|
61 | 61 | auth_user.set_authenticated() |
|
62 | 62 | cs = auth_user.get_cookie_store() |
|
63 | 63 | session['rhodecode_user'] = cs |
|
64 | 64 | user.update_lastlogin() |
|
65 | 65 | Session().commit() |
|
66 | 66 | |
|
67 | 67 | # If they want to be remembered, update the cookie |
|
68 | 68 | if remember: |
|
69 | 69 | _year = (datetime.datetime.now() + |
|
70 | 70 | datetime.timedelta(seconds=60 * 60 * 24 * 365)) |
|
71 | 71 | session._set_cookie_expires(_year) |
|
72 | 72 | |
|
73 | 73 | session.save() |
|
74 | 74 | |
|
75 | 75 | safe_cs = cs.copy() |
|
76 | 76 | safe_cs['password'] = '****' |
|
77 | 77 | log.info('user %s is now authenticated and stored in ' |
|
78 | 78 | 'session, session attrs %s', username, safe_cs) |
|
79 | 79 | |
|
80 | 80 | # dumps session attrs back to cookie |
|
81 | 81 | session._update_cookie_out() |
|
82 | 82 | # we set new cookie |
|
83 | 83 | headers = None |
|
84 | 84 | if session.request['set_cookie']: |
|
85 | 85 | # send set-cookie headers back to response to update cookie |
|
86 | 86 | headers = [('Set-Cookie', session.request['cookie_out'])] |
|
87 | 87 | return headers |
|
88 | 88 | |
|
89 | 89 | |
|
90 | 90 | def get_came_from(request): |
|
91 | 91 | came_from = safe_str(request.GET.get('came_from', '')) |
|
92 | 92 | parsed = urlparse.urlparse(came_from) |
|
93 | 93 | allowed_schemes = ['http', 'https'] |
|
94 | 94 | default_came_from = h.route_path('home') |
|
95 | 95 | if parsed.scheme and parsed.scheme not in allowed_schemes: |
|
96 | 96 | log.error('Suspicious URL scheme detected %s for url %s' % |
|
97 | 97 | (parsed.scheme, parsed)) |
|
98 | 98 | came_from = default_came_from |
|
99 | 99 | elif parsed.netloc and request.host != parsed.netloc: |
|
100 | 100 | log.error('Suspicious NETLOC detected %s for url %s server url ' |
|
101 | 101 | 'is: %s' % (parsed.netloc, parsed, request.host)) |
|
102 | 102 | came_from = default_came_from |
|
103 | 103 | elif any(bad_str in parsed.path for bad_str in ('\r', '\n')): |
|
104 | 104 | log.error('Header injection detected `%s` for url %s server url ' % |
|
105 | 105 | (parsed.path, parsed)) |
|
106 | 106 | came_from = default_came_from |
|
107 | 107 | |
|
108 | 108 | return came_from or default_came_from |
|
109 | 109 | |
|
110 | 110 | |
|
111 | 111 | class LoginView(BaseAppView): |
|
112 | 112 | |
|
113 | 113 | def load_default_context(self): |
|
114 | 114 | c = self._get_local_tmpl_context() |
|
115 | 115 | c.came_from = get_came_from(self.request) |
|
116 | 116 | |
|
117 | 117 | return c |
|
118 | 118 | |
|
119 | 119 | def _get_captcha_data(self): |
|
120 | 120 | settings = SettingsModel().get_all_settings() |
|
121 | 121 | private_key = settings.get('rhodecode_captcha_private_key') |
|
122 | 122 | public_key = settings.get('rhodecode_captcha_public_key') |
|
123 | 123 | active = bool(private_key) |
|
124 | 124 | return CaptchaData( |
|
125 | 125 | active=active, private_key=private_key, public_key=public_key) |
|
126 | 126 | |
|
127 | def validate_captcha(self, private_key): | |
|
128 | ||
|
129 | captcha_rs = self.request.POST.get('g-recaptcha-response') | |
|
130 | url = "https://www.google.com/recaptcha/api/siteverify" | |
|
131 | params = { | |
|
132 | 'secret': private_key, | |
|
133 | 'response': captcha_rs, | |
|
134 | 'remoteip': get_ip_addr(self.request.environ) | |
|
135 | } | |
|
136 | verify_rs = requests.get(url, params=params, verify=True) | |
|
137 | verify_rs = verify_rs.json() | |
|
138 | captcha_status = verify_rs.get('success', False) | |
|
139 | captcha_errors = verify_rs.get('error-codes', []) | |
|
140 | if not isinstance(captcha_errors, list): | |
|
141 | captcha_errors = [captcha_errors] | |
|
142 | captcha_errors = ', '.join(captcha_errors) | |
|
143 | captcha_message = '' | |
|
144 | if captcha_status is False: | |
|
145 | captcha_message = "Bad captcha. Errors: {}".format( | |
|
146 | captcha_errors) | |
|
147 | ||
|
148 | return captcha_status, captcha_message | |
|
149 | ||
|
127 | 150 | @view_config( |
|
128 | 151 | route_name='login', request_method='GET', |
|
129 | 152 | renderer='rhodecode:templates/login.mako') |
|
130 | 153 | def login(self): |
|
131 | 154 | c = self.load_default_context() |
|
132 | 155 | auth_user = self._rhodecode_user |
|
133 | 156 | |
|
134 | 157 | # redirect if already logged in |
|
135 | 158 | if (auth_user.is_authenticated and |
|
136 | 159 | not auth_user.is_default and auth_user.ip_allowed): |
|
137 | 160 | raise HTTPFound(c.came_from) |
|
138 | 161 | |
|
139 | 162 | # check if we use headers plugin, and try to login using it. |
|
140 | 163 | try: |
|
141 | 164 | log.debug('Running PRE-AUTH for headers based authentication') |
|
142 | 165 | auth_info = authenticate( |
|
143 | 166 | '', '', self.request.environ, HTTP_TYPE, skip_missing=True) |
|
144 | 167 | if auth_info: |
|
145 | 168 | headers = _store_user_in_session( |
|
146 | 169 | self.session, auth_info.get('username')) |
|
147 | 170 | raise HTTPFound(c.came_from, headers=headers) |
|
148 | 171 | except UserCreationError as e: |
|
149 | 172 | log.error(e) |
|
150 | 173 | h.flash(e, category='error') |
|
151 | 174 | |
|
152 | 175 | return self._get_template_context(c) |
|
153 | 176 | |
|
154 | 177 | @view_config( |
|
155 | 178 | route_name='login', request_method='POST', |
|
156 | 179 | renderer='rhodecode:templates/login.mako') |
|
157 | 180 | def login_post(self): |
|
158 | 181 | c = self.load_default_context() |
|
159 | 182 | |
|
160 | 183 | login_form = LoginForm(self.request.translate)() |
|
161 | 184 | |
|
162 | 185 | try: |
|
163 | 186 | self.session.invalidate() |
|
164 | 187 | form_result = login_form.to_python(self.request.POST) |
|
165 | 188 | # form checks for username/password, now we're authenticated |
|
166 | 189 | headers = _store_user_in_session( |
|
167 | 190 | self.session, |
|
168 | 191 | username=form_result['username'], |
|
169 | 192 | remember=form_result['remember']) |
|
170 | 193 | log.debug('Redirecting to "%s" after login.', c.came_from) |
|
171 | 194 | |
|
172 | 195 | audit_user = audit_logger.UserWrap( |
|
173 | 196 | username=self.request.POST.get('username'), |
|
174 | 197 | ip_addr=self.request.remote_addr) |
|
175 | 198 | action_data = {'user_agent': self.request.user_agent} |
|
176 | 199 | audit_logger.store_web( |
|
177 | 200 | 'user.login.success', action_data=action_data, |
|
178 | 201 | user=audit_user, commit=True) |
|
179 | 202 | |
|
180 | 203 | raise HTTPFound(c.came_from, headers=headers) |
|
181 | 204 | except formencode.Invalid as errors: |
|
182 | 205 | defaults = errors.value |
|
183 | 206 | # remove password from filling in form again |
|
184 | 207 | defaults.pop('password', None) |
|
185 | 208 | render_ctx = { |
|
186 | 209 | 'errors': errors.error_dict, |
|
187 | 210 | 'defaults': defaults, |
|
188 | 211 | } |
|
189 | 212 | |
|
190 | 213 | audit_user = audit_logger.UserWrap( |
|
191 | 214 | username=self.request.POST.get('username'), |
|
192 | 215 | ip_addr=self.request.remote_addr) |
|
193 | 216 | action_data = {'user_agent': self.request.user_agent} |
|
194 | 217 | audit_logger.store_web( |
|
195 | 218 | 'user.login.failure', action_data=action_data, |
|
196 | 219 | user=audit_user, commit=True) |
|
197 | 220 | return self._get_template_context(c, **render_ctx) |
|
198 | 221 | |
|
199 | 222 | except UserCreationError as e: |
|
200 | 223 | # headers auth or other auth functions that create users on |
|
201 | 224 | # the fly can throw this exception signaling that there's issue |
|
202 | 225 | # with user creation, explanation should be provided in |
|
203 | 226 | # Exception itself |
|
204 | 227 | h.flash(e, category='error') |
|
205 | 228 | return self._get_template_context(c) |
|
206 | 229 | |
|
207 | 230 | @CSRFRequired() |
|
208 | 231 | @view_config(route_name='logout', request_method='POST') |
|
209 | 232 | def logout(self): |
|
210 | 233 | auth_user = self._rhodecode_user |
|
211 | 234 | log.info('Deleting session for user: `%s`', auth_user) |
|
212 | 235 | |
|
213 | 236 | action_data = {'user_agent': self.request.user_agent} |
|
214 | 237 | audit_logger.store_web( |
|
215 | 238 | 'user.logout', action_data=action_data, |
|
216 | 239 | user=auth_user, commit=True) |
|
217 | 240 | self.session.delete() |
|
218 | 241 | return HTTPFound(h.route_path('home')) |
|
219 | 242 | |
|
220 | 243 | @HasPermissionAnyDecorator( |
|
221 | 244 | 'hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate') |
|
222 | 245 | @view_config( |
|
223 | 246 | route_name='register', request_method='GET', |
|
224 | 247 | renderer='rhodecode:templates/register.mako',) |
|
225 | 248 | def register(self, defaults=None, errors=None): |
|
226 | 249 | c = self.load_default_context() |
|
227 | 250 | defaults = defaults or {} |
|
228 | 251 | errors = errors or {} |
|
229 | 252 | |
|
230 | 253 | settings = SettingsModel().get_all_settings() |
|
231 | 254 | register_message = settings.get('rhodecode_register_message') or '' |
|
232 | 255 | captcha = self._get_captcha_data() |
|
233 | 256 | auto_active = 'hg.register.auto_activate' in User.get_default_user()\ |
|
234 | 257 | .AuthUser().permissions['global'] |
|
235 | 258 | |
|
236 | 259 | render_ctx = self._get_template_context(c) |
|
237 | 260 | render_ctx.update({ |
|
238 | 261 | 'defaults': defaults, |
|
239 | 262 | 'errors': errors, |
|
240 | 263 | 'auto_active': auto_active, |
|
241 | 264 | 'captcha_active': captcha.active, |
|
242 | 265 | 'captcha_public_key': captcha.public_key, |
|
243 | 266 | 'register_message': register_message, |
|
244 | 267 | }) |
|
245 | 268 | return render_ctx |
|
246 | 269 | |
|
247 | 270 | @HasPermissionAnyDecorator( |
|
248 | 271 | 'hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate') |
|
249 | 272 | @view_config( |
|
250 | 273 | route_name='register', request_method='POST', |
|
251 | 274 | renderer='rhodecode:templates/register.mako') |
|
252 | 275 | def register_post(self): |
|
253 | 276 | self.load_default_context() |
|
254 | 277 | captcha = self._get_captcha_data() |
|
255 | 278 | auto_active = 'hg.register.auto_activate' in User.get_default_user()\ |
|
256 | 279 | .AuthUser().permissions['global'] |
|
257 | 280 | |
|
258 | 281 | register_form = RegisterForm(self.request.translate)() |
|
259 | 282 | try: |
|
260 | 283 | |
|
261 | 284 | form_result = register_form.to_python(self.request.POST) |
|
262 | 285 | form_result['active'] = auto_active |
|
263 | 286 | |
|
264 | 287 | if captcha.active: |
|
265 | response = submit( | |
|
266 | self.request.POST.get('recaptcha_challenge_field'), | |
|
267 | self.request.POST.get('recaptcha_response_field'), | |
|
268 |
|
|
|
269 | remoteip=get_ip_addr(self.request.environ)) | |
|
270 | if not response.is_valid: | |
|
288 | captcha_status, captcha_message = self.validate_captcha( | |
|
289 | captcha.private_key) | |
|
290 | ||
|
291 | if not captcha_status: | |
|
271 | 292 | _value = form_result |
|
272 | 293 | _msg = _('Bad captcha') |
|
273 | error_dict = {'recaptcha_field': _msg} | |
|
274 |
raise formencode.Invalid( |
|
|
275 |
|
|
|
294 | error_dict = {'recaptcha_field': captcha_message} | |
|
295 | raise formencode.Invalid( | |
|
296 | _msg, _value, None, error_dict=error_dict) | |
|
276 | 297 | |
|
277 | 298 | new_user = UserModel().create_registration(form_result) |
|
278 | 299 | |
|
279 | 300 | action_data = {'data': new_user.get_api_data(), |
|
280 | 301 | 'user_agent': self.request.user_agent} |
|
281 | 302 | audit_logger.store_web( |
|
282 | 303 | 'user.register', action_data=action_data, |
|
283 | 304 | user=new_user) |
|
284 | 305 | |
|
285 | 306 | event = UserRegistered(user=new_user, session=self.session) |
|
286 | 307 | trigger(event) |
|
287 | 308 | h.flash( |
|
288 | 309 | _('You have successfully registered with RhodeCode'), |
|
289 | 310 | category='success') |
|
290 | 311 | Session().commit() |
|
291 | 312 | |
|
292 | 313 | redirect_ro = self.request.route_path('login') |
|
293 | 314 | raise HTTPFound(redirect_ro) |
|
294 | 315 | |
|
295 | 316 | except formencode.Invalid as errors: |
|
296 | 317 | errors.value.pop('password', None) |
|
297 | 318 | errors.value.pop('password_confirmation', None) |
|
298 | 319 | return self.register( |
|
299 | 320 | defaults=errors.value, errors=errors.error_dict) |
|
300 | 321 | |
|
301 | 322 | except UserCreationError as e: |
|
302 | 323 | # container auth or other auth functions that create users on |
|
303 | 324 | # the fly can throw this exception signaling that there's issue |
|
304 | 325 | # with user creation, explanation should be provided in |
|
305 | 326 | # Exception itself |
|
306 | 327 | h.flash(e, category='error') |
|
307 | 328 | return self.register() |
|
308 | 329 | |
|
309 | 330 | @view_config( |
|
310 | 331 | route_name='reset_password', request_method=('GET', 'POST'), |
|
311 | 332 | renderer='rhodecode:templates/password_reset.mako') |
|
312 | 333 | def password_reset(self): |
|
313 | 334 | c = self.load_default_context() |
|
314 | 335 | captcha = self._get_captcha_data() |
|
315 | 336 | |
|
316 | 337 | template_context = { |
|
317 | 338 | 'captcha_active': captcha.active, |
|
318 | 339 | 'captcha_public_key': captcha.public_key, |
|
319 | 340 | 'defaults': {}, |
|
320 | 341 | 'errors': {}, |
|
321 | 342 | } |
|
322 | 343 | |
|
323 | 344 | # always send implicit message to prevent from discovery of |
|
324 | 345 | # matching emails |
|
325 | 346 | msg = _('If such email exists, a password reset link was sent to it.') |
|
326 | 347 | |
|
327 | 348 | if self.request.POST: |
|
328 | 349 | if h.HasPermissionAny('hg.password_reset.disabled')(): |
|
329 | 350 | _email = self.request.POST.get('email', '') |
|
330 | 351 | log.error('Failed attempt to reset password for `%s`.', _email) |
|
331 | 352 | h.flash(_('Password reset has been disabled.'), |
|
332 | 353 | category='error') |
|
333 | 354 | return HTTPFound(self.request.route_path('reset_password')) |
|
334 | 355 | |
|
335 | 356 | password_reset_form = PasswordResetForm(self.request.translate)() |
|
336 | 357 | try: |
|
337 | 358 | form_result = password_reset_form.to_python( |
|
338 | 359 | self.request.POST) |
|
339 | 360 | user_email = form_result['email'] |
|
340 | 361 | |
|
341 | 362 | if captcha.active: |
|
342 | response = submit( | |
|
343 |
|
|
|
344 | self.request.POST.get('recaptcha_response_field'), | |
|
345 |
|
|
|
346 | remoteip=get_ip_addr(self.request.environ)) | |
|
347 | if not response.is_valid: | |
|
363 | captcha_status, captcha_message = self.validate_captcha( | |
|
364 | captcha.private_key) | |
|
365 | ||
|
366 | if not captcha_status: | |
|
348 | 367 | _value = form_result |
|
349 | 368 | _msg = _('Bad captcha') |
|
350 | error_dict = {'recaptcha_field': _msg} | |
|
369 | error_dict = {'recaptcha_field': captcha_message} | |
|
351 | 370 | raise formencode.Invalid( |
|
352 | 371 | _msg, _value, None, error_dict=error_dict) |
|
353 | 372 | |
|
354 | 373 | # Generate reset URL and send mail. |
|
355 | 374 | user = User.get_by_email(user_email) |
|
356 | 375 | |
|
357 | 376 | # generate password reset token that expires in 10minutes |
|
358 | 377 | desc = 'Generated token for password reset from {}'.format( |
|
359 | 378 | datetime.datetime.now().isoformat()) |
|
360 | 379 | reset_token = AuthTokenModel().create( |
|
361 | 380 | user, lifetime=10, |
|
362 | 381 | description=desc, |
|
363 | 382 | role=UserApiKeys.ROLE_PASSWORD_RESET) |
|
364 | 383 | Session().commit() |
|
365 | 384 | |
|
366 | 385 | log.debug('Successfully created password recovery token') |
|
367 | 386 | password_reset_url = self.request.route_url( |
|
368 | 387 | 'reset_password_confirmation', |
|
369 | 388 | _query={'key': reset_token.api_key}) |
|
370 | 389 | UserModel().reset_password_link( |
|
371 | 390 | form_result, password_reset_url) |
|
372 | 391 | # Display success message and redirect. |
|
373 | 392 | h.flash(msg, category='success') |
|
374 | 393 | |
|
375 | 394 | action_data = {'email': user_email, |
|
376 | 395 | 'user_agent': self.request.user_agent} |
|
377 | 396 | audit_logger.store_web( |
|
378 | 397 | 'user.password.reset_request', action_data=action_data, |
|
379 | 398 | user=self._rhodecode_user, commit=True) |
|
380 | 399 | return HTTPFound(self.request.route_path('reset_password')) |
|
381 | 400 | |
|
382 | 401 | except formencode.Invalid as errors: |
|
383 | 402 | template_context.update({ |
|
384 | 403 | 'defaults': errors.value, |
|
385 | 404 | 'errors': errors.error_dict, |
|
386 | 405 | }) |
|
387 | 406 | if not self.request.POST.get('email'): |
|
388 | 407 | # case of empty email, we want to report that |
|
389 | 408 | return self._get_template_context(c, **template_context) |
|
390 | 409 | |
|
391 | 410 | if 'recaptcha_field' in errors.error_dict: |
|
392 | 411 | # case of failed captcha |
|
393 | 412 | return self._get_template_context(c, **template_context) |
|
394 | 413 | |
|
395 | 414 | log.debug('faking response on invalid password reset') |
|
396 | 415 | # make this take 2s, to prevent brute forcing. |
|
397 | 416 | time.sleep(2) |
|
398 | 417 | h.flash(msg, category='success') |
|
399 | 418 | return HTTPFound(self.request.route_path('reset_password')) |
|
400 | 419 | |
|
401 | 420 | return self._get_template_context(c, **template_context) |
|
402 | 421 | |
|
403 | 422 | @view_config(route_name='reset_password_confirmation', |
|
404 | 423 | request_method='GET') |
|
405 | 424 | def password_reset_confirmation(self): |
|
406 | 425 | self.load_default_context() |
|
407 | 426 | if self.request.GET and self.request.GET.get('key'): |
|
408 | 427 | # make this take 2s, to prevent brute forcing. |
|
409 | 428 | time.sleep(2) |
|
410 | 429 | |
|
411 | 430 | token = AuthTokenModel().get_auth_token( |
|
412 | 431 | self.request.GET.get('key')) |
|
413 | 432 | |
|
414 | 433 | # verify token is the correct role |
|
415 | 434 | if token is None or token.role != UserApiKeys.ROLE_PASSWORD_RESET: |
|
416 | 435 | log.debug('Got token with role:%s expected is %s', |
|
417 | 436 | getattr(token, 'role', 'EMPTY_TOKEN'), |
|
418 | 437 | UserApiKeys.ROLE_PASSWORD_RESET) |
|
419 | 438 | h.flash( |
|
420 | 439 | _('Given reset token is invalid'), category='error') |
|
421 | 440 | return HTTPFound(self.request.route_path('reset_password')) |
|
422 | 441 | |
|
423 | 442 | try: |
|
424 | 443 | owner = token.user |
|
425 | 444 | data = {'email': owner.email, 'token': token.api_key} |
|
426 | 445 | UserModel().reset_password(data) |
|
427 | 446 | h.flash( |
|
428 | 447 | _('Your password reset was successful, ' |
|
429 | 448 | 'a new password has been sent to your email'), |
|
430 | 449 | category='success') |
|
431 | 450 | except Exception as e: |
|
432 | 451 | log.error(e) |
|
433 | 452 | return HTTPFound(self.request.route_path('reset_password')) |
|
434 | 453 | |
|
435 | 454 | return HTTPFound(self.request.route_path('login')) |
@@ -1,376 +1,373 b'' | |||
|
1 | 1 | { |
|
2 | 2 | "libnghttp2-1.7.1": { |
|
3 | 3 | "MIT License": "http://spdx.org/licenses/MIT" |
|
4 | 4 | }, |
|
5 | 5 | "nodejs-4.3.1": { |
|
6 | 6 | "MIT License": "http://spdx.org/licenses/MIT" |
|
7 | 7 | }, |
|
8 | 8 | "python-2.7.12": { |
|
9 | 9 | "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0" |
|
10 | 10 | }, |
|
11 | 11 | "python2.7-Babel-1.3": { |
|
12 | 12 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
13 | 13 | }, |
|
14 | 14 | "python2.7-Beaker-1.7.0": { |
|
15 | 15 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
16 | 16 | }, |
|
17 | 17 | "python2.7-Chameleon-2.24": { |
|
18 | 18 | "BSD-like": "http://repoze.org/license.html" |
|
19 | 19 | }, |
|
20 | 20 | "python2.7-FormEncode-1.2.4": { |
|
21 | 21 | "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0" |
|
22 | 22 | }, |
|
23 | 23 | "python2.7-Jinja2-2.7.3": { |
|
24 | 24 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
25 | 25 | }, |
|
26 | 26 | "python2.7-Mako-1.0.6": { |
|
27 | 27 | "MIT License": "http://spdx.org/licenses/MIT" |
|
28 | 28 | }, |
|
29 | 29 | "python2.7-Markdown-2.6.7": { |
|
30 | 30 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
31 | 31 | }, |
|
32 | 32 | "python2.7-MarkupSafe-0.23": { |
|
33 | 33 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
34 | 34 | }, |
|
35 | 35 | "python2.7-Paste-2.0.3": { |
|
36 | 36 | "MIT License": "http://spdx.org/licenses/MIT" |
|
37 | 37 | }, |
|
38 | 38 | "python2.7-PasteDeploy-1.5.2": { |
|
39 | 39 | "MIT License": "http://spdx.org/licenses/MIT" |
|
40 | 40 | }, |
|
41 | 41 | "python2.7-PasteScript-1.7.5": { |
|
42 | 42 | "MIT License": "http://spdx.org/licenses/MIT" |
|
43 | 43 | }, |
|
44 | 44 | "python2.7-Pygments-2.2.0": { |
|
45 | 45 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
46 | 46 | }, |
|
47 | 47 | "python2.7-Routes-1.13": { |
|
48 | 48 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
49 | 49 | }, |
|
50 | 50 | "python2.7-SQLAlchemy-0.9.9": { |
|
51 | 51 | "MIT License": "http://spdx.org/licenses/MIT" |
|
52 | 52 | }, |
|
53 | 53 | "python2.7-Tempita-0.5.2": { |
|
54 | 54 | "MIT License": "http://spdx.org/licenses/MIT" |
|
55 | 55 | }, |
|
56 | 56 | "python2.7-URLObject-2.4.0": { |
|
57 | 57 | "The Unlicense": "http://unlicense.org/" |
|
58 | 58 | }, |
|
59 | 59 | "python2.7-WebError-0.10.3": { |
|
60 | 60 | "MIT License": "http://spdx.org/licenses/MIT" |
|
61 | 61 | }, |
|
62 | 62 | "python2.7-WebHelpers-1.3": { |
|
63 | 63 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
64 | 64 | }, |
|
65 | 65 | "python2.7-WebHelpers2-2.0": { |
|
66 | 66 | "MIT License": "http://spdx.org/licenses/MIT" |
|
67 | 67 | }, |
|
68 | 68 | "python2.7-WebOb-1.3.1": { |
|
69 | 69 | "MIT License": "http://spdx.org/licenses/MIT" |
|
70 | 70 | }, |
|
71 | 71 | "python2.7-Whoosh-2.7.4": { |
|
72 | 72 | "BSD 2-clause \"Simplified\" License": "http://spdx.org/licenses/BSD-2-Clause", |
|
73 | 73 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
74 | 74 | }, |
|
75 | 75 | "python2.7-alembic-0.8.4": { |
|
76 | 76 | "MIT License": "http://spdx.org/licenses/MIT" |
|
77 | 77 | }, |
|
78 | 78 | "python2.7-appenlight-client-0.6.14": { |
|
79 | 79 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
80 | 80 | }, |
|
81 | 81 | "python2.7-authomatic-0.1.0.post1": { |
|
82 | 82 | "MIT License": "http://spdx.org/licenses/MIT" |
|
83 | 83 | }, |
|
84 | 84 | "python2.7-backports.shutil-get-terminal-size-1.0.0": { |
|
85 | 85 | "MIT License": "http://spdx.org/licenses/MIT" |
|
86 | 86 | }, |
|
87 | 87 | "python2.7-bleach-1.5.0": { |
|
88 | 88 | "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0" |
|
89 | 89 | }, |
|
90 | 90 | "python2.7-celery-2.2.10": { |
|
91 | 91 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
92 | 92 | }, |
|
93 | 93 | "python2.7-channelstream-0.5.2": { |
|
94 | 94 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
95 | 95 | }, |
|
96 | 96 | "python2.7-click-5.1": { |
|
97 | 97 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
98 | 98 | }, |
|
99 | 99 | "python2.7-colander-1.2": { |
|
100 | 100 | "Repoze License": "http://www.repoze.org/LICENSE.txt" |
|
101 | 101 | }, |
|
102 | 102 | "python2.7-configobj-5.0.6": { |
|
103 | 103 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
104 | 104 | }, |
|
105 | 105 | "python2.7-configparser-3.5.0": { |
|
106 | 106 | "MIT License": "http://spdx.org/licenses/MIT" |
|
107 | 107 | }, |
|
108 | 108 | "python2.7-cssselect-1.0.1": { |
|
109 | 109 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
110 | 110 | }, |
|
111 | 111 | "python2.7-decorator-4.0.11": { |
|
112 | 112 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
113 | 113 | }, |
|
114 | 114 | "python2.7-deform-2.0a2": { |
|
115 | 115 | "BSD-derived": "http://www.repoze.org/LICENSE.txt" |
|
116 | 116 | }, |
|
117 | 117 | "python2.7-docutils-0.12": { |
|
118 | 118 | "BSD 2-clause \"Simplified\" License": "http://spdx.org/licenses/BSD-2-Clause" |
|
119 | 119 | }, |
|
120 | 120 | "python2.7-dogpile.cache-0.6.1": { |
|
121 | 121 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
122 | 122 | }, |
|
123 | 123 | "python2.7-dogpile.core-0.4.1": { |
|
124 | 124 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
125 | 125 | }, |
|
126 | 126 | "python2.7-elasticsearch-2.3.0": { |
|
127 | 127 | "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0" |
|
128 | 128 | }, |
|
129 | 129 | "python2.7-elasticsearch-dsl-2.2.0": { |
|
130 | 130 | "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0" |
|
131 | 131 | }, |
|
132 | 132 | "python2.7-entrypoints-0.2.2": { |
|
133 | 133 | "MIT License": "http://spdx.org/licenses/MIT" |
|
134 | 134 | }, |
|
135 | 135 | "python2.7-enum34-1.1.6": { |
|
136 | 136 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
137 | 137 | }, |
|
138 | 138 | "python2.7-functools32-3.2.3.post2": { |
|
139 | 139 | "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0" |
|
140 | 140 | }, |
|
141 | 141 | "python2.7-future-0.14.3": { |
|
142 | 142 | "MIT License": "http://spdx.org/licenses/MIT" |
|
143 | 143 | }, |
|
144 | 144 | "python2.7-futures-3.0.2": { |
|
145 | 145 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
146 | 146 | }, |
|
147 | 147 | "python2.7-gevent-1.1.2": { |
|
148 | 148 | "MIT License": "http://spdx.org/licenses/MIT" |
|
149 | 149 | }, |
|
150 | 150 | "python2.7-gnureadline-6.3.3": { |
|
151 | 151 | "GNU General Public License v1.0 only": "http://spdx.org/licenses/GPL-1.0" |
|
152 | 152 | }, |
|
153 | 153 | "python2.7-gprof2dot-2016.10.13": { |
|
154 | 154 | "GNU Lesser General Public License v3.0 or later": "http://spdx.org/licenses/LGPL-3.0+" |
|
155 | 155 | }, |
|
156 | 156 | "python2.7-greenlet-0.4.10": { |
|
157 | 157 | "MIT License": "http://spdx.org/licenses/MIT" |
|
158 | 158 | }, |
|
159 | 159 | "python2.7-gunicorn-19.6.0": { |
|
160 | 160 | "MIT License": "http://spdx.org/licenses/MIT" |
|
161 | 161 | }, |
|
162 | 162 | "python2.7-html5lib-0.9999999": { |
|
163 | 163 | "MIT License": "http://spdx.org/licenses/MIT" |
|
164 | 164 | }, |
|
165 | 165 | "python2.7-infrae.cache-1.0.1": { |
|
166 | 166 | "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1" |
|
167 | 167 | }, |
|
168 | 168 | "python2.7-ipython-5.1.0": { |
|
169 | 169 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
170 | 170 | }, |
|
171 | 171 | "python2.7-ipython-genutils-0.2.0": { |
|
172 | 172 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
173 | 173 | }, |
|
174 | 174 | "python2.7-iso8601-0.1.11": { |
|
175 | 175 | "MIT License": "http://spdx.org/licenses/MIT" |
|
176 | 176 | }, |
|
177 | 177 | "python2.7-itsdangerous-0.24": { |
|
178 | 178 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
179 | 179 | }, |
|
180 | 180 | "python2.7-jsonschema-2.6.0": { |
|
181 | 181 | "MIT License": "http://spdx.org/licenses/MIT" |
|
182 | 182 | }, |
|
183 | 183 | "python2.7-jupyter-client-5.0.0": { |
|
184 | 184 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
185 | 185 | }, |
|
186 | 186 | "python2.7-jupyter-core-4.3.0": { |
|
187 | 187 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
188 | 188 | }, |
|
189 | 189 | "python2.7-kombu-4.1.0": { |
|
190 | 190 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
191 | 191 | }, |
|
192 | 192 | "python2.7-mistune-0.7.4": { |
|
193 | 193 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
194 | 194 | }, |
|
195 | 195 | "python2.7-msgpack-python-0.4.8": { |
|
196 | 196 | "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0" |
|
197 | 197 | }, |
|
198 | 198 | "python2.7-nbconvert-5.1.1": { |
|
199 | 199 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
200 | 200 | }, |
|
201 | 201 | "python2.7-nbformat-4.3.0": { |
|
202 | 202 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
203 | 203 | }, |
|
204 | 204 | "python2.7-packaging-15.2": { |
|
205 | 205 | "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0" |
|
206 | 206 | }, |
|
207 | 207 | "python2.7-pandocfilters-1.4.1": { |
|
208 | 208 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
209 | 209 | }, |
|
210 | 210 | "python2.7-pathlib2-2.1.0": { |
|
211 | 211 | "MIT License": "http://spdx.org/licenses/MIT" |
|
212 | 212 | }, |
|
213 | 213 | "python2.7-peppercorn-0.5": { |
|
214 | 214 | "BSD-derived": "http://www.repoze.org/LICENSE.txt" |
|
215 | 215 | }, |
|
216 | 216 | "python2.7-pexpect-4.2.1": { |
|
217 | 217 | "ISC License": "http://spdx.org/licenses/ISC" |
|
218 | 218 | }, |
|
219 | 219 | "python2.7-pickleshare-0.7.4": { |
|
220 | 220 | "MIT License": "http://spdx.org/licenses/MIT" |
|
221 | 221 | }, |
|
222 | 222 | "python2.7-prompt-toolkit-1.0.14": { |
|
223 | 223 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
224 | 224 | }, |
|
225 | 225 | "python2.7-psutil-4.3.1": { |
|
226 | 226 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
227 | 227 | }, |
|
228 | 228 | "python2.7-psycopg2-2.6.1": { |
|
229 | 229 | "GNU Lesser General Public License v3.0 or later": "http://spdx.org/licenses/LGPL-3.0+" |
|
230 | 230 | }, |
|
231 | 231 | "python2.7-ptyprocess-0.5.1": { |
|
232 | 232 | "ISC License": "http://opensource.org/licenses/ISC" |
|
233 | 233 | }, |
|
234 | 234 | "python2.7-py-1.4.31": { |
|
235 | 235 | "MIT License": "http://spdx.org/licenses/MIT" |
|
236 | 236 | }, |
|
237 | 237 | "python2.7-py-bcrypt-0.4": { |
|
238 | 238 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
239 | 239 | }, |
|
240 | 240 | "python2.7-py-gfm-0.1.3.rhodecode-upstream1": { |
|
241 | 241 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
242 | 242 | }, |
|
243 | 243 | "python2.7-pycrypto-2.6.1": { |
|
244 | 244 | "Public Domain": null |
|
245 | 245 | }, |
|
246 | 246 | "python2.7-pycurl-7.19.5": { |
|
247 | 247 | "MIT License": "http://spdx.org/licenses/MIT" |
|
248 | 248 | }, |
|
249 | 249 | "python2.7-pygments-markdown-lexer-0.1.0.dev39": { |
|
250 | 250 | "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0" |
|
251 | 251 | }, |
|
252 | 252 | "python2.7-pyparsing-1.5.7": { |
|
253 | 253 | "MIT License": "http://spdx.org/licenses/MIT" |
|
254 | 254 | }, |
|
255 | 255 | "python2.7-pyramid-1.7.4": { |
|
256 | 256 | "Repoze License": "http://www.repoze.org/LICENSE.txt" |
|
257 | 257 | }, |
|
258 | 258 | "python2.7-pyramid-beaker-0.8": { |
|
259 | 259 | "Repoze License": "http://www.repoze.org/LICENSE.txt" |
|
260 | 260 | }, |
|
261 | 261 | "python2.7-pyramid-debugtoolbar-3.0.5": { |
|
262 | 262 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause", |
|
263 | 263 | "Repoze License": "http://www.repoze.org/LICENSE.txt" |
|
264 | 264 | }, |
|
265 | 265 | "python2.7-pyramid-jinja2-2.5": { |
|
266 | 266 | "BSD-derived": "http://www.repoze.org/LICENSE.txt" |
|
267 | 267 | }, |
|
268 | 268 | "python2.7-pyramid-mako-1.0.2": { |
|
269 | 269 | "Repoze License": "http://www.repoze.org/LICENSE.txt" |
|
270 | 270 | }, |
|
271 | 271 | "python2.7-pysqlite-2.6.3": { |
|
272 | 272 | "libpng License": "http://spdx.org/licenses/Libpng", |
|
273 | 273 | "zlib License": "http://spdx.org/licenses/Zlib" |
|
274 | 274 | }, |
|
275 | 275 | "python2.7-pytest-3.0.5": { |
|
276 | 276 | "MIT License": "http://spdx.org/licenses/MIT" |
|
277 | 277 | }, |
|
278 | 278 | "python2.7-pytest-profiling-1.2.2": { |
|
279 | 279 | "MIT License": "http://spdx.org/licenses/MIT" |
|
280 | 280 | }, |
|
281 | 281 | "python2.7-pytest-runner-2.9": { |
|
282 | 282 | "MIT License": "http://spdx.org/licenses/MIT" |
|
283 | 283 | }, |
|
284 | 284 | "python2.7-pytest-sugar-0.7.1": { |
|
285 | 285 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
286 | 286 | }, |
|
287 | 287 | "python2.7-pytest-timeout-1.2.0": { |
|
288 | 288 | "MIT License": "http://spdx.org/licenses/MIT" |
|
289 | 289 | }, |
|
290 | 290 | "python2.7-python-dateutil-2.1": { |
|
291 | 291 | "Simplified BSD": null |
|
292 | 292 | }, |
|
293 | 293 | "python2.7-python-editor-1.0.3": { |
|
294 | 294 | "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0" |
|
295 | 295 | }, |
|
296 | 296 | "python2.7-python-ldap-2.4.19": { |
|
297 | 297 | "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0" |
|
298 | 298 | }, |
|
299 | 299 | "python2.7-python-memcached-1.57": { |
|
300 | 300 | "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0" |
|
301 | 301 | }, |
|
302 | 302 | "python2.7-pytz-2015.4": { |
|
303 | 303 | "MIT License": "http://spdx.org/licenses/MIT" |
|
304 | 304 | }, |
|
305 | 305 | "python2.7-pyzmq-14.6.0": { |
|
306 | 306 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
307 | 307 | }, |
|
308 | "python2.7-recaptcha-client-1.0.6": { | |
|
309 | "MIT License": "http://spdx.org/licenses/MIT" | |
|
310 | }, | |
|
311 | 308 | "python2.7-repoze.lru-0.6": { |
|
312 | 309 | "Repoze License": "http://www.repoze.org/LICENSE.txt" |
|
313 | 310 | }, |
|
314 | 311 | "python2.7-requests-2.9.1": { |
|
315 | 312 | "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0" |
|
316 | 313 | }, |
|
317 | 314 | "python2.7-setuptools-19.4": { |
|
318 | 315 | "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0", |
|
319 | 316 | "Zope Public License 2.0": "http://spdx.org/licenses/ZPL-2.0" |
|
320 | 317 | }, |
|
321 | 318 | "python2.7-setuptools-scm-1.15.6": { |
|
322 | 319 | "MIT License": "http://spdx.org/licenses/MIT" |
|
323 | 320 | }, |
|
324 | 321 | "python2.7-simplegeneric-0.8.1": { |
|
325 | 322 | "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1" |
|
326 | 323 | }, |
|
327 | 324 | "python2.7-simplejson-3.7.2": { |
|
328 | 325 | "MIT License": "http://spdx.org/licenses/MIT" |
|
329 | 326 | }, |
|
330 | 327 | "python2.7-six-1.9.0": { |
|
331 | 328 | "MIT License": "http://spdx.org/licenses/MIT" |
|
332 | 329 | }, |
|
333 | 330 | "python2.7-subprocess32-3.2.6": { |
|
334 | 331 | "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0" |
|
335 | 332 | }, |
|
336 | 333 | "python2.7-termcolor-1.1.0": { |
|
337 | 334 | "MIT License": "http://spdx.org/licenses/MIT" |
|
338 | 335 | }, |
|
339 | 336 | "python2.7-testpath-0.1": { |
|
340 | 337 | "MIT License": "http://spdx.org/licenses/MIT" |
|
341 | 338 | }, |
|
342 | 339 | "python2.7-traitlets-4.3.2": { |
|
343 | 340 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
344 | 341 | }, |
|
345 | 342 | "python2.7-translationstring-1.3": { |
|
346 | 343 | "Repoze License": "http://www.repoze.org/LICENSE.txt" |
|
347 | 344 | }, |
|
348 | 345 | "python2.7-urllib3-1.16": { |
|
349 | 346 | "MIT License": "http://spdx.org/licenses/MIT" |
|
350 | 347 | }, |
|
351 | 348 | "python2.7-venusian-1.0": { |
|
352 | 349 | "Repoze License": "http://www.repoze.org/LICENSE.txt" |
|
353 | 350 | }, |
|
354 | 351 | "python2.7-waitress-1.0.1": { |
|
355 | 352 | "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1" |
|
356 | 353 | }, |
|
357 | 354 | "python2.7-wcwidth-0.1.7": { |
|
358 | 355 | "MIT License": "http://spdx.org/licenses/MIT" |
|
359 | 356 | }, |
|
360 | 357 | "python2.7-ws4py-0.3.5": { |
|
361 | 358 | "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause" |
|
362 | 359 | }, |
|
363 | 360 | "python2.7-zope.cachedescriptors-4.0.0": { |
|
364 | 361 | "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1" |
|
365 | 362 | }, |
|
366 | 363 | "python2.7-zope.deprecation-4.1.2": { |
|
367 | 364 | "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1" |
|
368 | 365 | }, |
|
369 | 366 | "python2.7-zope.interface-4.1.3": { |
|
370 | 367 | "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1" |
|
371 | 368 | }, |
|
372 | 369 | "xz-5.2.2": { |
|
373 | 370 | "GNU General Public License v2.0 or later": "http://spdx.org/licenses/GPL-2.0+", |
|
374 | 371 | "GNU Library General Public License v2.1 or later": "http://spdx.org/licenses/LGPL-2.1+" |
|
375 | 372 | } |
|
376 | 373 | } No newline at end of file |
@@ -1,295 +1,295 b'' | |||
|
1 | 1 | ${h.secure_form(h.route_path('admin_settings_global_update'), request=request)} |
|
2 | 2 | |
|
3 | 3 | <div class="panel panel-default"> |
|
4 | 4 | <div class="panel-heading" id="branding-options"> |
|
5 | 5 | <h3 class="panel-title">${_('Branding')} <a class="permalink" href="#branding-options"> ΒΆ</a></h3> |
|
6 | 6 | </div> |
|
7 | 7 | <div class="panel-body"> |
|
8 | 8 | <div class="label"> |
|
9 | 9 | <label for="rhodecode_title">${_('Title')}</label> |
|
10 | 10 | </div> |
|
11 | 11 | <div class="field input"> |
|
12 | 12 | ${h.text('rhodecode_title',size=60)} |
|
13 | 13 | </div> |
|
14 | 14 | <div class="field"> |
|
15 | 15 | <span class="help-block"> |
|
16 | 16 | ${_('Set a custom title for your RhodeCode instance (limited to 40 characters).')} |
|
17 | 17 | </span> |
|
18 | 18 | </div> |
|
19 | 19 | <div class="label"> |
|
20 | 20 | <label for="rhodecode_realm">${_('HTTP[S] authentication realm')}</label> |
|
21 | 21 | </div> |
|
22 | 22 | <div class="field input"> |
|
23 | 23 | ${h.text('rhodecode_realm',size=60)} |
|
24 | 24 | </div> |
|
25 | 25 | <div class="field"> |
|
26 | 26 | <span class="help-block"> |
|
27 | 27 | ${_('Set a custom text that is shown as authentication message to clients trying to connect.')} |
|
28 | 28 | </span> |
|
29 | 29 | </div> |
|
30 | 30 | </div> |
|
31 | 31 | </div> |
|
32 | 32 | |
|
33 | 33 | |
|
34 | 34 | <div class="panel panel-default"> |
|
35 | 35 | <div class="panel-heading" id="personal-group-options"> |
|
36 | 36 | <h3 class="panel-title">${_('Personal Repository Group')} <a class="permalink" href="#personal-group-options"> ΒΆ</a></h3> |
|
37 | 37 | </div> |
|
38 | 38 | <div class="panel-body"> |
|
39 | 39 | <div class="checkbox"> |
|
40 | 40 | ${h.checkbox('rhodecode_create_personal_repo_group','True')} |
|
41 | 41 | <label for="rhodecode_create_personal_repo_group">${_('Create Personal Repository Group')}</label> |
|
42 | 42 | </div> |
|
43 | 43 | <span class="help-block"> |
|
44 | 44 | ${_('Always create Personal Repository Groups for new users.')} <br/> |
|
45 | 45 | ${_('When creating new users from add user form or API you can still turn this off via a checkbox or flag')} |
|
46 | 46 | </span> |
|
47 | 47 | |
|
48 | 48 | <div class="label"> |
|
49 | 49 | <label for="rhodecode_personal_repo_group_pattern">${_('Personal Repo Group Pattern')}</label> |
|
50 | 50 | </div> |
|
51 | 51 | <div class="field input"> |
|
52 | 52 | ${h.text('rhodecode_personal_repo_group_pattern',size=60, placeholder=c.personal_repo_group_default_pattern)} |
|
53 | 53 | </div> |
|
54 | 54 | <span class="help-block"> |
|
55 | 55 | ${_('Pattern used to create Personal Repository Groups. Prefix can be other existing repository group path[s], eg. /u/${username}')} <br/> |
|
56 | 56 | ${_('Available variables are currently ${username} and ${user_id}')} |
|
57 | 57 | </span> |
|
58 | 58 | </div> |
|
59 | 59 | </div> |
|
60 | 60 | |
|
61 | 61 | |
|
62 | 62 | <div class="panel panel-default"> |
|
63 | 63 | <div class="panel-heading" id="captcha-options"> |
|
64 | 64 | <h3 class="panel-title">${_('Registration Captcha')} <a class="permalink" href="#captcha-options"> ΒΆ</a></h3> |
|
65 | 65 | </div> |
|
66 | 66 | <div class="panel-body"> |
|
67 | 67 | <div class="label"> |
|
68 |
<label for="rhodecode_captcha_public_key">${_('Google |
|
|
68 | <label for="rhodecode_captcha_public_key">${_('Google reCaptcha v2 site key.')}</label> | |
|
69 | 69 | </div> |
|
70 | 70 | <div class="field input"> |
|
71 | 71 | ${h.text('rhodecode_captcha_public_key',size=60)} |
|
72 | 72 | </div> |
|
73 | 73 | <div class="field"> |
|
74 | 74 | <span class="help-block"> |
|
75 |
${_(' |
|
|
75 | ${_('Site key for reCaptcha v2 system.')} | |
|
76 | 76 | </span> |
|
77 | 77 | </div> |
|
78 | 78 | |
|
79 | 79 | <div class="label"> |
|
80 |
<label for="rhodecode_captcha_private_key">${_('Google |
|
|
80 | <label for="rhodecode_captcha_private_key">${_('Google reCaptcha v2 secret key.')}</label> | |
|
81 | 81 | </div> |
|
82 | 82 | <div class="field input"> |
|
83 | 83 | ${h.text('rhodecode_captcha_private_key',size=60)} |
|
84 | 84 | </div> |
|
85 | 85 | <div class="field"> |
|
86 | 86 | <span class="help-block"> |
|
87 |
${_(' |
|
|
87 | ${_('Secret key for reCaptcha v2 system. Setting this value will enable captcha on registration and password reset forms.')} | |
|
88 | 88 | </span> |
|
89 | 89 | </div> |
|
90 | 90 | </div> |
|
91 | 91 | </div> |
|
92 | 92 | |
|
93 | 93 | <div class="panel panel-default"> |
|
94 | 94 | <div class="panel-heading" id="header-code-options"> |
|
95 | 95 | <h3 class="panel-title">${_('Custom Header Code')} <a class="permalink" href="#header-code-options"> ΒΆ</a></h3> |
|
96 | 96 | </div> |
|
97 | 97 | <div class="panel-body"> |
|
98 | 98 | <div class="select"> |
|
99 | 99 | <select id="pre_template" > |
|
100 | 100 | <option value="#">${_('Templates...')}</option> |
|
101 | 101 | <option value="ga">Google Analytics</option> |
|
102 | 102 | <option value="clicky">Clicky</option> |
|
103 | 103 | <option value="server_announce">${_('Server Announcement')}</option> |
|
104 | 104 | <option value="flash_filtering">${_('Flash message filtering')}</option> |
|
105 | 105 | </select> |
|
106 | 106 | </div> |
|
107 | 107 | <div style="padding: 10px 0px"></div> |
|
108 | 108 | <div class="textarea text-area"> |
|
109 | 109 | ${h.textarea('rhodecode_pre_code',cols=23,rows=5,class_="medium")} |
|
110 | 110 | <span class="help-block">${_('Custom js/css code added at the end of the <header/> tag.')} |
|
111 | 111 | ${_('Use <script/> or <css/> tags to define custom styling or scripting')}</span> |
|
112 | 112 | </div> |
|
113 | 113 | </div> |
|
114 | 114 | </div> |
|
115 | 115 | |
|
116 | 116 | <div class="panel panel-default"> |
|
117 | 117 | <div class="panel-heading" id="footer-code-options"> |
|
118 | 118 | <h3 class="panel-title">${_('Custom Footer Code')} <a class="permalink" href="#footer-code-options"> ΒΆ</a></h3> |
|
119 | 119 | </div> |
|
120 | 120 | <div class="panel-body"> |
|
121 | 121 | <div class="select"> |
|
122 | 122 | <select id="post_template" > |
|
123 | 123 | <option value="#">${_('Templates...')}</option> |
|
124 | 124 | <option value="ga">Google Analytics</option> |
|
125 | 125 | <option value="clicky">Clicky</option> |
|
126 | 126 | <option value="server_announce">${_('Server Announcement')}</option> |
|
127 | 127 | </select> |
|
128 | 128 | </div> |
|
129 | 129 | <div style="padding: 10px 0px"></div> |
|
130 | 130 | <div class="textarea text-area"> |
|
131 | 131 | ${h.textarea('rhodecode_post_code',cols=23,rows=5, class_="medium")} |
|
132 | 132 | <span class="help-block">${_('Custom js/css code added at the end of the <body> tag.')} |
|
133 | 133 | ${_('Use <script> or <css> tags to define custom styling or scripting')}</span> |
|
134 | 134 | </div> |
|
135 | 135 | </div> |
|
136 | 136 | </div> |
|
137 | 137 | |
|
138 | 138 | <div class="buttons"> |
|
139 | 139 | ${h.submit('save',_('Save settings'),class_="btn")} |
|
140 | 140 | ${h.reset('reset',_('Reset'),class_="btn")} |
|
141 | 141 | </div> |
|
142 | 142 | ${h.end_form()} |
|
143 | 143 | |
|
144 | 144 | |
|
145 | 145 | |
|
146 | 146 | ## TEMPLATES ## |
|
147 | 147 | ############### |
|
148 | 148 | |
|
149 | 149 | <script id="ga_tmpl" type="text/x-template"> |
|
150 | 150 | <%text filter="h"> |
|
151 | 151 | <script> |
|
152 | 152 | // Google Analytics |
|
153 | 153 | // Put your Google Analytics code instead of _GACODE_ |
|
154 | 154 | var _gaq_code = '_GACODE_'; |
|
155 | 155 | var _gaq = _gaq || []; |
|
156 | 156 | _gaq.push(['_setAccount', _gaq_code]); |
|
157 | 157 | _gaq.push(['_trackPageview']); |
|
158 | 158 | |
|
159 | 159 | (function() { |
|
160 | 160 | var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
|
161 | 161 | ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
|
162 | 162 | var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); |
|
163 | 163 | })(); |
|
164 | 164 | |
|
165 | 165 | rhodecode_statechange_callback = function(url, data){ |
|
166 | 166 | // ANALYTICS callback on html5 history state changed |
|
167 | 167 | // triggered by file browser, url is the new url, |
|
168 | 168 | // data is extra info passed from the State object |
|
169 | 169 | if (typeof window._gaq !== 'undefined') { |
|
170 | 170 | _gaq.push(['_trackPageview', url]); |
|
171 | 171 | } |
|
172 | 172 | }; |
|
173 | 173 | </script> |
|
174 | 174 | </%text> |
|
175 | 175 | </script> |
|
176 | 176 | |
|
177 | 177 | |
|
178 | 178 | |
|
179 | 179 | <script id="clicky_tmpl" type="text/x-template"> |
|
180 | 180 | <%text filter="h"> |
|
181 | 181 | <script src="//static.getclicky.com/js" type="text/javascript"></script> |
|
182 | 182 | <script type="text/javascript"> |
|
183 | 183 | // Clicky Analytics - should be used in the footer code section. |
|
184 | 184 | // Put your Clicky code instead of _CLICKYCODE_ here, |
|
185 | 185 | // and below in the <img> tag. |
|
186 | 186 | var _cl_code = _CLICKYCODE_; |
|
187 | 187 | try{clicky.init(_cl_code);}catch(e){} |
|
188 | 188 | |
|
189 | 189 | rhodecode_statechange_callback = function(url, data){ |
|
190 | 190 | // ANALYTICS callback on html5 history state changed |
|
191 | 191 | // triggered by file browser, url is the new url, |
|
192 | 192 | // data is extra info passed from the State object |
|
193 | 193 | if (typeof window.clicky !== 'undefined') { |
|
194 | 194 | clicky.log(url); |
|
195 | 195 | } |
|
196 | 196 | } |
|
197 | 197 | </script> |
|
198 | 198 | <noscript> |
|
199 | 199 | // Put your clicky code in the src file. |
|
200 | 200 | <p><img alt="Clicky" width="1" height="1" |
|
201 | 201 | src="//in.getclicky.com/_CLICKYCODE_ns.gif" /></p> |
|
202 | 202 | </noscript> |
|
203 | 203 | </%text> |
|
204 | 204 | </script> |
|
205 | 205 | |
|
206 | 206 | |
|
207 | 207 | |
|
208 | 208 | <script id="server_announce_tmpl" type='text/x-template'> |
|
209 | 209 | <%text filter="h"> |
|
210 | 210 | <script> |
|
211 | 211 | // Server announcement displayed on the top of the page. |
|
212 | 212 | // This can be used to send a global maintenance messages or other |
|
213 | 213 | // important messages to all users of the RhodeCode Enterprise system. |
|
214 | 214 | |
|
215 | 215 | $(document).ready(function(e){ |
|
216 | 216 | |
|
217 | 217 | // EDIT - put your message below |
|
218 | 218 | var message = "TYPE YOUR MESSAGE HERE"; |
|
219 | 219 | |
|
220 | 220 | // EDIT - choose "info"/"warning"/"error"/"success"/"neutral" as appropriate |
|
221 | 221 | var alert_level = "info"; |
|
222 | 222 | |
|
223 | 223 | $("#body").prepend( |
|
224 | 224 | ("<div id='server-announcement' class='"+alert_level+"'>_MSG_"+"</div>").replace("_MSG_", message) |
|
225 | 225 | ) |
|
226 | 226 | }) |
|
227 | 227 | </script> |
|
228 | 228 | </%text> |
|
229 | 229 | </script> |
|
230 | 230 | |
|
231 | 231 | <script id="flash_filtering_tmpl" type='text/x-template'> |
|
232 | 232 | <%text filter="h"> |
|
233 | 233 | <script> |
|
234 | 234 | // This filters out some flash messages before they are presented to user |
|
235 | 235 | // based on their contents. Could be used to filter out warnings/errors |
|
236 | 236 | // of license messages |
|
237 | 237 | |
|
238 | 238 | var filteredMessages = []; |
|
239 | 239 | for(var i =0; i< alertMessagePayloads.length; i++){ |
|
240 | 240 | if (typeof alertMessagePayloads[i].message.subdata.subtype !== 'undefined' && |
|
241 | 241 | alertMessagePayloads[i].message.subdata.subtype.indexOf('rc_license') !== -1){ |
|
242 | 242 | continue |
|
243 | 243 | } |
|
244 | 244 | filteredMessages.push(alertMessagePayloads[i]); |
|
245 | 245 | } |
|
246 | 246 | alertMessagePayloads = filteredMessages; |
|
247 | 247 | </script> |
|
248 | 248 | </%text> |
|
249 | 249 | </script> |
|
250 | 250 | |
|
251 | 251 | <script> |
|
252 | 252 | var pre_cm = initCodeMirror('rhodecode_pre_code', '', false); |
|
253 | 253 | var pre_old = pre_cm.getValue(); |
|
254 | 254 | |
|
255 | 255 | var post_cm = initCodeMirror('rhodecode_post_code', '', false); |
|
256 | 256 | var post_old = post_cm.getValue(); |
|
257 | 257 | |
|
258 | 258 | var get_data = function(type, old){ |
|
259 | 259 | var get_tmpl = function(tmpl_name){ |
|
260 | 260 | // unescape some stuff |
|
261 | 261 | return htmlEnDeCode.htmlDecode($('#'+tmpl_name+'_tmpl').html()); |
|
262 | 262 | }; |
|
263 | 263 | return { |
|
264 | 264 | '#': old, |
|
265 | 265 | 'ga': get_tmpl('ga'), |
|
266 | 266 | 'clicky': get_tmpl('clicky'), |
|
267 | 267 | 'server_announce': get_tmpl('server_announce'), |
|
268 | 268 | 'flash_filtering': get_tmpl('flash_filtering') |
|
269 | 269 | }[type] |
|
270 | 270 | }; |
|
271 | 271 | |
|
272 | 272 | $('#pre_template').select2({ |
|
273 | 273 | containerCssClass: 'drop-menu', |
|
274 | 274 | dropdownCssClass: 'drop-menu-dropdown', |
|
275 | 275 | dropdownAutoWidth: true, |
|
276 | 276 | minimumResultsForSearch: -1 |
|
277 | 277 | }); |
|
278 | 278 | |
|
279 | 279 | $('#post_template').select2({ |
|
280 | 280 | containerCssClass: 'drop-menu', |
|
281 | 281 | dropdownCssClass: 'drop-menu-dropdown', |
|
282 | 282 | dropdownAutoWidth: true, |
|
283 | 283 | minimumResultsForSearch: -1 |
|
284 | 284 | }); |
|
285 | 285 | |
|
286 | 286 | $('#post_template').on('change', function(e){ |
|
287 | 287 | var sel = this.value; |
|
288 | 288 | post_cm.setValue(get_data(sel, post_old)) |
|
289 | 289 | }); |
|
290 | 290 | |
|
291 | 291 | $('#pre_template').on('change', function(e){ |
|
292 | 292 | var sel = this.value; |
|
293 | 293 | pre_cm.setValue(get_data(sel, pre_old)) |
|
294 | 294 | }) |
|
295 | 295 | </script> |
@@ -1,91 +1,98 b'' | |||
|
1 | 1 | ## -*- coding: utf-8 -*- |
|
2 | 2 | <%inherit file="base/root.mako"/> |
|
3 | 3 | |
|
4 | 4 | <%def name="title()"> |
|
5 | 5 | ${_('Reset Password')} |
|
6 | 6 | %if c.rhodecode_name: |
|
7 | 7 | · ${h.branding(c.rhodecode_name)} |
|
8 | 8 | %endif |
|
9 | 9 | </%def> |
|
10 | 10 | <style>body{background-color:#eeeeee;}</style> |
|
11 | 11 | |
|
12 | 12 | <div class="loginbox"> |
|
13 | 13 | <div class="header"> |
|
14 | 14 | <div id="header-inner" class="title"> |
|
15 | 15 | <div id="logo"> |
|
16 | 16 | <div class="logo-wrapper"> |
|
17 | 17 | <a href="${h.route_path('home')}"><img src="${h.asset('images/rhodecode-logo-white-216x60.png')}" alt="RhodeCode"/></a> |
|
18 | 18 | </div> |
|
19 | 19 | %if c.rhodecode_name: |
|
20 | 20 | <div class="branding"> ${h.branding(c.rhodecode_name)}</div> |
|
21 | 21 | %endif |
|
22 | 22 | </div> |
|
23 | 23 | </div> |
|
24 | 24 | </div> |
|
25 | 25 | |
|
26 | 26 | <div class="loginwrapper"> |
|
27 | 27 | <rhodecode-toast id="notifications"></rhodecode-toast> |
|
28 | 28 | <div class="left-column"> |
|
29 | 29 | <img class="sign-in-image" src="${h.asset('images/sign-in.png')}" alt="RhodeCode"/> |
|
30 | 30 | </div> |
|
31 | 31 | |
|
32 | 32 | %if h.HasPermissionAny('hg.password_reset.disabled')(): |
|
33 | 33 | <div class="right-column"> |
|
34 | 34 | <p> |
|
35 | 35 | ${_('Password reset is disabled. Please contact ')} |
|
36 | 36 | % if c.visual.rhodecode_support_url: |
|
37 | 37 | <a href="${c.visual.rhodecode_support_url}" target="_blank">${_('Support')}</a> |
|
38 | 38 | ${_('or')} |
|
39 | 39 | % endif |
|
40 | 40 | ${_('an administrator if you need help.')} |
|
41 | 41 | </p> |
|
42 | 42 | </div> |
|
43 | 43 | %else: |
|
44 | 44 | <div id="register" class="right-column"> |
|
45 | 45 | <!-- login --> |
|
46 | 46 | <div class="sign-in-title"> |
|
47 | 47 | <h1>${_('Reset your Password')}</h1> |
|
48 | 48 | <h4>${h.link_to(_("Go to the login page to sign in."), request.route_path('login'))}</h4> |
|
49 | 49 | </div> |
|
50 | 50 | <div class="inner form"> |
|
51 | 51 | ${h.form(request.route_path('reset_password'), needs_csrf_token=False)} |
|
52 | 52 | <label for="email">${_('Email Address')}:</label> |
|
53 | 53 | ${h.text('email', defaults.get('email'))} |
|
54 | 54 | %if 'email' in errors: |
|
55 | 55 | <span class="error-message">${errors.get('email')}</span> |
|
56 | 56 | <br /> |
|
57 | 57 | %endif |
|
58 | 58 | |
|
59 | 59 | %if captcha_active: |
|
60 | 60 | <div class="login-captcha"> |
|
61 | 61 | <label for="email">${_('Captcha')}:</label> |
|
62 | 62 | ${h.hidden('recaptcha_field')} |
|
63 | 63 | <div id="recaptcha"></div> |
|
64 | ||
|
64 | 65 |
|
|
65 | 66 | <span class="error-message">${errors.get('recaptcha_field')}</span> |
|
66 | 67 | <br /> |
|
67 | 68 | %endif |
|
68 | 69 | </div> |
|
69 | 70 | %endif |
|
70 | 71 | |
|
71 | 72 | ${h.submit('send', _('Send password reset email'), class_="btn sign-in")} |
|
72 | 73 | <div class="activation_msg">${_('Password reset link will be sent to matching email address')}</div> |
|
73 | 74 | |
|
74 | 75 | ${h.end_form()} |
|
75 | 76 | </div> |
|
76 | 77 | </div> |
|
77 | 78 | %endif |
|
78 | 79 | </div> |
|
79 | 80 | </div> |
|
80 | 81 |
|
|
81 | %if captcha_active: | |
|
82 | <script type="text/javascript" src="https://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script> | |
|
83 | %endif | |
|
84 | 82 | <script type="text/javascript"> |
|
85 | 83 | $(document).ready(function(){ |
|
86 | 84 | $('#email').focus(); |
|
87 | %if captcha_active: | |
|
88 | Recaptcha.create("${captcha_public_key}", "recaptcha", {theme: "white"}); | |
|
89 | %endif | |
|
90 | 85 | }); |
|
91 | 86 | </script> |
|
87 | ||
|
88 | % if captcha_active: | |
|
89 | <script type="text/javascript"> | |
|
90 | var onloadCallback = function() { | |
|
91 | grecaptcha.render('recaptcha', { | |
|
92 | 'sitekey' : "${captcha_public_key}" | |
|
93 | }); | |
|
94 | }; | |
|
95 | </script> | |
|
96 | <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script> | |
|
97 | % endif | |
|
98 |
@@ -1,123 +1,130 b'' | |||
|
1 | 1 | ## -*- coding: utf-8 -*- |
|
2 | 2 | <%inherit file="base/root.mako"/> |
|
3 | 3 | |
|
4 | 4 | <%def name="title()"> |
|
5 | 5 | ${_('Create an Account')} |
|
6 | 6 | %if c.rhodecode_name: |
|
7 | 7 | · ${h.branding(c.rhodecode_name)} |
|
8 | 8 | %endif |
|
9 | 9 | </%def> |
|
10 | 10 | <style>body{background-color:#eeeeee;}</style> |
|
11 | 11 | |
|
12 | 12 | <div class="loginbox"> |
|
13 | 13 | <div class="header"> |
|
14 | 14 | <div id="header-inner" class="title"> |
|
15 | 15 | <div id="logo"> |
|
16 | 16 | <div class="logo-wrapper"> |
|
17 | 17 | <a href="${h.route_path('home')}"><img src="${h.asset('images/rhodecode-logo-white-216x60.png')}" alt="RhodeCode"/></a> |
|
18 | 18 | </div> |
|
19 | 19 | %if c.rhodecode_name: |
|
20 | 20 | <div class="branding"> ${h.branding(c.rhodecode_name)}</div> |
|
21 | 21 | %endif |
|
22 | 22 | </div> |
|
23 | 23 | </div> |
|
24 | 24 | </div> |
|
25 | 25 | |
|
26 | 26 | <div class="loginwrapper"> |
|
27 | 27 | <rhodecode-toast id="notifications"></rhodecode-toast> |
|
28 | 28 | <div class="left-column"> |
|
29 | 29 | <img class="sign-in-image" src="${h.asset('images/sign-in.png')}" alt="RhodeCode"/> |
|
30 | 30 | </div> |
|
31 | 31 | <%block name="above_register_button" /> |
|
32 | 32 | <div id="register" class="right-column"> |
|
33 | 33 | <!-- login --> |
|
34 | 34 | <div class="sign-in-title"> |
|
35 | 35 | <h1>${_('Create an account')}</h1> |
|
36 | 36 | <h4>${h.link_to(_("Go to the login page to sign in with an existing account."), request.route_path('login'))}</h4> |
|
37 | 37 | </div> |
|
38 | 38 | <div class="inner form"> |
|
39 | 39 | ${h.form(request.route_path('register'), needs_csrf_token=False)} |
|
40 | 40 | |
|
41 | 41 | <label for="username">${_('Username')}:</label> |
|
42 | 42 | ${h.text('username', defaults.get('username'))} |
|
43 | 43 | %if 'username' in errors: |
|
44 | 44 | <span class="error-message">${errors.get('username')}</span> |
|
45 | 45 | <br /> |
|
46 | 46 | %endif |
|
47 | 47 | |
|
48 | 48 | <label for="password">${_('Password')}:</label> |
|
49 | 49 | ${h.password('password', defaults.get('password'))} |
|
50 | 50 | %if 'password' in errors: |
|
51 | 51 | <span class="error-message">${errors.get('password')}</span> |
|
52 | 52 | <br /> |
|
53 | 53 | %endif |
|
54 | 54 | |
|
55 | 55 | <label for="password_confirmation">${_('Re-enter password')}:</label> |
|
56 | 56 | ${h.password('password_confirmation', defaults.get('password_confirmation'))} |
|
57 | 57 | %if 'password_confirmation' in errors: |
|
58 | 58 | <span class="error-message">${errors.get('password_confirmation')}</span> |
|
59 | 59 | <br /> |
|
60 | 60 | %endif |
|
61 | 61 | |
|
62 | 62 | <label for="firstname">${_('First Name')}:</label> |
|
63 | 63 | ${h.text('firstname', defaults.get('firstname'))} |
|
64 | 64 | %if 'firstname' in errors: |
|
65 | 65 | <span class="error-message">${errors.get('firstname')}</span> |
|
66 | 66 | <br /> |
|
67 | 67 | %endif |
|
68 | 68 | |
|
69 | 69 | <label for="lastname">${_('Last Name')}:</label> |
|
70 | 70 | ${h.text('lastname', defaults.get('lastname'))} |
|
71 | 71 | %if 'lastname' in errors: |
|
72 | 72 | <span class="error-message">${errors.get('lastname')}</span> |
|
73 | 73 | <br /> |
|
74 | 74 | %endif |
|
75 | 75 | |
|
76 | 76 | <label for="email">${_('Email')}:</label> |
|
77 | 77 | ${h.text('email', defaults.get('email'))} |
|
78 | 78 | %if 'email' in errors: |
|
79 | 79 | <span class="error-message">${errors.get('email')}</span> |
|
80 | 80 | <br /> |
|
81 | 81 | %endif |
|
82 | 82 | |
|
83 | 83 | %if captcha_active: |
|
84 | 84 | <div> |
|
85 | 85 | <label for="recaptcha">${_('Captcha')}:</label> |
|
86 | 86 | ${h.hidden('recaptcha_field')} |
|
87 | 87 | <div id="recaptcha"></div> |
|
88 | 88 | %if 'recaptcha_field' in errors: |
|
89 | 89 | <span class="error-message">${errors.get('recaptcha_field')}</span> |
|
90 | 90 | <br /> |
|
91 | 91 | %endif |
|
92 | 92 | </div> |
|
93 | 93 | %endif |
|
94 | 94 | |
|
95 | 95 | %if not auto_active: |
|
96 | 96 | <p class="activation_msg"> |
|
97 | 97 | ${_('Account activation requires admin approval.')} |
|
98 | 98 | </p> |
|
99 | 99 | %endif |
|
100 | 100 | <p class="register_message"> |
|
101 | 101 | ${register_message|n} |
|
102 | 102 | </p> |
|
103 | 103 | |
|
104 | 104 | ${h.submit('sign_up',_('Create Account'),class_="btn sign-in")} |
|
105 | 105 | |
|
106 | 106 | ${h.end_form()} |
|
107 | 107 | </div> |
|
108 | 108 | <%block name="below_register_button" /> |
|
109 | 109 | </div> |
|
110 | 110 | </div> |
|
111 | 111 | </div> |
|
112 | 112 |
|
|
113 | %if captcha_active: | |
|
114 | <script type="text/javascript" src="https://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script> | |
|
115 | %endif | |
|
113 | ||
|
116 | 114 | <script type="text/javascript"> |
|
117 | $(document).ready(function(){ | |
|
115 | $(document).ready(function(){ | |
|
118 | 116 | $('#username').focus(); |
|
119 | %if captcha_active: | |
|
120 | Recaptcha.create("${captcha_public_key}", "recaptcha", {theme: "white"}); | |
|
121 | %endif | |
|
122 | }); | |
|
117 | }); | |
|
123 | 118 | </script> |
|
119 | ||
|
120 | % if captcha_active: | |
|
121 | <script type="text/javascript"> | |
|
122 | var onloadCallback = function() { | |
|
123 | grecaptcha.render('recaptcha', { | |
|
124 | 'sitekey' : "${captcha_public_key}" | |
|
125 | }); | |
|
126 | }; | |
|
127 | </script> | |
|
128 | <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script> | |
|
129 | % endif | |
|
130 |
General Comments 0
You need to be logged in to leave comments.
Login now