##// END OF EJS Templates
Mercurial: addeed mercurial 4.9 support
marcink -
r656:7cf7cf22 default
parent child Browse files
Show More
@@ -1,948 +1,948 b''
1 # Generated by pip2nix 0.8.0.dev1
1 # Generated by pip2nix 0.8.0.dev1
2 # See https://github.com/johbo/pip2nix
2 # See https://github.com/johbo/pip2nix
3
3
4 { pkgs, fetchurl, fetchgit, fetchhg }:
4 { pkgs, fetchurl, fetchgit, fetchhg }:
5
5
6 self: super: {
6 self: super: {
7 "atomicwrites" = super.buildPythonPackage {
7 "atomicwrites" = super.buildPythonPackage {
8 name = "atomicwrites-1.2.1";
8 name = "atomicwrites-1.2.1";
9 doCheck = false;
9 doCheck = false;
10 src = fetchurl {
10 src = fetchurl {
11 url = "https://files.pythonhosted.org/packages/ac/ed/a311712ef6b4355035489f665e63e1a73f9eb371929e3c98e5efd451069e/atomicwrites-1.2.1.tar.gz";
11 url = "https://files.pythonhosted.org/packages/ac/ed/a311712ef6b4355035489f665e63e1a73f9eb371929e3c98e5efd451069e/atomicwrites-1.2.1.tar.gz";
12 sha256 = "1vmkbw9j0qammwxbxycrs39gvdg4lc2d4lk98kwf8ag2manyi6pc";
12 sha256 = "1vmkbw9j0qammwxbxycrs39gvdg4lc2d4lk98kwf8ag2manyi6pc";
13 };
13 };
14 meta = {
14 meta = {
15 license = [ pkgs.lib.licenses.mit ];
15 license = [ pkgs.lib.licenses.mit ];
16 };
16 };
17 };
17 };
18 "attrs" = super.buildPythonPackage {
18 "attrs" = super.buildPythonPackage {
19 name = "attrs-18.2.0";
19 name = "attrs-18.2.0";
20 doCheck = false;
20 doCheck = false;
21 src = fetchurl {
21 src = fetchurl {
22 url = "https://files.pythonhosted.org/packages/0f/9e/26b1d194aab960063b266170e53c39f73ea0d0d3f5ce23313e0ec8ee9bdf/attrs-18.2.0.tar.gz";
22 url = "https://files.pythonhosted.org/packages/0f/9e/26b1d194aab960063b266170e53c39f73ea0d0d3f5ce23313e0ec8ee9bdf/attrs-18.2.0.tar.gz";
23 sha256 = "0s9ydh058wmmf5v391pym877x4ahxg45dw6a0w4c7s5wgpigdjqh";
23 sha256 = "0s9ydh058wmmf5v391pym877x4ahxg45dw6a0w4c7s5wgpigdjqh";
24 };
24 };
25 meta = {
25 meta = {
26 license = [ pkgs.lib.licenses.mit ];
26 license = [ pkgs.lib.licenses.mit ];
27 };
27 };
28 };
28 };
29 "backports.shutil-get-terminal-size" = super.buildPythonPackage {
29 "backports.shutil-get-terminal-size" = super.buildPythonPackage {
30 name = "backports.shutil-get-terminal-size-1.0.0";
30 name = "backports.shutil-get-terminal-size-1.0.0";
31 doCheck = false;
31 doCheck = false;
32 src = fetchurl {
32 src = fetchurl {
33 url = "https://files.pythonhosted.org/packages/ec/9c/368086faa9c016efce5da3e0e13ba392c9db79e3ab740b763fe28620b18b/backports.shutil_get_terminal_size-1.0.0.tar.gz";
33 url = "https://files.pythonhosted.org/packages/ec/9c/368086faa9c016efce5da3e0e13ba392c9db79e3ab740b763fe28620b18b/backports.shutil_get_terminal_size-1.0.0.tar.gz";
34 sha256 = "107cmn7g3jnbkp826zlj8rrj19fam301qvaqf0f3905f5217lgki";
34 sha256 = "107cmn7g3jnbkp826zlj8rrj19fam301qvaqf0f3905f5217lgki";
35 };
35 };
36 meta = {
36 meta = {
37 license = [ pkgs.lib.licenses.mit ];
37 license = [ pkgs.lib.licenses.mit ];
38 };
38 };
39 };
39 };
40 "beautifulsoup4" = super.buildPythonPackage {
40 "beautifulsoup4" = super.buildPythonPackage {
41 name = "beautifulsoup4-4.6.3";
41 name = "beautifulsoup4-4.6.3";
42 doCheck = false;
42 doCheck = false;
43 src = fetchurl {
43 src = fetchurl {
44 url = "https://files.pythonhosted.org/packages/88/df/86bffad6309f74f3ff85ea69344a078fc30003270c8df6894fca7a3c72ff/beautifulsoup4-4.6.3.tar.gz";
44 url = "https://files.pythonhosted.org/packages/88/df/86bffad6309f74f3ff85ea69344a078fc30003270c8df6894fca7a3c72ff/beautifulsoup4-4.6.3.tar.gz";
45 sha256 = "041dhalzjciw6qyzzq7a2k4h1yvyk76xigp35hv5ibnn448ydy4h";
45 sha256 = "041dhalzjciw6qyzzq7a2k4h1yvyk76xigp35hv5ibnn448ydy4h";
46 };
46 };
47 meta = {
47 meta = {
48 license = [ pkgs.lib.licenses.mit ];
48 license = [ pkgs.lib.licenses.mit ];
49 };
49 };
50 };
50 };
51 "configobj" = super.buildPythonPackage {
51 "configobj" = super.buildPythonPackage {
52 name = "configobj-5.0.6";
52 name = "configobj-5.0.6";
53 doCheck = false;
53 doCheck = false;
54 propagatedBuildInputs = [
54 propagatedBuildInputs = [
55 self."six"
55 self."six"
56 ];
56 ];
57 src = fetchurl {
57 src = fetchurl {
58 url = "https://code.rhodecode.com/upstream/configobj/archive/a11ff0a0bd4fbda9e3a91267e720f88329efb4a6.tar.gz?md5=9916c524ea11a6c418217af6b28d4b3c";
58 url = "https://code.rhodecode.com/upstream/configobj/archive/a11ff0a0bd4fbda9e3a91267e720f88329efb4a6.tar.gz?md5=9916c524ea11a6c418217af6b28d4b3c";
59 sha256 = "1hhcxirwvg58grlfr177b3awhbq8hlx1l3lh69ifl1ki7lfd1s1x";
59 sha256 = "1hhcxirwvg58grlfr177b3awhbq8hlx1l3lh69ifl1ki7lfd1s1x";
60 };
60 };
61 meta = {
61 meta = {
62 license = [ pkgs.lib.licenses.bsdOriginal ];
62 license = [ pkgs.lib.licenses.bsdOriginal ];
63 };
63 };
64 };
64 };
65 "cov-core" = super.buildPythonPackage {
65 "cov-core" = super.buildPythonPackage {
66 name = "cov-core-1.15.0";
66 name = "cov-core-1.15.0";
67 doCheck = false;
67 doCheck = false;
68 propagatedBuildInputs = [
68 propagatedBuildInputs = [
69 self."coverage"
69 self."coverage"
70 ];
70 ];
71 src = fetchurl {
71 src = fetchurl {
72 url = "https://files.pythonhosted.org/packages/4b/87/13e75a47b4ba1be06f29f6d807ca99638bedc6b57fa491cd3de891ca2923/cov-core-1.15.0.tar.gz";
72 url = "https://files.pythonhosted.org/packages/4b/87/13e75a47b4ba1be06f29f6d807ca99638bedc6b57fa491cd3de891ca2923/cov-core-1.15.0.tar.gz";
73 sha256 = "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a";
73 sha256 = "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a";
74 };
74 };
75 meta = {
75 meta = {
76 license = [ pkgs.lib.licenses.mit ];
76 license = [ pkgs.lib.licenses.mit ];
77 };
77 };
78 };
78 };
79 "coverage" = super.buildPythonPackage {
79 "coverage" = super.buildPythonPackage {
80 name = "coverage-4.5.1";
80 name = "coverage-4.5.1";
81 doCheck = false;
81 doCheck = false;
82 src = fetchurl {
82 src = fetchurl {
83 url = "https://files.pythonhosted.org/packages/35/fe/e7df7289d717426093c68d156e0fd9117c8f4872b6588e8a8928a0f68424/coverage-4.5.1.tar.gz";
83 url = "https://files.pythonhosted.org/packages/35/fe/e7df7289d717426093c68d156e0fd9117c8f4872b6588e8a8928a0f68424/coverage-4.5.1.tar.gz";
84 sha256 = "1wbrzpxka3xd4nmmkc6q0ir343d91kymwsm8pbmwa0d2a7q4ir2n";
84 sha256 = "1wbrzpxka3xd4nmmkc6q0ir343d91kymwsm8pbmwa0d2a7q4ir2n";
85 };
85 };
86 meta = {
86 meta = {
87 license = [ pkgs.lib.licenses.asl20 ];
87 license = [ pkgs.lib.licenses.asl20 ];
88 };
88 };
89 };
89 };
90 "decorator" = super.buildPythonPackage {
90 "decorator" = super.buildPythonPackage {
91 name = "decorator-4.1.2";
91 name = "decorator-4.1.2";
92 doCheck = false;
92 doCheck = false;
93 src = fetchurl {
93 src = fetchurl {
94 url = "https://files.pythonhosted.org/packages/bb/e0/f6e41e9091e130bf16d4437dabbac3993908e4d6485ecbc985ef1352db94/decorator-4.1.2.tar.gz";
94 url = "https://files.pythonhosted.org/packages/bb/e0/f6e41e9091e130bf16d4437dabbac3993908e4d6485ecbc985ef1352db94/decorator-4.1.2.tar.gz";
95 sha256 = "1d8npb11kxyi36mrvjdpcjij76l5zfyrz2f820brf0l0rcw4vdkw";
95 sha256 = "1d8npb11kxyi36mrvjdpcjij76l5zfyrz2f820brf0l0rcw4vdkw";
96 };
96 };
97 meta = {
97 meta = {
98 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "new BSD License"; } ];
98 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "new BSD License"; } ];
99 };
99 };
100 };
100 };
101 "dogpile.cache" = super.buildPythonPackage {
101 "dogpile.cache" = super.buildPythonPackage {
102 name = "dogpile.cache-0.7.1";
102 name = "dogpile.cache-0.7.1";
103 doCheck = false;
103 doCheck = false;
104 propagatedBuildInputs = [
104 propagatedBuildInputs = [
105 self."decorator"
105 self."decorator"
106 ];
106 ];
107 src = fetchurl {
107 src = fetchurl {
108 url = "https://files.pythonhosted.org/packages/84/3e/dbf1cfc5228f1d3dca80ef714db2c5aaec5cd9efaf54d7e3daef6bc48b19/dogpile.cache-0.7.1.tar.gz";
108 url = "https://files.pythonhosted.org/packages/84/3e/dbf1cfc5228f1d3dca80ef714db2c5aaec5cd9efaf54d7e3daef6bc48b19/dogpile.cache-0.7.1.tar.gz";
109 sha256 = "0caazmrzhnfqb5yrp8myhw61ny637jj69wcngrpbvi31jlcpy6v9";
109 sha256 = "0caazmrzhnfqb5yrp8myhw61ny637jj69wcngrpbvi31jlcpy6v9";
110 };
110 };
111 meta = {
111 meta = {
112 license = [ pkgs.lib.licenses.bsdOriginal ];
112 license = [ pkgs.lib.licenses.bsdOriginal ];
113 };
113 };
114 };
114 };
115 "dogpile.core" = super.buildPythonPackage {
115 "dogpile.core" = super.buildPythonPackage {
116 name = "dogpile.core-0.4.1";
116 name = "dogpile.core-0.4.1";
117 doCheck = false;
117 doCheck = false;
118 src = fetchurl {
118 src = fetchurl {
119 url = "https://files.pythonhosted.org/packages/0e/77/e72abc04c22aedf874301861e5c1e761231c288b5de369c18be8f4b5c9bb/dogpile.core-0.4.1.tar.gz";
119 url = "https://files.pythonhosted.org/packages/0e/77/e72abc04c22aedf874301861e5c1e761231c288b5de369c18be8f4b5c9bb/dogpile.core-0.4.1.tar.gz";
120 sha256 = "0xpdvg4kr1isfkrh1rfsh7za4q5a5s6l2kf9wpvndbwf3aqjyrdy";
120 sha256 = "0xpdvg4kr1isfkrh1rfsh7za4q5a5s6l2kf9wpvndbwf3aqjyrdy";
121 };
121 };
122 meta = {
122 meta = {
123 license = [ pkgs.lib.licenses.bsdOriginal ];
123 license = [ pkgs.lib.licenses.bsdOriginal ];
124 };
124 };
125 };
125 };
126 "dulwich" = super.buildPythonPackage {
126 "dulwich" = super.buildPythonPackage {
127 name = "dulwich-0.13.0";
127 name = "dulwich-0.13.0";
128 doCheck = false;
128 doCheck = false;
129 src = fetchurl {
129 src = fetchurl {
130 url = "https://files.pythonhosted.org/packages/84/95/732d280eee829dacc954e8109f97b47abcadcca472c2ab013e1635eb4792/dulwich-0.13.0.tar.gz";
130 url = "https://files.pythonhosted.org/packages/84/95/732d280eee829dacc954e8109f97b47abcadcca472c2ab013e1635eb4792/dulwich-0.13.0.tar.gz";
131 sha256 = "0f1jwvrh549c4rgavkn3wizrch904s73s4fmrxykxy9cw8s57lwf";
131 sha256 = "0f1jwvrh549c4rgavkn3wizrch904s73s4fmrxykxy9cw8s57lwf";
132 };
132 };
133 meta = {
133 meta = {
134 license = [ pkgs.lib.licenses.gpl2Plus ];
134 license = [ pkgs.lib.licenses.gpl2Plus ];
135 };
135 };
136 };
136 };
137 "enum34" = super.buildPythonPackage {
137 "enum34" = super.buildPythonPackage {
138 name = "enum34-1.1.6";
138 name = "enum34-1.1.6";
139 doCheck = false;
139 doCheck = false;
140 src = fetchurl {
140 src = fetchurl {
141 url = "https://files.pythonhosted.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz";
141 url = "https://files.pythonhosted.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz";
142 sha256 = "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a";
142 sha256 = "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a";
143 };
143 };
144 meta = {
144 meta = {
145 license = [ pkgs.lib.licenses.bsdOriginal ];
145 license = [ pkgs.lib.licenses.bsdOriginal ];
146 };
146 };
147 };
147 };
148 "funcsigs" = super.buildPythonPackage {
148 "funcsigs" = super.buildPythonPackage {
149 name = "funcsigs-1.0.2";
149 name = "funcsigs-1.0.2";
150 doCheck = false;
150 doCheck = false;
151 src = fetchurl {
151 src = fetchurl {
152 url = "https://files.pythonhosted.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz";
152 url = "https://files.pythonhosted.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz";
153 sha256 = "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7";
153 sha256 = "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7";
154 };
154 };
155 meta = {
155 meta = {
156 license = [ { fullName = "ASL"; } pkgs.lib.licenses.asl20 ];
156 license = [ { fullName = "ASL"; } pkgs.lib.licenses.asl20 ];
157 };
157 };
158 };
158 };
159 "gevent" = super.buildPythonPackage {
159 "gevent" = super.buildPythonPackage {
160 name = "gevent-1.4.0";
160 name = "gevent-1.4.0";
161 doCheck = false;
161 doCheck = false;
162 propagatedBuildInputs = [
162 propagatedBuildInputs = [
163 self."greenlet"
163 self."greenlet"
164 ];
164 ];
165 src = fetchurl {
165 src = fetchurl {
166 url = "https://files.pythonhosted.org/packages/ed/27/6c49b70808f569b66ec7fac2e78f076e9b204db9cf5768740cff3d5a07ae/gevent-1.4.0.tar.gz";
166 url = "https://files.pythonhosted.org/packages/ed/27/6c49b70808f569b66ec7fac2e78f076e9b204db9cf5768740cff3d5a07ae/gevent-1.4.0.tar.gz";
167 sha256 = "1lchr4akw2jkm5v4kz7bdm4wv3knkfhbfn9vkkz4s5yrkcxzmdqy";
167 sha256 = "1lchr4akw2jkm5v4kz7bdm4wv3knkfhbfn9vkkz4s5yrkcxzmdqy";
168 };
168 };
169 meta = {
169 meta = {
170 license = [ pkgs.lib.licenses.mit ];
170 license = [ pkgs.lib.licenses.mit ];
171 };
171 };
172 };
172 };
173 "gprof2dot" = super.buildPythonPackage {
173 "gprof2dot" = super.buildPythonPackage {
174 name = "gprof2dot-2017.9.19";
174 name = "gprof2dot-2017.9.19";
175 doCheck = false;
175 doCheck = false;
176 src = fetchurl {
176 src = fetchurl {
177 url = "https://files.pythonhosted.org/packages/9d/36/f977122502979f3dfb50704979c9ed70e6b620787942b089bf1af15f5aba/gprof2dot-2017.9.19.tar.gz";
177 url = "https://files.pythonhosted.org/packages/9d/36/f977122502979f3dfb50704979c9ed70e6b620787942b089bf1af15f5aba/gprof2dot-2017.9.19.tar.gz";
178 sha256 = "17ih23ld2nzgc3xwgbay911l6lh96jp1zshmskm17n1gg2i7mg6f";
178 sha256 = "17ih23ld2nzgc3xwgbay911l6lh96jp1zshmskm17n1gg2i7mg6f";
179 };
179 };
180 meta = {
180 meta = {
181 license = [ { fullName = "GNU Lesser General Public License v3 or later (LGPLv3+)"; } { fullName = "LGPL"; } ];
181 license = [ { fullName = "GNU Lesser General Public License v3 or later (LGPLv3+)"; } { fullName = "LGPL"; } ];
182 };
182 };
183 };
183 };
184 "greenlet" = super.buildPythonPackage {
184 "greenlet" = super.buildPythonPackage {
185 name = "greenlet-0.4.15";
185 name = "greenlet-0.4.15";
186 doCheck = false;
186 doCheck = false;
187 src = fetchurl {
187 src = fetchurl {
188 url = "https://files.pythonhosted.org/packages/f8/e8/b30ae23b45f69aa3f024b46064c0ac8e5fcb4f22ace0dca8d6f9c8bbe5e7/greenlet-0.4.15.tar.gz";
188 url = "https://files.pythonhosted.org/packages/f8/e8/b30ae23b45f69aa3f024b46064c0ac8e5fcb4f22ace0dca8d6f9c8bbe5e7/greenlet-0.4.15.tar.gz";
189 sha256 = "1g4g1wwc472ds89zmqlpyan3fbnzpa8qm48z3z1y6mlk44z485ll";
189 sha256 = "1g4g1wwc472ds89zmqlpyan3fbnzpa8qm48z3z1y6mlk44z485ll";
190 };
190 };
191 meta = {
191 meta = {
192 license = [ pkgs.lib.licenses.mit ];
192 license = [ pkgs.lib.licenses.mit ];
193 };
193 };
194 };
194 };
195 "gunicorn" = super.buildPythonPackage {
195 "gunicorn" = super.buildPythonPackage {
196 name = "gunicorn-19.9.0";
196 name = "gunicorn-19.9.0";
197 doCheck = false;
197 doCheck = false;
198 src = fetchurl {
198 src = fetchurl {
199 url = "https://files.pythonhosted.org/packages/47/52/68ba8e5e8ba251e54006a49441f7ccabca83b6bef5aedacb4890596c7911/gunicorn-19.9.0.tar.gz";
199 url = "https://files.pythonhosted.org/packages/47/52/68ba8e5e8ba251e54006a49441f7ccabca83b6bef5aedacb4890596c7911/gunicorn-19.9.0.tar.gz";
200 sha256 = "1wzlf4xmn6qjirh5w81l6i6kqjnab1n1qqkh7zsj1yb6gh4n49ps";
200 sha256 = "1wzlf4xmn6qjirh5w81l6i6kqjnab1n1qqkh7zsj1yb6gh4n49ps";
201 };
201 };
202 meta = {
202 meta = {
203 license = [ pkgs.lib.licenses.mit ];
203 license = [ pkgs.lib.licenses.mit ];
204 };
204 };
205 };
205 };
206 "hg-evolve" = super.buildPythonPackage {
206 "hg-evolve" = super.buildPythonPackage {
207 name = "hg-evolve-8.0.1";
207 name = "hg-evolve-8.0.1";
208 doCheck = false;
208 doCheck = false;
209 src = fetchurl {
209 src = fetchurl {
210 url = "https://files.pythonhosted.org/packages/06/1a/c5c12d8f117426f05285a820ee5a23121882f5381104e86276b72598934f/hg-evolve-8.0.1.tar.gz";
210 url = "https://files.pythonhosted.org/packages/06/1a/c5c12d8f117426f05285a820ee5a23121882f5381104e86276b72598934f/hg-evolve-8.0.1.tar.gz";
211 sha256 = "1brafifb42k71gl7qssb5m3ijnm7y30lfvm90z8xxcr2fgz19p29";
211 sha256 = "1brafifb42k71gl7qssb5m3ijnm7y30lfvm90z8xxcr2fgz19p29";
212 };
212 };
213 meta = {
213 meta = {
214 license = [ { fullName = "GPLv2+"; } ];
214 license = [ { fullName = "GPLv2+"; } ];
215 };
215 };
216 };
216 };
217 "hgsubversion" = super.buildPythonPackage {
217 "hgsubversion" = super.buildPythonPackage {
218 name = "hgsubversion-1.9.3";
218 name = "hgsubversion-1.9.3";
219 doCheck = false;
219 doCheck = false;
220 propagatedBuildInputs = [
220 propagatedBuildInputs = [
221 self."mercurial"
221 self."mercurial"
222 self."subvertpy"
222 self."subvertpy"
223 ];
223 ];
224 src = fetchurl {
224 src = fetchurl {
225 url = "https://files.pythonhosted.org/packages/a3/53/6d205e641f3e09abcf1ddaed66e5e4b20da22d0145566d440a02c9e35f0d/hgsubversion-1.9.3.tar.gz";
225 url = "https://files.pythonhosted.org/packages/a3/53/6d205e641f3e09abcf1ddaed66e5e4b20da22d0145566d440a02c9e35f0d/hgsubversion-1.9.3.tar.gz";
226 sha256 = "0nymcjlch8c4zjbncrs30p2nrbylsf25g3h6mr0zzzxr141h3sig";
226 sha256 = "0nymcjlch8c4zjbncrs30p2nrbylsf25g3h6mr0zzzxr141h3sig";
227 };
227 };
228 meta = {
228 meta = {
229 license = [ pkgs.lib.licenses.gpl1 ];
229 license = [ pkgs.lib.licenses.gpl1 ];
230 };
230 };
231 };
231 };
232 "hupper" = super.buildPythonPackage {
232 "hupper" = super.buildPythonPackage {
233 name = "hupper-1.5";
233 name = "hupper-1.5";
234 doCheck = false;
234 doCheck = false;
235 src = fetchurl {
235 src = fetchurl {
236 url = "https://files.pythonhosted.org/packages/89/f1/aace4ea69c1d79e243e48a81dcf1608c87e8c5a190e6ef80fae245d494ac/hupper-1.5.tar.gz";
236 url = "https://files.pythonhosted.org/packages/89/f1/aace4ea69c1d79e243e48a81dcf1608c87e8c5a190e6ef80fae245d494ac/hupper-1.5.tar.gz";
237 sha256 = "02n6y2rvpacm2w3x089whj64j1x0qlkimkzw35r1g0mymmxicfk9";
237 sha256 = "02n6y2rvpacm2w3x089whj64j1x0qlkimkzw35r1g0mymmxicfk9";
238 };
238 };
239 meta = {
239 meta = {
240 license = [ pkgs.lib.licenses.mit ];
240 license = [ pkgs.lib.licenses.mit ];
241 };
241 };
242 };
242 };
243 "ipdb" = super.buildPythonPackage {
243 "ipdb" = super.buildPythonPackage {
244 name = "ipdb-0.11";
244 name = "ipdb-0.11";
245 doCheck = false;
245 doCheck = false;
246 propagatedBuildInputs = [
246 propagatedBuildInputs = [
247 self."setuptools"
247 self."setuptools"
248 self."ipython"
248 self."ipython"
249 ];
249 ];
250 src = fetchurl {
250 src = fetchurl {
251 url = "https://files.pythonhosted.org/packages/80/fe/4564de08f174f3846364b3add8426d14cebee228f741c27e702b2877e85b/ipdb-0.11.tar.gz";
251 url = "https://files.pythonhosted.org/packages/80/fe/4564de08f174f3846364b3add8426d14cebee228f741c27e702b2877e85b/ipdb-0.11.tar.gz";
252 sha256 = "02m0l8wrhhd3z7dg3czn5ys1g5pxib516hpshdzp7rxzsxgcd0bh";
252 sha256 = "02m0l8wrhhd3z7dg3czn5ys1g5pxib516hpshdzp7rxzsxgcd0bh";
253 };
253 };
254 meta = {
254 meta = {
255 license = [ pkgs.lib.licenses.bsdOriginal ];
255 license = [ pkgs.lib.licenses.bsdOriginal ];
256 };
256 };
257 };
257 };
258 "ipython" = super.buildPythonPackage {
258 "ipython" = super.buildPythonPackage {
259 name = "ipython-5.1.0";
259 name = "ipython-5.1.0";
260 doCheck = false;
260 doCheck = false;
261 propagatedBuildInputs = [
261 propagatedBuildInputs = [
262 self."setuptools"
262 self."setuptools"
263 self."decorator"
263 self."decorator"
264 self."pickleshare"
264 self."pickleshare"
265 self."simplegeneric"
265 self."simplegeneric"
266 self."traitlets"
266 self."traitlets"
267 self."prompt-toolkit"
267 self."prompt-toolkit"
268 self."pygments"
268 self."pygments"
269 self."pexpect"
269 self."pexpect"
270 self."backports.shutil-get-terminal-size"
270 self."backports.shutil-get-terminal-size"
271 self."pathlib2"
271 self."pathlib2"
272 self."pexpect"
272 self."pexpect"
273 ];
273 ];
274 src = fetchurl {
274 src = fetchurl {
275 url = "https://files.pythonhosted.org/packages/89/63/a9292f7cd9d0090a0f995e1167f3f17d5889dcbc9a175261719c513b9848/ipython-5.1.0.tar.gz";
275 url = "https://files.pythonhosted.org/packages/89/63/a9292f7cd9d0090a0f995e1167f3f17d5889dcbc9a175261719c513b9848/ipython-5.1.0.tar.gz";
276 sha256 = "0qdrf6aj9kvjczd5chj1my8y2iq09am9l8bb2a1334a52d76kx3y";
276 sha256 = "0qdrf6aj9kvjczd5chj1my8y2iq09am9l8bb2a1334a52d76kx3y";
277 };
277 };
278 meta = {
278 meta = {
279 license = [ pkgs.lib.licenses.bsdOriginal ];
279 license = [ pkgs.lib.licenses.bsdOriginal ];
280 };
280 };
281 };
281 };
282 "ipython-genutils" = super.buildPythonPackage {
282 "ipython-genutils" = super.buildPythonPackage {
283 name = "ipython-genutils-0.2.0";
283 name = "ipython-genutils-0.2.0";
284 doCheck = false;
284 doCheck = false;
285 src = fetchurl {
285 src = fetchurl {
286 url = "https://files.pythonhosted.org/packages/e8/69/fbeffffc05236398ebfcfb512b6d2511c622871dca1746361006da310399/ipython_genutils-0.2.0.tar.gz";
286 url = "https://files.pythonhosted.org/packages/e8/69/fbeffffc05236398ebfcfb512b6d2511c622871dca1746361006da310399/ipython_genutils-0.2.0.tar.gz";
287 sha256 = "1a4bc9y8hnvq6cp08qs4mckgm6i6ajpndp4g496rvvzcfmp12bpb";
287 sha256 = "1a4bc9y8hnvq6cp08qs4mckgm6i6ajpndp4g496rvvzcfmp12bpb";
288 };
288 };
289 meta = {
289 meta = {
290 license = [ pkgs.lib.licenses.bsdOriginal ];
290 license = [ pkgs.lib.licenses.bsdOriginal ];
291 };
291 };
292 };
292 };
293 "mako" = super.buildPythonPackage {
293 "mako" = super.buildPythonPackage {
294 name = "mako-1.0.7";
294 name = "mako-1.0.7";
295 doCheck = false;
295 doCheck = false;
296 propagatedBuildInputs = [
296 propagatedBuildInputs = [
297 self."markupsafe"
297 self."markupsafe"
298 ];
298 ];
299 src = fetchurl {
299 src = fetchurl {
300 url = "https://files.pythonhosted.org/packages/eb/f3/67579bb486517c0d49547f9697e36582cd19dafb5df9e687ed8e22de57fa/Mako-1.0.7.tar.gz";
300 url = "https://files.pythonhosted.org/packages/eb/f3/67579bb486517c0d49547f9697e36582cd19dafb5df9e687ed8e22de57fa/Mako-1.0.7.tar.gz";
301 sha256 = "1bi5gnr8r8dva06qpyx4kgjc6spm2k1y908183nbbaylggjzs0jf";
301 sha256 = "1bi5gnr8r8dva06qpyx4kgjc6spm2k1y908183nbbaylggjzs0jf";
302 };
302 };
303 meta = {
303 meta = {
304 license = [ pkgs.lib.licenses.mit ];
304 license = [ pkgs.lib.licenses.mit ];
305 };
305 };
306 };
306 };
307 "markupsafe" = super.buildPythonPackage {
307 "markupsafe" = super.buildPythonPackage {
308 name = "markupsafe-1.1.0";
308 name = "markupsafe-1.1.0";
309 doCheck = false;
309 doCheck = false;
310 src = fetchurl {
310 src = fetchurl {
311 url = "https://files.pythonhosted.org/packages/ac/7e/1b4c2e05809a4414ebce0892fe1e32c14ace86ca7d50c70f00979ca9b3a3/MarkupSafe-1.1.0.tar.gz";
311 url = "https://files.pythonhosted.org/packages/ac/7e/1b4c2e05809a4414ebce0892fe1e32c14ace86ca7d50c70f00979ca9b3a3/MarkupSafe-1.1.0.tar.gz";
312 sha256 = "1lxirjypbdd3l9jl4vliilhfnhy7c7f2vlldqg1b0i74khn375sf";
312 sha256 = "1lxirjypbdd3l9jl4vliilhfnhy7c7f2vlldqg1b0i74khn375sf";
313 };
313 };
314 meta = {
314 meta = {
315 license = [ pkgs.lib.licenses.bsdOriginal ];
315 license = [ pkgs.lib.licenses.bsdOriginal ];
316 };
316 };
317 };
317 };
318 "mercurial" = super.buildPythonPackage {
318 "mercurial" = super.buildPythonPackage {
319 name = "mercurial-4.6.2";
319 name = "mercurial-4.9";
320 doCheck = false;
320 doCheck = false;
321 src = fetchurl {
321 src = fetchurl {
322 url = "https://files.pythonhosted.org/packages/d9/fb/c7ecf2b7fd349878dbf45b8390b8db735cef73d49dd9ce8a364b4ca3a846/mercurial-4.6.2.tar.gz";
322 url = "https://files.pythonhosted.org/packages/1a/bb/fa36ada5f8d05651d30edeeb1b8dc7bf797ea701a77e4842c334246c912d/mercurial-4.9.tar.gz";
323 sha256 = "1bv6wgcdx8glihjjfg22khhc52mclsn4kwfqvzbzlg0b42h4xl0w";
323 sha256 = "01ig0464cvy9d87rn274g39frxr0p5q4lxf1xn5k3m24grf0qq0g";
324 };
324 };
325 meta = {
325 meta = {
326 license = [ pkgs.lib.licenses.gpl1 pkgs.lib.licenses.gpl2Plus ];
326 license = [ pkgs.lib.licenses.gpl1 pkgs.lib.licenses.gpl2Plus ];
327 };
327 };
328 };
328 };
329 "mock" = super.buildPythonPackage {
329 "mock" = super.buildPythonPackage {
330 name = "mock-1.0.1";
330 name = "mock-1.0.1";
331 doCheck = false;
331 doCheck = false;
332 src = fetchurl {
332 src = fetchurl {
333 url = "https://files.pythonhosted.org/packages/a2/52/7edcd94f0afb721a2d559a5b9aae8af4f8f2c79bc63fdbe8a8a6c9b23bbe/mock-1.0.1.tar.gz";
333 url = "https://files.pythonhosted.org/packages/a2/52/7edcd94f0afb721a2d559a5b9aae8af4f8f2c79bc63fdbe8a8a6c9b23bbe/mock-1.0.1.tar.gz";
334 sha256 = "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq";
334 sha256 = "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq";
335 };
335 };
336 meta = {
336 meta = {
337 license = [ pkgs.lib.licenses.bsdOriginal ];
337 license = [ pkgs.lib.licenses.bsdOriginal ];
338 };
338 };
339 };
339 };
340 "more-itertools" = super.buildPythonPackage {
340 "more-itertools" = super.buildPythonPackage {
341 name = "more-itertools-5.0.0";
341 name = "more-itertools-5.0.0";
342 doCheck = false;
342 doCheck = false;
343 propagatedBuildInputs = [
343 propagatedBuildInputs = [
344 self."six"
344 self."six"
345 ];
345 ];
346 src = fetchurl {
346 src = fetchurl {
347 url = "https://files.pythonhosted.org/packages/dd/26/30fc0d541d9fdf55faf5ba4b0fd68f81d5bd2447579224820ad525934178/more-itertools-5.0.0.tar.gz";
347 url = "https://files.pythonhosted.org/packages/dd/26/30fc0d541d9fdf55faf5ba4b0fd68f81d5bd2447579224820ad525934178/more-itertools-5.0.0.tar.gz";
348 sha256 = "1r12cm6mcdwdzz7d47a6g4l437xsvapdlgyhqay3i2nrlv03da9q";
348 sha256 = "1r12cm6mcdwdzz7d47a6g4l437xsvapdlgyhqay3i2nrlv03da9q";
349 };
349 };
350 meta = {
350 meta = {
351 license = [ pkgs.lib.licenses.mit ];
351 license = [ pkgs.lib.licenses.mit ];
352 };
352 };
353 };
353 };
354 "msgpack-python" = super.buildPythonPackage {
354 "msgpack-python" = super.buildPythonPackage {
355 name = "msgpack-python-0.5.6";
355 name = "msgpack-python-0.5.6";
356 doCheck = false;
356 doCheck = false;
357 src = fetchurl {
357 src = fetchurl {
358 url = "https://files.pythonhosted.org/packages/8a/20/6eca772d1a5830336f84aca1d8198e5a3f4715cd1c7fc36d3cc7f7185091/msgpack-python-0.5.6.tar.gz";
358 url = "https://files.pythonhosted.org/packages/8a/20/6eca772d1a5830336f84aca1d8198e5a3f4715cd1c7fc36d3cc7f7185091/msgpack-python-0.5.6.tar.gz";
359 sha256 = "16wh8qgybmfh4pjp8vfv78mdlkxfmcasg78lzlnm6nslsfkci31p";
359 sha256 = "16wh8qgybmfh4pjp8vfv78mdlkxfmcasg78lzlnm6nslsfkci31p";
360 };
360 };
361 meta = {
361 meta = {
362 license = [ pkgs.lib.licenses.asl20 ];
362 license = [ pkgs.lib.licenses.asl20 ];
363 };
363 };
364 };
364 };
365 "pastedeploy" = super.buildPythonPackage {
365 "pastedeploy" = super.buildPythonPackage {
366 name = "pastedeploy-2.0.1";
366 name = "pastedeploy-2.0.1";
367 doCheck = false;
367 doCheck = false;
368 src = fetchurl {
368 src = fetchurl {
369 url = "https://files.pythonhosted.org/packages/19/a0/5623701df7e2478a68a1b685d1a84518024eef994cde7e4da8449a31616f/PasteDeploy-2.0.1.tar.gz";
369 url = "https://files.pythonhosted.org/packages/19/a0/5623701df7e2478a68a1b685d1a84518024eef994cde7e4da8449a31616f/PasteDeploy-2.0.1.tar.gz";
370 sha256 = "02imfbbx1mi2h546f3sr37m47dk9qizaqhzzlhx8bkzxa6fzn8yl";
370 sha256 = "02imfbbx1mi2h546f3sr37m47dk9qizaqhzzlhx8bkzxa6fzn8yl";
371 };
371 };
372 meta = {
372 meta = {
373 license = [ pkgs.lib.licenses.mit ];
373 license = [ pkgs.lib.licenses.mit ];
374 };
374 };
375 };
375 };
376 "pathlib2" = super.buildPythonPackage {
376 "pathlib2" = super.buildPythonPackage {
377 name = "pathlib2-2.3.3";
377 name = "pathlib2-2.3.3";
378 doCheck = false;
378 doCheck = false;
379 propagatedBuildInputs = [
379 propagatedBuildInputs = [
380 self."six"
380 self."six"
381 self."scandir"
381 self."scandir"
382 ];
382 ];
383 src = fetchurl {
383 src = fetchurl {
384 url = "https://files.pythonhosted.org/packages/bf/d7/a2568f4596b75d2c6e2b4094a7e64f620decc7887f69a1f2811931ea15b9/pathlib2-2.3.3.tar.gz";
384 url = "https://files.pythonhosted.org/packages/bf/d7/a2568f4596b75d2c6e2b4094a7e64f620decc7887f69a1f2811931ea15b9/pathlib2-2.3.3.tar.gz";
385 sha256 = "0hpp92vqqgcd8h92msm9slv161b1q160igjwnkf2ag6cx0c96695";
385 sha256 = "0hpp92vqqgcd8h92msm9slv161b1q160igjwnkf2ag6cx0c96695";
386 };
386 };
387 meta = {
387 meta = {
388 license = [ pkgs.lib.licenses.mit ];
388 license = [ pkgs.lib.licenses.mit ];
389 };
389 };
390 };
390 };
391 "pexpect" = super.buildPythonPackage {
391 "pexpect" = super.buildPythonPackage {
392 name = "pexpect-4.6.0";
392 name = "pexpect-4.6.0";
393 doCheck = false;
393 doCheck = false;
394 propagatedBuildInputs = [
394 propagatedBuildInputs = [
395 self."ptyprocess"
395 self."ptyprocess"
396 ];
396 ];
397 src = fetchurl {
397 src = fetchurl {
398 url = "https://files.pythonhosted.org/packages/89/43/07d07654ee3e25235d8cea4164cdee0ec39d1fda8e9203156ebe403ffda4/pexpect-4.6.0.tar.gz";
398 url = "https://files.pythonhosted.org/packages/89/43/07d07654ee3e25235d8cea4164cdee0ec39d1fda8e9203156ebe403ffda4/pexpect-4.6.0.tar.gz";
399 sha256 = "1fla85g47iaxxpjhp9vkxdnv4pgc7rplfy6ja491smrrk0jqi3ia";
399 sha256 = "1fla85g47iaxxpjhp9vkxdnv4pgc7rplfy6ja491smrrk0jqi3ia";
400 };
400 };
401 meta = {
401 meta = {
402 license = [ pkgs.lib.licenses.isc { fullName = "ISC License (ISCL)"; } ];
402 license = [ pkgs.lib.licenses.isc { fullName = "ISC License (ISCL)"; } ];
403 };
403 };
404 };
404 };
405 "pickleshare" = super.buildPythonPackage {
405 "pickleshare" = super.buildPythonPackage {
406 name = "pickleshare-0.7.5";
406 name = "pickleshare-0.7.5";
407 doCheck = false;
407 doCheck = false;
408 propagatedBuildInputs = [
408 propagatedBuildInputs = [
409 self."pathlib2"
409 self."pathlib2"
410 ];
410 ];
411 src = fetchurl {
411 src = fetchurl {
412 url = "https://files.pythonhosted.org/packages/d8/b6/df3c1c9b616e9c0edbc4fbab6ddd09df9535849c64ba51fcb6531c32d4d8/pickleshare-0.7.5.tar.gz";
412 url = "https://files.pythonhosted.org/packages/d8/b6/df3c1c9b616e9c0edbc4fbab6ddd09df9535849c64ba51fcb6531c32d4d8/pickleshare-0.7.5.tar.gz";
413 sha256 = "1jmghg3c53yp1i8cm6pcrm280ayi8621rwyav9fac7awjr3kss47";
413 sha256 = "1jmghg3c53yp1i8cm6pcrm280ayi8621rwyav9fac7awjr3kss47";
414 };
414 };
415 meta = {
415 meta = {
416 license = [ pkgs.lib.licenses.mit ];
416 license = [ pkgs.lib.licenses.mit ];
417 };
417 };
418 };
418 };
419 "plaster" = super.buildPythonPackage {
419 "plaster" = super.buildPythonPackage {
420 name = "plaster-1.0";
420 name = "plaster-1.0";
421 doCheck = false;
421 doCheck = false;
422 propagatedBuildInputs = [
422 propagatedBuildInputs = [
423 self."setuptools"
423 self."setuptools"
424 ];
424 ];
425 src = fetchurl {
425 src = fetchurl {
426 url = "https://files.pythonhosted.org/packages/37/e1/56d04382d718d32751017d32f351214384e529b794084eee20bb52405563/plaster-1.0.tar.gz";
426 url = "https://files.pythonhosted.org/packages/37/e1/56d04382d718d32751017d32f351214384e529b794084eee20bb52405563/plaster-1.0.tar.gz";
427 sha256 = "1hy8k0nv2mxq94y5aysk6hjk9ryb4bsd13g83m60hcyzxz3wflc3";
427 sha256 = "1hy8k0nv2mxq94y5aysk6hjk9ryb4bsd13g83m60hcyzxz3wflc3";
428 };
428 };
429 meta = {
429 meta = {
430 license = [ pkgs.lib.licenses.mit ];
430 license = [ pkgs.lib.licenses.mit ];
431 };
431 };
432 };
432 };
433 "plaster-pastedeploy" = super.buildPythonPackage {
433 "plaster-pastedeploy" = super.buildPythonPackage {
434 name = "plaster-pastedeploy-0.6";
434 name = "plaster-pastedeploy-0.6";
435 doCheck = false;
435 doCheck = false;
436 propagatedBuildInputs = [
436 propagatedBuildInputs = [
437 self."pastedeploy"
437 self."pastedeploy"
438 self."plaster"
438 self."plaster"
439 ];
439 ];
440 src = fetchurl {
440 src = fetchurl {
441 url = "https://files.pythonhosted.org/packages/3f/e7/6a6833158d2038ec40085433308a1e164fd1dac595513f6dd556d5669bb8/plaster_pastedeploy-0.6.tar.gz";
441 url = "https://files.pythonhosted.org/packages/3f/e7/6a6833158d2038ec40085433308a1e164fd1dac595513f6dd556d5669bb8/plaster_pastedeploy-0.6.tar.gz";
442 sha256 = "1bkggk18f4z2bmsmxyxabvf62znvjwbivzh880419r3ap0616cf2";
442 sha256 = "1bkggk18f4z2bmsmxyxabvf62znvjwbivzh880419r3ap0616cf2";
443 };
443 };
444 meta = {
444 meta = {
445 license = [ pkgs.lib.licenses.mit ];
445 license = [ pkgs.lib.licenses.mit ];
446 };
446 };
447 };
447 };
448 "pluggy" = super.buildPythonPackage {
448 "pluggy" = super.buildPythonPackage {
449 name = "pluggy-0.9.0";
449 name = "pluggy-0.9.0";
450 doCheck = false;
450 doCheck = false;
451 src = fetchurl {
451 src = fetchurl {
452 url = "https://files.pythonhosted.org/packages/a7/8c/55c629849c64e665258d8976322dfdad171fa2f57117590662d8a67618a4/pluggy-0.9.0.tar.gz";
452 url = "https://files.pythonhosted.org/packages/a7/8c/55c629849c64e665258d8976322dfdad171fa2f57117590662d8a67618a4/pluggy-0.9.0.tar.gz";
453 sha256 = "13yg2q0wgcb4l8lgdvcnzqa8db5lrw3nwn50lxjy1z5jkp7gkv0r";
453 sha256 = "13yg2q0wgcb4l8lgdvcnzqa8db5lrw3nwn50lxjy1z5jkp7gkv0r";
454 };
454 };
455 meta = {
455 meta = {
456 license = [ pkgs.lib.licenses.mit ];
456 license = [ pkgs.lib.licenses.mit ];
457 };
457 };
458 };
458 };
459 "prompt-toolkit" = super.buildPythonPackage {
459 "prompt-toolkit" = super.buildPythonPackage {
460 name = "prompt-toolkit-1.0.15";
460 name = "prompt-toolkit-1.0.15";
461 doCheck = false;
461 doCheck = false;
462 propagatedBuildInputs = [
462 propagatedBuildInputs = [
463 self."six"
463 self."six"
464 self."wcwidth"
464 self."wcwidth"
465 ];
465 ];
466 src = fetchurl {
466 src = fetchurl {
467 url = "https://files.pythonhosted.org/packages/8a/ad/cf6b128866e78ad6d7f1dc5b7f99885fb813393d9860778b2984582e81b5/prompt_toolkit-1.0.15.tar.gz";
467 url = "https://files.pythonhosted.org/packages/8a/ad/cf6b128866e78ad6d7f1dc5b7f99885fb813393d9860778b2984582e81b5/prompt_toolkit-1.0.15.tar.gz";
468 sha256 = "05v9h5nydljwpj5nm8n804ms0glajwfy1zagrzqrg91wk3qqi1c5";
468 sha256 = "05v9h5nydljwpj5nm8n804ms0glajwfy1zagrzqrg91wk3qqi1c5";
469 };
469 };
470 meta = {
470 meta = {
471 license = [ pkgs.lib.licenses.bsdOriginal ];
471 license = [ pkgs.lib.licenses.bsdOriginal ];
472 };
472 };
473 };
473 };
474 "psutil" = super.buildPythonPackage {
474 "psutil" = super.buildPythonPackage {
475 name = "psutil-5.5.1";
475 name = "psutil-5.5.1";
476 doCheck = false;
476 doCheck = false;
477 src = fetchurl {
477 src = fetchurl {
478 url = "https://files.pythonhosted.org/packages/c7/01/7c30b247cdc5ba29623faa5c8cf1f1bbf7e041783c340414b0ed7e067c64/psutil-5.5.1.tar.gz";
478 url = "https://files.pythonhosted.org/packages/c7/01/7c30b247cdc5ba29623faa5c8cf1f1bbf7e041783c340414b0ed7e067c64/psutil-5.5.1.tar.gz";
479 sha256 = "045qaqvn6k90bj5bcy259yrwcd2afgznaav3sfhphy9b8ambzkkj";
479 sha256 = "045qaqvn6k90bj5bcy259yrwcd2afgznaav3sfhphy9b8ambzkkj";
480 };
480 };
481 meta = {
481 meta = {
482 license = [ pkgs.lib.licenses.bsdOriginal ];
482 license = [ pkgs.lib.licenses.bsdOriginal ];
483 };
483 };
484 };
484 };
485 "ptyprocess" = super.buildPythonPackage {
485 "ptyprocess" = super.buildPythonPackage {
486 name = "ptyprocess-0.6.0";
486 name = "ptyprocess-0.6.0";
487 doCheck = false;
487 doCheck = false;
488 src = fetchurl {
488 src = fetchurl {
489 url = "https://files.pythonhosted.org/packages/7d/2d/e4b8733cf79b7309d84c9081a4ab558c89d8c89da5961bf4ddb050ca1ce0/ptyprocess-0.6.0.tar.gz";
489 url = "https://files.pythonhosted.org/packages/7d/2d/e4b8733cf79b7309d84c9081a4ab558c89d8c89da5961bf4ddb050ca1ce0/ptyprocess-0.6.0.tar.gz";
490 sha256 = "1h4lcd3w5nrxnsk436ar7fwkiy5rfn5wj2xwy9l0r4mdqnf2jgwj";
490 sha256 = "1h4lcd3w5nrxnsk436ar7fwkiy5rfn5wj2xwy9l0r4mdqnf2jgwj";
491 };
491 };
492 meta = {
492 meta = {
493 license = [ ];
493 license = [ ];
494 };
494 };
495 };
495 };
496 "py" = super.buildPythonPackage {
496 "py" = super.buildPythonPackage {
497 name = "py-1.6.0";
497 name = "py-1.6.0";
498 doCheck = false;
498 doCheck = false;
499 src = fetchurl {
499 src = fetchurl {
500 url = "https://files.pythonhosted.org/packages/4f/38/5f427d1eedae73063ce4da680d2bae72014995f9fdeaa57809df61c968cd/py-1.6.0.tar.gz";
500 url = "https://files.pythonhosted.org/packages/4f/38/5f427d1eedae73063ce4da680d2bae72014995f9fdeaa57809df61c968cd/py-1.6.0.tar.gz";
501 sha256 = "1wcs3zv9wl5m5x7p16avqj2gsrviyb23yvc3pr330isqs0sh98q6";
501 sha256 = "1wcs3zv9wl5m5x7p16avqj2gsrviyb23yvc3pr330isqs0sh98q6";
502 };
502 };
503 meta = {
503 meta = {
504 license = [ pkgs.lib.licenses.mit ];
504 license = [ pkgs.lib.licenses.mit ];
505 };
505 };
506 };
506 };
507 "pygments" = super.buildPythonPackage {
507 "pygments" = super.buildPythonPackage {
508 name = "pygments-2.3.1";
508 name = "pygments-2.3.1";
509 doCheck = false;
509 doCheck = false;
510 src = fetchurl {
510 src = fetchurl {
511 url = "https://files.pythonhosted.org/packages/64/69/413708eaf3a64a6abb8972644e0f20891a55e621c6759e2c3f3891e05d63/Pygments-2.3.1.tar.gz";
511 url = "https://files.pythonhosted.org/packages/64/69/413708eaf3a64a6abb8972644e0f20891a55e621c6759e2c3f3891e05d63/Pygments-2.3.1.tar.gz";
512 sha256 = "0ji87g09jph8jqcvclgb02qvxasdnr9pzvk90rl66d90yqcxmyjz";
512 sha256 = "0ji87g09jph8jqcvclgb02qvxasdnr9pzvk90rl66d90yqcxmyjz";
513 };
513 };
514 meta = {
514 meta = {
515 license = [ pkgs.lib.licenses.bsdOriginal ];
515 license = [ pkgs.lib.licenses.bsdOriginal ];
516 };
516 };
517 };
517 };
518 "pyramid" = super.buildPythonPackage {
518 "pyramid" = super.buildPythonPackage {
519 name = "pyramid-1.10.1";
519 name = "pyramid-1.10.1";
520 doCheck = false;
520 doCheck = false;
521 propagatedBuildInputs = [
521 propagatedBuildInputs = [
522 self."hupper"
522 self."hupper"
523 self."plaster"
523 self."plaster"
524 self."plaster-pastedeploy"
524 self."plaster-pastedeploy"
525 self."setuptools"
525 self."setuptools"
526 self."translationstring"
526 self."translationstring"
527 self."venusian"
527 self."venusian"
528 self."webob"
528 self."webob"
529 self."zope.deprecation"
529 self."zope.deprecation"
530 self."zope.interface"
530 self."zope.interface"
531 self."repoze.lru"
531 self."repoze.lru"
532 ];
532 ];
533 src = fetchurl {
533 src = fetchurl {
534 url = "https://files.pythonhosted.org/packages/0a/3e/22e3ac9be1b70a01139adba8906ee4b8f628bb469fea3c52f6c97b73063c/pyramid-1.10.1.tar.gz";
534 url = "https://files.pythonhosted.org/packages/0a/3e/22e3ac9be1b70a01139adba8906ee4b8f628bb469fea3c52f6c97b73063c/pyramid-1.10.1.tar.gz";
535 sha256 = "1h5105nfh6rsrfjiyw20aavyibj36la3hajy6vh1fa77xb4y3hrp";
535 sha256 = "1h5105nfh6rsrfjiyw20aavyibj36la3hajy6vh1fa77xb4y3hrp";
536 };
536 };
537 meta = {
537 meta = {
538 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
538 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
539 };
539 };
540 };
540 };
541 "pyramid-mako" = super.buildPythonPackage {
541 "pyramid-mako" = super.buildPythonPackage {
542 name = "pyramid-mako-1.0.2";
542 name = "pyramid-mako-1.0.2";
543 doCheck = false;
543 doCheck = false;
544 propagatedBuildInputs = [
544 propagatedBuildInputs = [
545 self."pyramid"
545 self."pyramid"
546 self."mako"
546 self."mako"
547 ];
547 ];
548 src = fetchurl {
548 src = fetchurl {
549 url = "https://files.pythonhosted.org/packages/f1/92/7e69bcf09676d286a71cb3bbb887b16595b96f9ba7adbdc239ffdd4b1eb9/pyramid_mako-1.0.2.tar.gz";
549 url = "https://files.pythonhosted.org/packages/f1/92/7e69bcf09676d286a71cb3bbb887b16595b96f9ba7adbdc239ffdd4b1eb9/pyramid_mako-1.0.2.tar.gz";
550 sha256 = "18gk2vliq8z4acblsl6yzgbvnr9rlxjlcqir47km7kvlk1xri83d";
550 sha256 = "18gk2vliq8z4acblsl6yzgbvnr9rlxjlcqir47km7kvlk1xri83d";
551 };
551 };
552 meta = {
552 meta = {
553 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
553 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
554 };
554 };
555 };
555 };
556 "pytest" = super.buildPythonPackage {
556 "pytest" = super.buildPythonPackage {
557 name = "pytest-3.8.2";
557 name = "pytest-3.8.2";
558 doCheck = false;
558 doCheck = false;
559 propagatedBuildInputs = [
559 propagatedBuildInputs = [
560 self."py"
560 self."py"
561 self."six"
561 self."six"
562 self."setuptools"
562 self."setuptools"
563 self."attrs"
563 self."attrs"
564 self."more-itertools"
564 self."more-itertools"
565 self."atomicwrites"
565 self."atomicwrites"
566 self."pluggy"
566 self."pluggy"
567 self."funcsigs"
567 self."funcsigs"
568 self."pathlib2"
568 self."pathlib2"
569 ];
569 ];
570 src = fetchurl {
570 src = fetchurl {
571 url = "https://files.pythonhosted.org/packages/5f/d2/7f77f406ac505abda02ab4afb50d06ebf304f6ea42fca34f8f37529106b2/pytest-3.8.2.tar.gz";
571 url = "https://files.pythonhosted.org/packages/5f/d2/7f77f406ac505abda02ab4afb50d06ebf304f6ea42fca34f8f37529106b2/pytest-3.8.2.tar.gz";
572 sha256 = "18nrwzn61kph2y6gxwfz9ms68rfvr9d4vcffsxng9p7jk9z18clk";
572 sha256 = "18nrwzn61kph2y6gxwfz9ms68rfvr9d4vcffsxng9p7jk9z18clk";
573 };
573 };
574 meta = {
574 meta = {
575 license = [ pkgs.lib.licenses.mit ];
575 license = [ pkgs.lib.licenses.mit ];
576 };
576 };
577 };
577 };
578 "pytest-cov" = super.buildPythonPackage {
578 "pytest-cov" = super.buildPythonPackage {
579 name = "pytest-cov-2.6.0";
579 name = "pytest-cov-2.6.0";
580 doCheck = false;
580 doCheck = false;
581 propagatedBuildInputs = [
581 propagatedBuildInputs = [
582 self."pytest"
582 self."pytest"
583 self."coverage"
583 self."coverage"
584 ];
584 ];
585 src = fetchurl {
585 src = fetchurl {
586 url = "https://files.pythonhosted.org/packages/d9/e2/58f90a316fbd94dd50bf5c826a23f3f5d079fb3cc448c1e9f0e3c33a3d2a/pytest-cov-2.6.0.tar.gz";
586 url = "https://files.pythonhosted.org/packages/d9/e2/58f90a316fbd94dd50bf5c826a23f3f5d079fb3cc448c1e9f0e3c33a3d2a/pytest-cov-2.6.0.tar.gz";
587 sha256 = "0qnpp9y3ygx4jk4pf5ad71fh2skbvnr6gl54m7rg5qysnx4g0q73";
587 sha256 = "0qnpp9y3ygx4jk4pf5ad71fh2skbvnr6gl54m7rg5qysnx4g0q73";
588 };
588 };
589 meta = {
589 meta = {
590 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.mit ];
590 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.mit ];
591 };
591 };
592 };
592 };
593 "pytest-profiling" = super.buildPythonPackage {
593 "pytest-profiling" = super.buildPythonPackage {
594 name = "pytest-profiling-1.3.0";
594 name = "pytest-profiling-1.3.0";
595 doCheck = false;
595 doCheck = false;
596 propagatedBuildInputs = [
596 propagatedBuildInputs = [
597 self."six"
597 self."six"
598 self."pytest"
598 self."pytest"
599 self."gprof2dot"
599 self."gprof2dot"
600 ];
600 ];
601 src = fetchurl {
601 src = fetchurl {
602 url = "https://files.pythonhosted.org/packages/f5/34/4626126e041a51ef50a80d0619519b18d20aef249aac25b0d0fdd47e57ee/pytest-profiling-1.3.0.tar.gz";
602 url = "https://files.pythonhosted.org/packages/f5/34/4626126e041a51ef50a80d0619519b18d20aef249aac25b0d0fdd47e57ee/pytest-profiling-1.3.0.tar.gz";
603 sha256 = "08r5afx5z22yvpmsnl91l4amsy1yxn8qsmm61mhp06mz8zjs51kb";
603 sha256 = "08r5afx5z22yvpmsnl91l4amsy1yxn8qsmm61mhp06mz8zjs51kb";
604 };
604 };
605 meta = {
605 meta = {
606 license = [ pkgs.lib.licenses.mit ];
606 license = [ pkgs.lib.licenses.mit ];
607 };
607 };
608 };
608 };
609 "pytest-runner" = super.buildPythonPackage {
609 "pytest-runner" = super.buildPythonPackage {
610 name = "pytest-runner-4.2";
610 name = "pytest-runner-4.2";
611 doCheck = false;
611 doCheck = false;
612 src = fetchurl {
612 src = fetchurl {
613 url = "https://files.pythonhosted.org/packages/9e/b7/fe6e8f87f9a756fd06722216f1b6698ccba4d269eac6329d9f0c441d0f93/pytest-runner-4.2.tar.gz";
613 url = "https://files.pythonhosted.org/packages/9e/b7/fe6e8f87f9a756fd06722216f1b6698ccba4d269eac6329d9f0c441d0f93/pytest-runner-4.2.tar.gz";
614 sha256 = "1gkpyphawxz38ni1gdq1fmwyqcg02m7ypzqvv46z06crwdxi2gyj";
614 sha256 = "1gkpyphawxz38ni1gdq1fmwyqcg02m7ypzqvv46z06crwdxi2gyj";
615 };
615 };
616 meta = {
616 meta = {
617 license = [ pkgs.lib.licenses.mit ];
617 license = [ pkgs.lib.licenses.mit ];
618 };
618 };
619 };
619 };
620 "pytest-sugar" = super.buildPythonPackage {
620 "pytest-sugar" = super.buildPythonPackage {
621 name = "pytest-sugar-0.9.1";
621 name = "pytest-sugar-0.9.1";
622 doCheck = false;
622 doCheck = false;
623 propagatedBuildInputs = [
623 propagatedBuildInputs = [
624 self."pytest"
624 self."pytest"
625 self."termcolor"
625 self."termcolor"
626 ];
626 ];
627 src = fetchurl {
627 src = fetchurl {
628 url = "https://files.pythonhosted.org/packages/3e/6a/a3f909083079d03bde11d06ab23088886bbe25f2c97fbe4bb865e2bf05bc/pytest-sugar-0.9.1.tar.gz";
628 url = "https://files.pythonhosted.org/packages/3e/6a/a3f909083079d03bde11d06ab23088886bbe25f2c97fbe4bb865e2bf05bc/pytest-sugar-0.9.1.tar.gz";
629 sha256 = "0b4av40dv30727m54v211r0nzwjp2ajkjgxix6j484qjmwpw935b";
629 sha256 = "0b4av40dv30727m54v211r0nzwjp2ajkjgxix6j484qjmwpw935b";
630 };
630 };
631 meta = {
631 meta = {
632 license = [ pkgs.lib.licenses.bsdOriginal ];
632 license = [ pkgs.lib.licenses.bsdOriginal ];
633 };
633 };
634 };
634 };
635 "pytest-timeout" = super.buildPythonPackage {
635 "pytest-timeout" = super.buildPythonPackage {
636 name = "pytest-timeout-1.3.2";
636 name = "pytest-timeout-1.3.2";
637 doCheck = false;
637 doCheck = false;
638 propagatedBuildInputs = [
638 propagatedBuildInputs = [
639 self."pytest"
639 self."pytest"
640 ];
640 ];
641 src = fetchurl {
641 src = fetchurl {
642 url = "https://files.pythonhosted.org/packages/8c/3e/1b6a319d12ae7baa3acb7c18ff2c8630a09471a0319d43535c683b4d03eb/pytest-timeout-1.3.2.tar.gz";
642 url = "https://files.pythonhosted.org/packages/8c/3e/1b6a319d12ae7baa3acb7c18ff2c8630a09471a0319d43535c683b4d03eb/pytest-timeout-1.3.2.tar.gz";
643 sha256 = "09wnmzvnls2mnsdz7x3c3sk2zdp6jl4dryvyj5i8hqz16q2zq5qi";
643 sha256 = "09wnmzvnls2mnsdz7x3c3sk2zdp6jl4dryvyj5i8hqz16q2zq5qi";
644 };
644 };
645 meta = {
645 meta = {
646 license = [ pkgs.lib.licenses.mit { fullName = "DFSG approved"; } ];
646 license = [ pkgs.lib.licenses.mit { fullName = "DFSG approved"; } ];
647 };
647 };
648 };
648 };
649 "repoze.lru" = super.buildPythonPackage {
649 "repoze.lru" = super.buildPythonPackage {
650 name = "repoze.lru-0.7";
650 name = "repoze.lru-0.7";
651 doCheck = false;
651 doCheck = false;
652 src = fetchurl {
652 src = fetchurl {
653 url = "https://files.pythonhosted.org/packages/12/bc/595a77c4b5e204847fdf19268314ef59c85193a9dc9f83630fc459c0fee5/repoze.lru-0.7.tar.gz";
653 url = "https://files.pythonhosted.org/packages/12/bc/595a77c4b5e204847fdf19268314ef59c85193a9dc9f83630fc459c0fee5/repoze.lru-0.7.tar.gz";
654 sha256 = "0xzz1aw2smy8hdszrq8yhnklx6w1r1mf55061kalw3iq35gafa84";
654 sha256 = "0xzz1aw2smy8hdszrq8yhnklx6w1r1mf55061kalw3iq35gafa84";
655 };
655 };
656 meta = {
656 meta = {
657 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
657 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
658 };
658 };
659 };
659 };
660 "rhodecode-vcsserver" = super.buildPythonPackage {
660 "rhodecode-vcsserver" = super.buildPythonPackage {
661 name = "rhodecode-vcsserver-4.17.0";
661 name = "rhodecode-vcsserver-4.17.0";
662 buildInputs = [
662 buildInputs = [
663 self."pytest"
663 self."pytest"
664 self."py"
664 self."py"
665 self."pytest-cov"
665 self."pytest-cov"
666 self."pytest-sugar"
666 self."pytest-sugar"
667 self."pytest-runner"
667 self."pytest-runner"
668 self."pytest-profiling"
668 self."pytest-profiling"
669 self."pytest-timeout"
669 self."pytest-timeout"
670 self."gprof2dot"
670 self."gprof2dot"
671 self."mock"
671 self."mock"
672 self."cov-core"
672 self."cov-core"
673 self."coverage"
673 self."coverage"
674 self."webtest"
674 self."webtest"
675 self."beautifulsoup4"
675 self."beautifulsoup4"
676 self."configobj"
676 self."configobj"
677 ];
677 ];
678 doCheck = true;
678 doCheck = true;
679 propagatedBuildInputs = [
679 propagatedBuildInputs = [
680 self."configobj"
680 self."configobj"
681 self."dogpile.cache"
681 self."dogpile.cache"
682 self."dogpile.core"
682 self."dogpile.core"
683 self."decorator"
683 self."decorator"
684 self."dulwich"
684 self."dulwich"
685 self."hgsubversion"
685 self."hgsubversion"
686 self."hg-evolve"
686 self."hg-evolve"
687 self."mako"
687 self."mako"
688 self."markupsafe"
688 self."markupsafe"
689 self."mercurial"
689 self."mercurial"
690 self."msgpack-python"
690 self."msgpack-python"
691 self."pastedeploy"
691 self."pastedeploy"
692 self."pyramid"
692 self."pyramid"
693 self."pyramid-mako"
693 self."pyramid-mako"
694 self."repoze.lru"
694 self."repoze.lru"
695 self."simplejson"
695 self."simplejson"
696 self."subprocess32"
696 self."subprocess32"
697 self."subvertpy"
697 self."subvertpy"
698 self."six"
698 self."six"
699 self."translationstring"
699 self."translationstring"
700 self."webob"
700 self."webob"
701 self."zope.deprecation"
701 self."zope.deprecation"
702 self."zope.interface"
702 self."zope.interface"
703 self."gevent"
703 self."gevent"
704 self."greenlet"
704 self."greenlet"
705 self."gunicorn"
705 self."gunicorn"
706 self."waitress"
706 self."waitress"
707 self."ipdb"
707 self."ipdb"
708 self."ipython"
708 self."ipython"
709 self."pytest"
709 self."pytest"
710 self."py"
710 self."py"
711 self."pytest-cov"
711 self."pytest-cov"
712 self."pytest-sugar"
712 self."pytest-sugar"
713 self."pytest-runner"
713 self."pytest-runner"
714 self."pytest-profiling"
714 self."pytest-profiling"
715 self."pytest-timeout"
715 self."pytest-timeout"
716 self."gprof2dot"
716 self."gprof2dot"
717 self."mock"
717 self."mock"
718 self."cov-core"
718 self."cov-core"
719 self."coverage"
719 self."coverage"
720 self."webtest"
720 self."webtest"
721 self."beautifulsoup4"
721 self."beautifulsoup4"
722 ];
722 ];
723 src = ./.;
723 src = ./.;
724 meta = {
724 meta = {
725 license = [ { fullName = "GPL V3"; } { fullName = "GNU General Public License v3 or later (GPLv3+)"; } ];
725 license = [ { fullName = "GPL V3"; } { fullName = "GNU General Public License v3 or later (GPLv3+)"; } ];
726 };
726 };
727 };
727 };
728 "scandir" = super.buildPythonPackage {
728 "scandir" = super.buildPythonPackage {
729 name = "scandir-1.9.0";
729 name = "scandir-1.9.0";
730 doCheck = false;
730 doCheck = false;
731 src = fetchurl {
731 src = fetchurl {
732 url = "https://files.pythonhosted.org/packages/16/2a/557af1181e6b4e30254d5a6163b18f5053791ca66e251e77ab08887e8fe3/scandir-1.9.0.tar.gz";
732 url = "https://files.pythonhosted.org/packages/16/2a/557af1181e6b4e30254d5a6163b18f5053791ca66e251e77ab08887e8fe3/scandir-1.9.0.tar.gz";
733 sha256 = "0r3hvf1a9jm1rkqgx40gxkmccknkaiqjavs8lccgq9s8khh5x5s4";
733 sha256 = "0r3hvf1a9jm1rkqgx40gxkmccknkaiqjavs8lccgq9s8khh5x5s4";
734 };
734 };
735 meta = {
735 meta = {
736 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "New BSD License"; } ];
736 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "New BSD License"; } ];
737 };
737 };
738 };
738 };
739 "setproctitle" = super.buildPythonPackage {
739 "setproctitle" = super.buildPythonPackage {
740 name = "setproctitle-1.1.10";
740 name = "setproctitle-1.1.10";
741 doCheck = false;
741 doCheck = false;
742 src = fetchurl {
742 src = fetchurl {
743 url = "https://files.pythonhosted.org/packages/5a/0d/dc0d2234aacba6cf1a729964383e3452c52096dc695581248b548786f2b3/setproctitle-1.1.10.tar.gz";
743 url = "https://files.pythonhosted.org/packages/5a/0d/dc0d2234aacba6cf1a729964383e3452c52096dc695581248b548786f2b3/setproctitle-1.1.10.tar.gz";
744 sha256 = "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2";
744 sha256 = "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2";
745 };
745 };
746 meta = {
746 meta = {
747 license = [ pkgs.lib.licenses.bsdOriginal ];
747 license = [ pkgs.lib.licenses.bsdOriginal ];
748 };
748 };
749 };
749 };
750 "setuptools" = super.buildPythonPackage {
750 "setuptools" = super.buildPythonPackage {
751 name = "setuptools-40.8.0";
751 name = "setuptools-40.8.0";
752 doCheck = false;
752 doCheck = false;
753 src = fetchurl {
753 src = fetchurl {
754 url = "https://files.pythonhosted.org/packages/c2/f7/c7b501b783e5a74cf1768bc174ee4fb0a8a6ee5af6afa92274ff964703e0/setuptools-40.8.0.zip";
754 url = "https://files.pythonhosted.org/packages/c2/f7/c7b501b783e5a74cf1768bc174ee4fb0a8a6ee5af6afa92274ff964703e0/setuptools-40.8.0.zip";
755 sha256 = "0k9hifpgahnw2a26w3cr346iy733k6d3nwh3f7g9m13y6f8fqkkf";
755 sha256 = "0k9hifpgahnw2a26w3cr346iy733k6d3nwh3f7g9m13y6f8fqkkf";
756 };
756 };
757 meta = {
757 meta = {
758 license = [ pkgs.lib.licenses.mit ];
758 license = [ pkgs.lib.licenses.mit ];
759 };
759 };
760 };
760 };
761 "simplegeneric" = super.buildPythonPackage {
761 "simplegeneric" = super.buildPythonPackage {
762 name = "simplegeneric-0.8.1";
762 name = "simplegeneric-0.8.1";
763 doCheck = false;
763 doCheck = false;
764 src = fetchurl {
764 src = fetchurl {
765 url = "https://files.pythonhosted.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b/simplegeneric-0.8.1.zip";
765 url = "https://files.pythonhosted.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b/simplegeneric-0.8.1.zip";
766 sha256 = "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw";
766 sha256 = "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw";
767 };
767 };
768 meta = {
768 meta = {
769 license = [ pkgs.lib.licenses.zpl21 ];
769 license = [ pkgs.lib.licenses.zpl21 ];
770 };
770 };
771 };
771 };
772 "simplejson" = super.buildPythonPackage {
772 "simplejson" = super.buildPythonPackage {
773 name = "simplejson-3.16.0";
773 name = "simplejson-3.16.0";
774 doCheck = false;
774 doCheck = false;
775 src = fetchurl {
775 src = fetchurl {
776 url = "https://files.pythonhosted.org/packages/e3/24/c35fb1c1c315fc0fffe61ea00d3f88e85469004713dab488dee4f35b0aff/simplejson-3.16.0.tar.gz";
776 url = "https://files.pythonhosted.org/packages/e3/24/c35fb1c1c315fc0fffe61ea00d3f88e85469004713dab488dee4f35b0aff/simplejson-3.16.0.tar.gz";
777 sha256 = "19cws1syk8jzq2pw43878dv6fjkb0ifvjpx0i9aajix6kc9jkwxi";
777 sha256 = "19cws1syk8jzq2pw43878dv6fjkb0ifvjpx0i9aajix6kc9jkwxi";
778 };
778 };
779 meta = {
779 meta = {
780 license = [ { fullName = "Academic Free License (AFL)"; } pkgs.lib.licenses.mit ];
780 license = [ { fullName = "Academic Free License (AFL)"; } pkgs.lib.licenses.mit ];
781 };
781 };
782 };
782 };
783 "six" = super.buildPythonPackage {
783 "six" = super.buildPythonPackage {
784 name = "six-1.11.0";
784 name = "six-1.11.0";
785 doCheck = false;
785 doCheck = false;
786 src = fetchurl {
786 src = fetchurl {
787 url = "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
787 url = "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
788 sha256 = "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h";
788 sha256 = "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h";
789 };
789 };
790 meta = {
790 meta = {
791 license = [ pkgs.lib.licenses.mit ];
791 license = [ pkgs.lib.licenses.mit ];
792 };
792 };
793 };
793 };
794 "subprocess32" = super.buildPythonPackage {
794 "subprocess32" = super.buildPythonPackage {
795 name = "subprocess32-3.5.3";
795 name = "subprocess32-3.5.3";
796 doCheck = false;
796 doCheck = false;
797 src = fetchurl {
797 src = fetchurl {
798 url = "https://files.pythonhosted.org/packages/be/2b/beeba583e9877e64db10b52a96915afc0feabf7144dcbf2a0d0ea68bf73d/subprocess32-3.5.3.tar.gz";
798 url = "https://files.pythonhosted.org/packages/be/2b/beeba583e9877e64db10b52a96915afc0feabf7144dcbf2a0d0ea68bf73d/subprocess32-3.5.3.tar.gz";
799 sha256 = "1hr5fan8i719hmlmz73hf8rhq74014w07d8ryg7krvvf6692kj3b";
799 sha256 = "1hr5fan8i719hmlmz73hf8rhq74014w07d8ryg7krvvf6692kj3b";
800 };
800 };
801 meta = {
801 meta = {
802 license = [ pkgs.lib.licenses.psfl ];
802 license = [ pkgs.lib.licenses.psfl ];
803 };
803 };
804 };
804 };
805 "subvertpy" = super.buildPythonPackage {
805 "subvertpy" = super.buildPythonPackage {
806 name = "subvertpy-0.10.1";
806 name = "subvertpy-0.10.1";
807 doCheck = false;
807 doCheck = false;
808 src = fetchurl {
808 src = fetchurl {
809 url = "https://files.pythonhosted.org/packages/9d/76/99fa82affce75f5ac0f7dbe513796c3f37311ace0c68e1b063683b4f9b99/subvertpy-0.10.1.tar.gz";
809 url = "https://files.pythonhosted.org/packages/9d/76/99fa82affce75f5ac0f7dbe513796c3f37311ace0c68e1b063683b4f9b99/subvertpy-0.10.1.tar.gz";
810 sha256 = "061ncy9wjz3zyv527avcrdyk0xygyssyy7p1644nhzhwp8zpybij";
810 sha256 = "061ncy9wjz3zyv527avcrdyk0xygyssyy7p1644nhzhwp8zpybij";
811 };
811 };
812 meta = {
812 meta = {
813 license = [ pkgs.lib.licenses.lgpl21Plus pkgs.lib.licenses.gpl2Plus ];
813 license = [ pkgs.lib.licenses.lgpl21Plus pkgs.lib.licenses.gpl2Plus ];
814 };
814 };
815 };
815 };
816 "termcolor" = super.buildPythonPackage {
816 "termcolor" = super.buildPythonPackage {
817 name = "termcolor-1.1.0";
817 name = "termcolor-1.1.0";
818 doCheck = false;
818 doCheck = false;
819 src = fetchurl {
819 src = fetchurl {
820 url = "https://files.pythonhosted.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz";
820 url = "https://files.pythonhosted.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz";
821 sha256 = "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x";
821 sha256 = "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x";
822 };
822 };
823 meta = {
823 meta = {
824 license = [ pkgs.lib.licenses.mit ];
824 license = [ pkgs.lib.licenses.mit ];
825 };
825 };
826 };
826 };
827 "traitlets" = super.buildPythonPackage {
827 "traitlets" = super.buildPythonPackage {
828 name = "traitlets-4.3.2";
828 name = "traitlets-4.3.2";
829 doCheck = false;
829 doCheck = false;
830 propagatedBuildInputs = [
830 propagatedBuildInputs = [
831 self."ipython-genutils"
831 self."ipython-genutils"
832 self."six"
832 self."six"
833 self."decorator"
833 self."decorator"
834 self."enum34"
834 self."enum34"
835 ];
835 ];
836 src = fetchurl {
836 src = fetchurl {
837 url = "https://files.pythonhosted.org/packages/a5/98/7f5ef2fe9e9e071813aaf9cb91d1a732e0a68b6c44a32b38cb8e14c3f069/traitlets-4.3.2.tar.gz";
837 url = "https://files.pythonhosted.org/packages/a5/98/7f5ef2fe9e9e071813aaf9cb91d1a732e0a68b6c44a32b38cb8e14c3f069/traitlets-4.3.2.tar.gz";
838 sha256 = "0dbq7sx26xqz5ixs711k5nc88p8a0nqyz6162pwks5dpcz9d4jww";
838 sha256 = "0dbq7sx26xqz5ixs711k5nc88p8a0nqyz6162pwks5dpcz9d4jww";
839 };
839 };
840 meta = {
840 meta = {
841 license = [ pkgs.lib.licenses.bsdOriginal ];
841 license = [ pkgs.lib.licenses.bsdOriginal ];
842 };
842 };
843 };
843 };
844 "translationstring" = super.buildPythonPackage {
844 "translationstring" = super.buildPythonPackage {
845 name = "translationstring-1.3";
845 name = "translationstring-1.3";
846 doCheck = false;
846 doCheck = false;
847 src = fetchurl {
847 src = fetchurl {
848 url = "https://files.pythonhosted.org/packages/5e/eb/bee578cc150b44c653b63f5ebe258b5d0d812ddac12497e5f80fcad5d0b4/translationstring-1.3.tar.gz";
848 url = "https://files.pythonhosted.org/packages/5e/eb/bee578cc150b44c653b63f5ebe258b5d0d812ddac12497e5f80fcad5d0b4/translationstring-1.3.tar.gz";
849 sha256 = "0bdpcnd9pv0131dl08h4zbcwmgc45lyvq3pa224xwan5b3x4rr2f";
849 sha256 = "0bdpcnd9pv0131dl08h4zbcwmgc45lyvq3pa224xwan5b3x4rr2f";
850 };
850 };
851 meta = {
851 meta = {
852 license = [ { fullName = "BSD-like (http://repoze.org/license.html)"; } ];
852 license = [ { fullName = "BSD-like (http://repoze.org/license.html)"; } ];
853 };
853 };
854 };
854 };
855 "venusian" = super.buildPythonPackage {
855 "venusian" = super.buildPythonPackage {
856 name = "venusian-1.2.0";
856 name = "venusian-1.2.0";
857 doCheck = false;
857 doCheck = false;
858 src = fetchurl {
858 src = fetchurl {
859 url = "https://files.pythonhosted.org/packages/7e/6f/40a9d43ac77cb51cb62be5b5662d170f43f8037bdc4eab56336c4ca92bb7/venusian-1.2.0.tar.gz";
859 url = "https://files.pythonhosted.org/packages/7e/6f/40a9d43ac77cb51cb62be5b5662d170f43f8037bdc4eab56336c4ca92bb7/venusian-1.2.0.tar.gz";
860 sha256 = "0ghyx66g8ikx9nx1mnwqvdcqm11i1vlq0hnvwl50s48bp22q5v34";
860 sha256 = "0ghyx66g8ikx9nx1mnwqvdcqm11i1vlq0hnvwl50s48bp22q5v34";
861 };
861 };
862 meta = {
862 meta = {
863 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
863 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
864 };
864 };
865 };
865 };
866 "waitress" = super.buildPythonPackage {
866 "waitress" = super.buildPythonPackage {
867 name = "waitress-1.1.0";
867 name = "waitress-1.1.0";
868 doCheck = false;
868 doCheck = false;
869 src = fetchurl {
869 src = fetchurl {
870 url = "https://files.pythonhosted.org/packages/3c/68/1c10dd5c556872ceebe88483b0436140048d39de83a84a06a8baa8136f4f/waitress-1.1.0.tar.gz";
870 url = "https://files.pythonhosted.org/packages/3c/68/1c10dd5c556872ceebe88483b0436140048d39de83a84a06a8baa8136f4f/waitress-1.1.0.tar.gz";
871 sha256 = "1a85gyji0kajc3p0s1pwwfm06w4wfxjkvvl4rnrz3h164kbd6g6k";
871 sha256 = "1a85gyji0kajc3p0s1pwwfm06w4wfxjkvvl4rnrz3h164kbd6g6k";
872 };
872 };
873 meta = {
873 meta = {
874 license = [ pkgs.lib.licenses.zpl21 ];
874 license = [ pkgs.lib.licenses.zpl21 ];
875 };
875 };
876 };
876 };
877 "wcwidth" = super.buildPythonPackage {
877 "wcwidth" = super.buildPythonPackage {
878 name = "wcwidth-0.1.7";
878 name = "wcwidth-0.1.7";
879 doCheck = false;
879 doCheck = false;
880 src = fetchurl {
880 src = fetchurl {
881 url = "https://files.pythonhosted.org/packages/55/11/e4a2bb08bb450fdbd42cc709dd40de4ed2c472cf0ccb9e64af22279c5495/wcwidth-0.1.7.tar.gz";
881 url = "https://files.pythonhosted.org/packages/55/11/e4a2bb08bb450fdbd42cc709dd40de4ed2c472cf0ccb9e64af22279c5495/wcwidth-0.1.7.tar.gz";
882 sha256 = "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx";
882 sha256 = "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx";
883 };
883 };
884 meta = {
884 meta = {
885 license = [ pkgs.lib.licenses.mit ];
885 license = [ pkgs.lib.licenses.mit ];
886 };
886 };
887 };
887 };
888 "webob" = super.buildPythonPackage {
888 "webob" = super.buildPythonPackage {
889 name = "webob-1.8.4";
889 name = "webob-1.8.4";
890 doCheck = false;
890 doCheck = false;
891 src = fetchurl {
891 src = fetchurl {
892 url = "https://files.pythonhosted.org/packages/e4/6c/99e322c3d4cc11d9060a67a9bf2f7c9c581f40988c11fffe89bb8c36bc5e/WebOb-1.8.4.tar.gz";
892 url = "https://files.pythonhosted.org/packages/e4/6c/99e322c3d4cc11d9060a67a9bf2f7c9c581f40988c11fffe89bb8c36bc5e/WebOb-1.8.4.tar.gz";
893 sha256 = "16cfg5y4n6sihz59vsmns2yqbfm0gfsn3l5xgz2g0pdhilaib0x4";
893 sha256 = "16cfg5y4n6sihz59vsmns2yqbfm0gfsn3l5xgz2g0pdhilaib0x4";
894 };
894 };
895 meta = {
895 meta = {
896 license = [ pkgs.lib.licenses.mit ];
896 license = [ pkgs.lib.licenses.mit ];
897 };
897 };
898 };
898 };
899 "webtest" = super.buildPythonPackage {
899 "webtest" = super.buildPythonPackage {
900 name = "webtest-2.0.32";
900 name = "webtest-2.0.32";
901 doCheck = false;
901 doCheck = false;
902 propagatedBuildInputs = [
902 propagatedBuildInputs = [
903 self."six"
903 self."six"
904 self."webob"
904 self."webob"
905 self."waitress"
905 self."waitress"
906 self."beautifulsoup4"
906 self."beautifulsoup4"
907 ];
907 ];
908 src = fetchurl {
908 src = fetchurl {
909 url = "https://files.pythonhosted.org/packages/27/9f/9e74449d272ffbef4fb3012e6dbc53c0b24822d545e7a33a342f80131e59/WebTest-2.0.32.tar.gz";
909 url = "https://files.pythonhosted.org/packages/27/9f/9e74449d272ffbef4fb3012e6dbc53c0b24822d545e7a33a342f80131e59/WebTest-2.0.32.tar.gz";
910 sha256 = "0qp0nnbazzm4ibjiyqfcn6f230svk09i4g58zg2i9x1ga06h48a2";
910 sha256 = "0qp0nnbazzm4ibjiyqfcn6f230svk09i4g58zg2i9x1ga06h48a2";
911 };
911 };
912 meta = {
912 meta = {
913 license = [ pkgs.lib.licenses.mit ];
913 license = [ pkgs.lib.licenses.mit ];
914 };
914 };
915 };
915 };
916 "zope.deprecation" = super.buildPythonPackage {
916 "zope.deprecation" = super.buildPythonPackage {
917 name = "zope.deprecation-4.4.0";
917 name = "zope.deprecation-4.4.0";
918 doCheck = false;
918 doCheck = false;
919 propagatedBuildInputs = [
919 propagatedBuildInputs = [
920 self."setuptools"
920 self."setuptools"
921 ];
921 ];
922 src = fetchurl {
922 src = fetchurl {
923 url = "https://files.pythonhosted.org/packages/34/da/46e92d32d545dd067b9436279d84c339e8b16de2ca393d7b892bc1e1e9fd/zope.deprecation-4.4.0.tar.gz";
923 url = "https://files.pythonhosted.org/packages/34/da/46e92d32d545dd067b9436279d84c339e8b16de2ca393d7b892bc1e1e9fd/zope.deprecation-4.4.0.tar.gz";
924 sha256 = "1pz2cv7gv9y1r3m0bdv7ks1alagmrn5msm5spwdzkb2by0w36i8d";
924 sha256 = "1pz2cv7gv9y1r3m0bdv7ks1alagmrn5msm5spwdzkb2by0w36i8d";
925 };
925 };
926 meta = {
926 meta = {
927 license = [ pkgs.lib.licenses.zpl21 ];
927 license = [ pkgs.lib.licenses.zpl21 ];
928 };
928 };
929 };
929 };
930 "zope.interface" = super.buildPythonPackage {
930 "zope.interface" = super.buildPythonPackage {
931 name = "zope.interface-4.6.0";
931 name = "zope.interface-4.6.0";
932 doCheck = false;
932 doCheck = false;
933 propagatedBuildInputs = [
933 propagatedBuildInputs = [
934 self."setuptools"
934 self."setuptools"
935 ];
935 ];
936 src = fetchurl {
936 src = fetchurl {
937 url = "https://files.pythonhosted.org/packages/4e/d0/c9d16bd5b38de44a20c6dc5d5ed80a49626fafcb3db9f9efdc2a19026db6/zope.interface-4.6.0.tar.gz";
937 url = "https://files.pythonhosted.org/packages/4e/d0/c9d16bd5b38de44a20c6dc5d5ed80a49626fafcb3db9f9efdc2a19026db6/zope.interface-4.6.0.tar.gz";
938 sha256 = "1rgh2x3rcl9r0v0499kf78xy86rnmanajf4ywmqb943wpk50sg8v";
938 sha256 = "1rgh2x3rcl9r0v0499kf78xy86rnmanajf4ywmqb943wpk50sg8v";
939 };
939 };
940 meta = {
940 meta = {
941 license = [ pkgs.lib.licenses.zpl21 ];
941 license = [ pkgs.lib.licenses.zpl21 ];
942 };
942 };
943 };
943 };
944
944
945 ### Test requirements
945 ### Test requirements
946
946
947
947
948 }
948 }
@@ -1,43 +1,43 b''
1 ## dependencies
1 ## dependencies
2
2
3 # our custom configobj
3 # our custom configobj
4 https://code.rhodecode.com/upstream/configobj/archive/a11ff0a0bd4fbda9e3a91267e720f88329efb4a6.tar.gz?md5=9916c524ea11a6c418217af6b28d4b3c#egg=configobj==5.0.6
4 https://code.rhodecode.com/upstream/configobj/archive/a11ff0a0bd4fbda9e3a91267e720f88329efb4a6.tar.gz?md5=9916c524ea11a6c418217af6b28d4b3c#egg=configobj==5.0.6
5
5
6 dogpile.cache==0.7.1
6 dogpile.cache==0.7.1
7 dogpile.core==0.4.1
7 dogpile.core==0.4.1
8 decorator==4.1.2
8 decorator==4.1.2
9 dulwich==0.13.0
9 dulwich==0.13.0
10 hgsubversion==1.9.3
10 hgsubversion==1.9.3
11 hg-evolve==8.0.1
11 hg-evolve==8.0.1
12 mako==1.0.7
12 mako==1.0.7
13 markupsafe==1.1.0
13 markupsafe==1.1.0
14 mercurial==4.6.2
14 mercurial==4.9.0
15 msgpack-python==0.5.6
15 msgpack-python==0.5.6
16
16
17 pastedeploy==2.0.1
17 pastedeploy==2.0.1
18 pyramid==1.10.1
18 pyramid==1.10.1
19 pyramid-mako==1.0.2
19 pyramid-mako==1.0.2
20
20
21 repoze.lru==0.7
21 repoze.lru==0.7
22 simplejson==3.16.0
22 simplejson==3.16.0
23 subprocess32==3.5.3
23 subprocess32==3.5.3
24 subvertpy==0.10.1
24 subvertpy==0.10.1
25
25
26 six==1.11.0
26 six==1.11.0
27 translationstring==1.3
27 translationstring==1.3
28 webob==1.8.4
28 webob==1.8.4
29 zope.deprecation==4.4.0
29 zope.deprecation==4.4.0
30 zope.interface==4.6.0
30 zope.interface==4.6.0
31
31
32 ## http servers
32 ## http servers
33 gevent==1.4.0
33 gevent==1.4.0
34 greenlet==0.4.15
34 greenlet==0.4.15
35 gunicorn==19.9.0
35 gunicorn==19.9.0
36 waitress==1.1.0
36 waitress==1.1.0
37
37
38 ## debug
38 ## debug
39 ipdb==0.11.0
39 ipdb==0.11.0
40 ipython==5.1.0
40 ipython==5.1.0
41
41
42 ## test related requirements
42 ## test related requirements
43 -r requirements_test.txt
43 -r requirements_test.txt
@@ -1,803 +1,803 b''
1 # RhodeCode VCSServer provides access to different vcs backends via network.
1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2019 RhodeCode GmbH
2 # Copyright (C) 2014-2019 RhodeCode GmbH
3 #
3 #
4 # This program is free software; you can redistribute it and/or modify
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 3 of the License, or
6 # the Free Software Foundation; either version 3 of the License, or
7 # (at your option) any later version.
7 # (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software Foundation,
15 # along with this program; if not, write to the Free Software Foundation,
16 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
17
18 import io
18 import io
19 import logging
19 import logging
20 import stat
20 import stat
21 import urllib
21 import urllib
22 import urllib2
22 import urllib2
23
23
24 from hgext import largefiles, rebase
24 from hgext import largefiles, rebase
25 from hgext.strip import strip as hgext_strip
25 from hgext.strip import strip as hgext_strip
26 from mercurial import commands
26 from mercurial import commands
27 from mercurial import unionrepo
27 from mercurial import unionrepo
28 from mercurial import verify
28 from mercurial import verify
29
29
30 import vcsserver
30 import vcsserver
31 from vcsserver import exceptions
31 from vcsserver import exceptions
32 from vcsserver.base import RepoFactory, obfuscate_qs, raise_from_original
32 from vcsserver.base import RepoFactory, obfuscate_qs, raise_from_original
33 from vcsserver.hgcompat import (
33 from vcsserver.hgcompat import (
34 archival, bin, clone, config as hgconfig, diffopts, hex,
34 archival, bin, clone, config as hgconfig, diffopts, hex,
35 hg_url as url_parser, httpbasicauthhandler, httpdigestauthhandler,
35 hg_url as url_parser, httpbasicauthhandler, httpdigestauthhandler,
36 makepeer, localrepository, match, memctx, exchange, memfilectx, nullrev,
36 makepeer, instance, match, memctx, exchange, memfilectx, nullrev,
37 patch, peer, revrange, ui, hg_tag, Abort, LookupError, RepoError,
37 patch, peer, revrange, ui, hg_tag, Abort, LookupError, RepoError,
38 RepoLookupError, InterventionRequired, RequirementError)
38 RepoLookupError, InterventionRequired, RequirementError)
39
39
40 log = logging.getLogger(__name__)
40 log = logging.getLogger(__name__)
41
41
42
42
43 def make_ui_from_config(repo_config):
43 def make_ui_from_config(repo_config):
44 baseui = ui.ui()
44 baseui = ui.ui()
45
45
46 # clean the baseui object
46 # clean the baseui object
47 baseui._ocfg = hgconfig.config()
47 baseui._ocfg = hgconfig.config()
48 baseui._ucfg = hgconfig.config()
48 baseui._ucfg = hgconfig.config()
49 baseui._tcfg = hgconfig.config()
49 baseui._tcfg = hgconfig.config()
50
50
51 for section, option, value in repo_config:
51 for section, option, value in repo_config:
52 baseui.setconfig(section, option, value)
52 baseui.setconfig(section, option, value)
53
53
54 # make our hgweb quiet so it doesn't print output
54 # make our hgweb quiet so it doesn't print output
55 baseui.setconfig('ui', 'quiet', 'true')
55 baseui.setconfig('ui', 'quiet', 'true')
56
56
57 baseui.setconfig('ui', 'paginate', 'never')
57 baseui.setconfig('ui', 'paginate', 'never')
58 # force mercurial to only use 1 thread, otherwise it may try to set a
58 # force mercurial to only use 1 thread, otherwise it may try to set a
59 # signal in a non-main thread, thus generating a ValueError.
59 # signal in a non-main thread, thus generating a ValueError.
60 baseui.setconfig('worker', 'numcpus', 1)
60 baseui.setconfig('worker', 'numcpus', 1)
61
61
62 # If there is no config for the largefiles extension, we explicitly disable
62 # If there is no config for the largefiles extension, we explicitly disable
63 # it here. This overrides settings from repositories hgrc file. Recent
63 # it here. This overrides settings from repositories hgrc file. Recent
64 # mercurial versions enable largefiles in hgrc on clone from largefile
64 # mercurial versions enable largefiles in hgrc on clone from largefile
65 # repo.
65 # repo.
66 if not baseui.hasconfig('extensions', 'largefiles'):
66 if not baseui.hasconfig('extensions', 'largefiles'):
67 log.debug('Explicitly disable largefiles extension for repo.')
67 log.debug('Explicitly disable largefiles extension for repo.')
68 baseui.setconfig('extensions', 'largefiles', '!')
68 baseui.setconfig('extensions', 'largefiles', '!')
69
69
70 return baseui
70 return baseui
71
71
72
72
73 def reraise_safe_exceptions(func):
73 def reraise_safe_exceptions(func):
74 """Decorator for converting mercurial exceptions to something neutral."""
74 """Decorator for converting mercurial exceptions to something neutral."""
75 def wrapper(*args, **kwargs):
75 def wrapper(*args, **kwargs):
76 try:
76 try:
77 return func(*args, **kwargs)
77 return func(*args, **kwargs)
78 except (Abort, InterventionRequired) as e:
78 except (Abort, InterventionRequired) as e:
79 raise_from_original(exceptions.AbortException(e))
79 raise_from_original(exceptions.AbortException(e))
80 except RepoLookupError as e:
80 except RepoLookupError as e:
81 raise_from_original(exceptions.LookupException(e))
81 raise_from_original(exceptions.LookupException(e))
82 except RequirementError as e:
82 except RequirementError as e:
83 raise_from_original(exceptions.RequirementException(e))
83 raise_from_original(exceptions.RequirementException(e))
84 except RepoError as e:
84 except RepoError as e:
85 raise_from_original(exceptions.VcsException(e))
85 raise_from_original(exceptions.VcsException(e))
86 except LookupError as e:
86 except LookupError as e:
87 raise_from_original(exceptions.LookupException(e))
87 raise_from_original(exceptions.LookupException(e))
88 except Exception as e:
88 except Exception as e:
89 if not hasattr(e, '_vcs_kind'):
89 if not hasattr(e, '_vcs_kind'):
90 log.exception("Unhandled exception in hg remote call")
90 log.exception("Unhandled exception in hg remote call")
91 raise_from_original(exceptions.UnhandledException(e))
91 raise_from_original(exceptions.UnhandledException(e))
92
92
93 raise
93 raise
94 return wrapper
94 return wrapper
95
95
96
96
97 class MercurialFactory(RepoFactory):
97 class MercurialFactory(RepoFactory):
98 repo_type = 'hg'
98 repo_type = 'hg'
99
99
100 def _create_config(self, config, hooks=True):
100 def _create_config(self, config, hooks=True):
101 if not hooks:
101 if not hooks:
102 hooks_to_clean = frozenset((
102 hooks_to_clean = frozenset((
103 'changegroup.repo_size', 'preoutgoing.pre_pull',
103 'changegroup.repo_size', 'preoutgoing.pre_pull',
104 'outgoing.pull_logger', 'prechangegroup.pre_push'))
104 'outgoing.pull_logger', 'prechangegroup.pre_push'))
105 new_config = []
105 new_config = []
106 for section, option, value in config:
106 for section, option, value in config:
107 if section == 'hooks' and option in hooks_to_clean:
107 if section == 'hooks' and option in hooks_to_clean:
108 continue
108 continue
109 new_config.append((section, option, value))
109 new_config.append((section, option, value))
110 config = new_config
110 config = new_config
111
111
112 baseui = make_ui_from_config(config)
112 baseui = make_ui_from_config(config)
113 return baseui
113 return baseui
114
114
115 def _create_repo(self, wire, create):
115 def _create_repo(self, wire, create):
116 baseui = self._create_config(wire["config"])
116 baseui = self._create_config(wire["config"])
117 return localrepository(baseui, wire["path"], create)
117 return instance(baseui, wire["path"], create)
118
118
119
119
120 class HgRemote(object):
120 class HgRemote(object):
121
121
122 def __init__(self, factory):
122 def __init__(self, factory):
123 self._factory = factory
123 self._factory = factory
124
124
125 self._bulk_methods = {
125 self._bulk_methods = {
126 "affected_files": self.ctx_files,
126 "affected_files": self.ctx_files,
127 "author": self.ctx_user,
127 "author": self.ctx_user,
128 "branch": self.ctx_branch,
128 "branch": self.ctx_branch,
129 "children": self.ctx_children,
129 "children": self.ctx_children,
130 "date": self.ctx_date,
130 "date": self.ctx_date,
131 "message": self.ctx_description,
131 "message": self.ctx_description,
132 "parents": self.ctx_parents,
132 "parents": self.ctx_parents,
133 "status": self.ctx_status,
133 "status": self.ctx_status,
134 "obsolete": self.ctx_obsolete,
134 "obsolete": self.ctx_obsolete,
135 "phase": self.ctx_phase,
135 "phase": self.ctx_phase,
136 "hidden": self.ctx_hidden,
136 "hidden": self.ctx_hidden,
137 "_file_paths": self.ctx_list,
137 "_file_paths": self.ctx_list,
138 }
138 }
139
139
140 @reraise_safe_exceptions
140 @reraise_safe_exceptions
141 def discover_hg_version(self):
141 def discover_hg_version(self):
142 from mercurial import util
142 from mercurial import util
143 return util.version()
143 return util.version()
144
144
145 @reraise_safe_exceptions
145 @reraise_safe_exceptions
146 def archive_repo(self, archive_path, mtime, file_info, kind):
146 def archive_repo(self, archive_path, mtime, file_info, kind):
147 if kind == "tgz":
147 if kind == "tgz":
148 archiver = archival.tarit(archive_path, mtime, "gz")
148 archiver = archival.tarit(archive_path, mtime, "gz")
149 elif kind == "tbz2":
149 elif kind == "tbz2":
150 archiver = archival.tarit(archive_path, mtime, "bz2")
150 archiver = archival.tarit(archive_path, mtime, "bz2")
151 elif kind == 'zip':
151 elif kind == 'zip':
152 archiver = archival.zipit(archive_path, mtime)
152 archiver = archival.zipit(archive_path, mtime)
153 else:
153 else:
154 raise exceptions.ArchiveException()(
154 raise exceptions.ArchiveException()(
155 'Remote does not support: "%s".' % kind)
155 'Remote does not support: "%s".' % kind)
156
156
157 for f_path, f_mode, f_is_link, f_content in file_info:
157 for f_path, f_mode, f_is_link, f_content in file_info:
158 archiver.addfile(f_path, f_mode, f_is_link, f_content)
158 archiver.addfile(f_path, f_mode, f_is_link, f_content)
159 archiver.done()
159 archiver.done()
160
160
161 @reraise_safe_exceptions
161 @reraise_safe_exceptions
162 def bookmarks(self, wire):
162 def bookmarks(self, wire):
163 repo = self._factory.repo(wire)
163 repo = self._factory.repo(wire)
164 return dict(repo._bookmarks)
164 return dict(repo._bookmarks)
165
165
166 @reraise_safe_exceptions
166 @reraise_safe_exceptions
167 def branches(self, wire, normal, closed):
167 def branches(self, wire, normal, closed):
168 repo = self._factory.repo(wire)
168 repo = self._factory.repo(wire)
169 iter_branches = repo.branchmap().iterbranches()
169 iter_branches = repo.branchmap().iterbranches()
170 bt = {}
170 bt = {}
171 for branch_name, _heads, tip, is_closed in iter_branches:
171 for branch_name, _heads, tip, is_closed in iter_branches:
172 if normal and not is_closed:
172 if normal and not is_closed:
173 bt[branch_name] = tip
173 bt[branch_name] = tip
174 if closed and is_closed:
174 if closed and is_closed:
175 bt[branch_name] = tip
175 bt[branch_name] = tip
176
176
177 return bt
177 return bt
178
178
179 @reraise_safe_exceptions
179 @reraise_safe_exceptions
180 def bulk_request(self, wire, rev, pre_load):
180 def bulk_request(self, wire, rev, pre_load):
181 result = {}
181 result = {}
182 for attr in pre_load:
182 for attr in pre_load:
183 try:
183 try:
184 method = self._bulk_methods[attr]
184 method = self._bulk_methods[attr]
185 result[attr] = method(wire, rev)
185 result[attr] = method(wire, rev)
186 except KeyError as e:
186 except KeyError as e:
187 raise exceptions.VcsException(e)(
187 raise exceptions.VcsException(e)(
188 'Unknown bulk attribute: "%s"' % attr)
188 'Unknown bulk attribute: "%s"' % attr)
189 return result
189 return result
190
190
191 @reraise_safe_exceptions
191 @reraise_safe_exceptions
192 def clone(self, wire, source, dest, update_after_clone=False, hooks=True):
192 def clone(self, wire, source, dest, update_after_clone=False, hooks=True):
193 baseui = self._factory._create_config(wire["config"], hooks=hooks)
193 baseui = self._factory._create_config(wire["config"], hooks=hooks)
194 clone(baseui, source, dest, noupdate=not update_after_clone)
194 clone(baseui, source, dest, noupdate=not update_after_clone)
195
195
196 @reraise_safe_exceptions
196 @reraise_safe_exceptions
197 def commitctx(
197 def commitctx(
198 self, wire, message, parents, commit_time, commit_timezone,
198 self, wire, message, parents, commit_time, commit_timezone,
199 user, files, extra, removed, updated):
199 user, files, extra, removed, updated):
200
200
201 def _filectxfn(_repo, memctx, path):
201 def _filectxfn(_repo, memctx, path):
202 """
202 """
203 Marks given path as added/changed/removed in a given _repo. This is
203 Marks given path as added/changed/removed in a given _repo. This is
204 for internal mercurial commit function.
204 for internal mercurial commit function.
205 """
205 """
206
206
207 # check if this path is removed
207 # check if this path is removed
208 if path in removed:
208 if path in removed:
209 # returning None is a way to mark node for removal
209 # returning None is a way to mark node for removal
210 return None
210 return None
211
211
212 # check if this path is added
212 # check if this path is added
213 for node in updated:
213 for node in updated:
214 if node['path'] == path:
214 if node['path'] == path:
215 return memfilectx(
215 return memfilectx(
216 _repo,
216 _repo,
217 changectx=memctx,
217 changectx=memctx,
218 path=node['path'],
218 path=node['path'],
219 data=node['content'],
219 data=node['content'],
220 islink=False,
220 islink=False,
221 isexec=bool(node['mode'] & stat.S_IXUSR),
221 isexec=bool(node['mode'] & stat.S_IXUSR),
222 copied=False)
222 copied=False)
223
223
224 raise exceptions.AbortException()(
224 raise exceptions.AbortException()(
225 "Given path haven't been marked as added, "
225 "Given path haven't been marked as added, "
226 "changed or removed (%s)" % path)
226 "changed or removed (%s)" % path)
227
227
228 repo = self._factory.repo(wire)
228 repo = self._factory.repo(wire)
229
229
230 commit_ctx = memctx(
230 commit_ctx = memctx(
231 repo=repo,
231 repo=repo,
232 parents=parents,
232 parents=parents,
233 text=message,
233 text=message,
234 files=files,
234 files=files,
235 filectxfn=_filectxfn,
235 filectxfn=_filectxfn,
236 user=user,
236 user=user,
237 date=(commit_time, commit_timezone),
237 date=(commit_time, commit_timezone),
238 extra=extra)
238 extra=extra)
239
239
240 n = repo.commitctx(commit_ctx)
240 n = repo.commitctx(commit_ctx)
241 new_id = hex(n)
241 new_id = hex(n)
242
242
243 return new_id
243 return new_id
244
244
245 @reraise_safe_exceptions
245 @reraise_safe_exceptions
246 def ctx_branch(self, wire, revision):
246 def ctx_branch(self, wire, revision):
247 repo = self._factory.repo(wire)
247 repo = self._factory.repo(wire)
248 ctx = repo[revision]
248 ctx = repo[revision]
249 return ctx.branch()
249 return ctx.branch()
250
250
251 @reraise_safe_exceptions
251 @reraise_safe_exceptions
252 def ctx_children(self, wire, revision):
252 def ctx_children(self, wire, revision):
253 repo = self._factory.repo(wire)
253 repo = self._factory.repo(wire)
254 ctx = repo[revision]
254 ctx = repo[revision]
255 return [child.rev() for child in ctx.children()]
255 return [child.rev() for child in ctx.children()]
256
256
257 @reraise_safe_exceptions
257 @reraise_safe_exceptions
258 def ctx_date(self, wire, revision):
258 def ctx_date(self, wire, revision):
259 repo = self._factory.repo(wire)
259 repo = self._factory.repo(wire)
260 ctx = repo[revision]
260 ctx = repo[revision]
261 return ctx.date()
261 return ctx.date()
262
262
263 @reraise_safe_exceptions
263 @reraise_safe_exceptions
264 def ctx_description(self, wire, revision):
264 def ctx_description(self, wire, revision):
265 repo = self._factory.repo(wire)
265 repo = self._factory.repo(wire)
266 ctx = repo[revision]
266 ctx = repo[revision]
267 return ctx.description()
267 return ctx.description()
268
268
269 @reraise_safe_exceptions
269 # @reraise_safe_exceptions
270 def ctx_diff(
270 # def ctx_diff(
271 self, wire, revision, git=True, ignore_whitespace=True, context=3):
271 # self, wire, revision, git=True, ignore_whitespace=True, context=3):
272 repo = self._factory.repo(wire)
272 # repo = self._factory.repo(wire)
273 ctx = repo[revision]
273 # ctx = repo[revision]
274 result = ctx.diff(
274 # result = ctx.diff(
275 git=git, ignore_whitespace=ignore_whitespace, context=context)
275 # git=git, ignore_whitespace=ignore_whitespace, context=context)
276 return list(result)
276 # return list(result)
277
277
278 @reraise_safe_exceptions
278 @reraise_safe_exceptions
279 def ctx_files(self, wire, revision):
279 def ctx_files(self, wire, revision):
280 repo = self._factory.repo(wire)
280 repo = self._factory.repo(wire)
281 ctx = repo[revision]
281 ctx = repo[revision]
282 return ctx.files()
282 return ctx.files()
283
283
284 @reraise_safe_exceptions
284 @reraise_safe_exceptions
285 def ctx_list(self, path, revision):
285 def ctx_list(self, path, revision):
286 repo = self._factory.repo(path)
286 repo = self._factory.repo(path)
287 ctx = repo[revision]
287 ctx = repo[revision]
288 return list(ctx)
288 return list(ctx)
289
289
290 @reraise_safe_exceptions
290 @reraise_safe_exceptions
291 def ctx_parents(self, wire, revision):
291 def ctx_parents(self, wire, revision):
292 repo = self._factory.repo(wire)
292 repo = self._factory.repo(wire)
293 ctx = repo[revision]
293 ctx = repo[revision]
294 return [parent.rev() for parent in ctx.parents()]
294 return [parent.rev() for parent in ctx.parents()]
295
295
296 @reraise_safe_exceptions
296 @reraise_safe_exceptions
297 def ctx_phase(self, wire, revision):
297 def ctx_phase(self, wire, revision):
298 repo = self._factory.repo(wire)
298 repo = self._factory.repo(wire)
299 ctx = repo[revision]
299 ctx = repo[revision]
300 # public=0, draft=1, secret=3
300 # public=0, draft=1, secret=3
301 return ctx.phase()
301 return ctx.phase()
302
302
303 @reraise_safe_exceptions
303 @reraise_safe_exceptions
304 def ctx_obsolete(self, wire, revision):
304 def ctx_obsolete(self, wire, revision):
305 repo = self._factory.repo(wire)
305 repo = self._factory.repo(wire)
306 ctx = repo[revision]
306 ctx = repo[revision]
307 return ctx.obsolete()
307 return ctx.obsolete()
308
308
309 @reraise_safe_exceptions
309 @reraise_safe_exceptions
310 def ctx_hidden(self, wire, revision):
310 def ctx_hidden(self, wire, revision):
311 repo = self._factory.repo(wire)
311 repo = self._factory.repo(wire)
312 ctx = repo[revision]
312 ctx = repo[revision]
313 return ctx.hidden()
313 return ctx.hidden()
314
314
315 @reraise_safe_exceptions
315 @reraise_safe_exceptions
316 def ctx_substate(self, wire, revision):
316 def ctx_substate(self, wire, revision):
317 repo = self._factory.repo(wire)
317 repo = self._factory.repo(wire)
318 ctx = repo[revision]
318 ctx = repo[revision]
319 return ctx.substate
319 return ctx.substate
320
320
321 @reraise_safe_exceptions
321 @reraise_safe_exceptions
322 def ctx_status(self, wire, revision):
322 def ctx_status(self, wire, revision):
323 repo = self._factory.repo(wire)
323 repo = self._factory.repo(wire)
324 ctx = repo[revision]
324 ctx = repo[revision]
325 status = repo[ctx.p1().node()].status(other=ctx.node())
325 status = repo[ctx.p1().node()].status(other=ctx.node())
326 # object of status (odd, custom named tuple in mercurial) is not
326 # object of status (odd, custom named tuple in mercurial) is not
327 # correctly serializable, we make it a list, as the underling
327 # correctly serializable, we make it a list, as the underling
328 # API expects this to be a list
328 # API expects this to be a list
329 return list(status)
329 return list(status)
330
330
331 @reraise_safe_exceptions
331 @reraise_safe_exceptions
332 def ctx_user(self, wire, revision):
332 def ctx_user(self, wire, revision):
333 repo = self._factory.repo(wire)
333 repo = self._factory.repo(wire)
334 ctx = repo[revision]
334 ctx = repo[revision]
335 return ctx.user()
335 return ctx.user()
336
336
337 @reraise_safe_exceptions
337 @reraise_safe_exceptions
338 def check_url(self, url, config):
338 def check_url(self, url, config):
339 _proto = None
339 _proto = None
340 if '+' in url[:url.find('://')]:
340 if '+' in url[:url.find('://')]:
341 _proto = url[0:url.find('+')]
341 _proto = url[0:url.find('+')]
342 url = url[url.find('+') + 1:]
342 url = url[url.find('+') + 1:]
343 handlers = []
343 handlers = []
344 url_obj = url_parser(url)
344 url_obj = url_parser(url)
345 test_uri, authinfo = url_obj.authinfo()
345 test_uri, authinfo = url_obj.authinfo()
346 url_obj.passwd = '*****' if url_obj.passwd else url_obj.passwd
346 url_obj.passwd = '*****' if url_obj.passwd else url_obj.passwd
347 url_obj.query = obfuscate_qs(url_obj.query)
347 url_obj.query = obfuscate_qs(url_obj.query)
348
348
349 cleaned_uri = str(url_obj)
349 cleaned_uri = str(url_obj)
350 log.info("Checking URL for remote cloning/import: %s", cleaned_uri)
350 log.info("Checking URL for remote cloning/import: %s", cleaned_uri)
351
351
352 if authinfo:
352 if authinfo:
353 # create a password manager
353 # create a password manager
354 passmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
354 passmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
355 passmgr.add_password(*authinfo)
355 passmgr.add_password(*authinfo)
356
356
357 handlers.extend((httpbasicauthhandler(passmgr),
357 handlers.extend((httpbasicauthhandler(passmgr),
358 httpdigestauthhandler(passmgr)))
358 httpdigestauthhandler(passmgr)))
359
359
360 o = urllib2.build_opener(*handlers)
360 o = urllib2.build_opener(*handlers)
361 o.addheaders = [('Content-Type', 'application/mercurial-0.1'),
361 o.addheaders = [('Content-Type', 'application/mercurial-0.1'),
362 ('Accept', 'application/mercurial-0.1')]
362 ('Accept', 'application/mercurial-0.1')]
363
363
364 q = {"cmd": 'between'}
364 q = {"cmd": 'between'}
365 q.update({'pairs': "%s-%s" % ('0' * 40, '0' * 40)})
365 q.update({'pairs': "%s-%s" % ('0' * 40, '0' * 40)})
366 qs = '?%s' % urllib.urlencode(q)
366 qs = '?%s' % urllib.urlencode(q)
367 cu = "%s%s" % (test_uri, qs)
367 cu = "%s%s" % (test_uri, qs)
368 req = urllib2.Request(cu, None, {})
368 req = urllib2.Request(cu, None, {})
369
369
370 try:
370 try:
371 log.debug("Trying to open URL %s", cleaned_uri)
371 log.debug("Trying to open URL %s", cleaned_uri)
372 resp = o.open(req)
372 resp = o.open(req)
373 if resp.code != 200:
373 if resp.code != 200:
374 raise exceptions.URLError()('Return Code is not 200')
374 raise exceptions.URLError()('Return Code is not 200')
375 except Exception as e:
375 except Exception as e:
376 log.warning("URL cannot be opened: %s", cleaned_uri, exc_info=True)
376 log.warning("URL cannot be opened: %s", cleaned_uri, exc_info=True)
377 # means it cannot be cloned
377 # means it cannot be cloned
378 raise exceptions.URLError(e)("[%s] org_exc: %s" % (cleaned_uri, e))
378 raise exceptions.URLError(e)("[%s] org_exc: %s" % (cleaned_uri, e))
379
379
380 # now check if it's a proper hg repo, but don't do it for svn
380 # now check if it's a proper hg repo, but don't do it for svn
381 try:
381 try:
382 if _proto == 'svn':
382 if _proto == 'svn':
383 pass
383 pass
384 else:
384 else:
385 # check for pure hg repos
385 # check for pure hg repos
386 log.debug(
386 log.debug(
387 "Verifying if URL is a Mercurial repository: %s",
387 "Verifying if URL is a Mercurial repository: %s",
388 cleaned_uri)
388 cleaned_uri)
389 ui = make_ui_from_config(config)
389 ui = make_ui_from_config(config)
390 peer_checker = makepeer(ui, url)
390 peer_checker = makepeer(ui, url)
391 peer_checker.lookup('tip')
391 peer_checker.lookup('tip')
392 except Exception as e:
392 except Exception as e:
393 log.warning("URL is not a valid Mercurial repository: %s",
393 log.warning("URL is not a valid Mercurial repository: %s",
394 cleaned_uri)
394 cleaned_uri)
395 raise exceptions.URLError(e)(
395 raise exceptions.URLError(e)(
396 "url [%s] does not look like an hg repo org_exc: %s"
396 "url [%s] does not look like an hg repo org_exc: %s"
397 % (cleaned_uri, e))
397 % (cleaned_uri, e))
398
398
399 log.info("URL is a valid Mercurial repository: %s", cleaned_uri)
399 log.info("URL is a valid Mercurial repository: %s", cleaned_uri)
400 return True
400 return True
401
401
402 @reraise_safe_exceptions
402 @reraise_safe_exceptions
403 def diff(
403 def diff(
404 self, wire, rev1, rev2, file_filter, opt_git, opt_ignorews,
404 self, wire, rev1, rev2, file_filter, opt_git, opt_ignorews,
405 context):
405 context):
406 repo = self._factory.repo(wire)
406 repo = self._factory.repo(wire)
407
407
408 if file_filter:
408 if file_filter:
409 match_filter = match(file_filter[0], '', [file_filter[1]])
409 match_filter = match(file_filter[0], '', [file_filter[1]])
410 else:
410 else:
411 match_filter = file_filter
411 match_filter = file_filter
412 opts = diffopts(git=opt_git, ignorews=opt_ignorews, context=context)
412 opts = diffopts(git=opt_git, ignorews=opt_ignorews, context=context)
413
413
414 try:
414 try:
415 return "".join(patch.diff(
415 return "".join(patch.diff(
416 repo, node1=rev1, node2=rev2, match=match_filter, opts=opts))
416 repo, node1=rev1, node2=rev2, match=match_filter, opts=opts))
417 except RepoLookupError as e:
417 except RepoLookupError as e:
418 raise exceptions.LookupException(e)()
418 raise exceptions.LookupException(e)()
419
419
420 @reraise_safe_exceptions
420 @reraise_safe_exceptions
421 def node_history(self, wire, revision, path, limit):
421 def node_history(self, wire, revision, path, limit):
422 repo = self._factory.repo(wire)
422 repo = self._factory.repo(wire)
423
423
424 ctx = repo[revision]
424 ctx = repo[revision]
425 fctx = ctx.filectx(path)
425 fctx = ctx.filectx(path)
426
426
427 def history_iter():
427 def history_iter():
428 limit_rev = fctx.rev()
428 limit_rev = fctx.rev()
429 for obj in reversed(list(fctx.filelog())):
429 for obj in reversed(list(fctx.filelog())):
430 obj = fctx.filectx(obj)
430 obj = fctx.filectx(obj)
431 if limit_rev >= obj.rev():
431 if limit_rev >= obj.rev():
432 yield obj
432 yield obj
433
433
434 history = []
434 history = []
435 for cnt, obj in enumerate(history_iter()):
435 for cnt, obj in enumerate(history_iter()):
436 if limit and cnt >= limit:
436 if limit and cnt >= limit:
437 break
437 break
438 history.append(hex(obj.node()))
438 history.append(hex(obj.node()))
439
439
440 return [x for x in history]
440 return [x for x in history]
441
441
442 @reraise_safe_exceptions
442 @reraise_safe_exceptions
443 def node_history_untill(self, wire, revision, path, limit):
443 def node_history_untill(self, wire, revision, path, limit):
444 repo = self._factory.repo(wire)
444 repo = self._factory.repo(wire)
445 ctx = repo[revision]
445 ctx = repo[revision]
446 fctx = ctx.filectx(path)
446 fctx = ctx.filectx(path)
447
447
448 file_log = list(fctx.filelog())
448 file_log = list(fctx.filelog())
449 if limit:
449 if limit:
450 # Limit to the last n items
450 # Limit to the last n items
451 file_log = file_log[-limit:]
451 file_log = file_log[-limit:]
452
452
453 return [hex(fctx.filectx(cs).node()) for cs in reversed(file_log)]
453 return [hex(fctx.filectx(cs).node()) for cs in reversed(file_log)]
454
454
455 @reraise_safe_exceptions
455 @reraise_safe_exceptions
456 def fctx_annotate(self, wire, revision, path):
456 def fctx_annotate(self, wire, revision, path):
457 repo = self._factory.repo(wire)
457 repo = self._factory.repo(wire)
458 ctx = repo[revision]
458 ctx = repo[revision]
459 fctx = ctx.filectx(path)
459 fctx = ctx.filectx(path)
460
460
461 result = []
461 result = []
462 for i, annotate_obj in enumerate(fctx.annotate(), 1):
462 for i, annotate_obj in enumerate(fctx.annotate(), 1):
463 ln_no = i
463 ln_no = i
464 sha = hex(annotate_obj.fctx.node())
464 sha = hex(annotate_obj.fctx.node())
465 content = annotate_obj.text
465 content = annotate_obj.text
466 result.append((ln_no, sha, content))
466 result.append((ln_no, sha, content))
467 return result
467 return result
468
468
469 @reraise_safe_exceptions
469 @reraise_safe_exceptions
470 def fctx_data(self, wire, revision, path):
470 def fctx_data(self, wire, revision, path):
471 repo = self._factory.repo(wire)
471 repo = self._factory.repo(wire)
472 ctx = repo[revision]
472 ctx = repo[revision]
473 fctx = ctx.filectx(path)
473 fctx = ctx.filectx(path)
474 return fctx.data()
474 return fctx.data()
475
475
476 @reraise_safe_exceptions
476 @reraise_safe_exceptions
477 def fctx_flags(self, wire, revision, path):
477 def fctx_flags(self, wire, revision, path):
478 repo = self._factory.repo(wire)
478 repo = self._factory.repo(wire)
479 ctx = repo[revision]
479 ctx = repo[revision]
480 fctx = ctx.filectx(path)
480 fctx = ctx.filectx(path)
481 return fctx.flags()
481 return fctx.flags()
482
482
483 @reraise_safe_exceptions
483 @reraise_safe_exceptions
484 def fctx_size(self, wire, revision, path):
484 def fctx_size(self, wire, revision, path):
485 repo = self._factory.repo(wire)
485 repo = self._factory.repo(wire)
486 ctx = repo[revision]
486 ctx = repo[revision]
487 fctx = ctx.filectx(path)
487 fctx = ctx.filectx(path)
488 return fctx.size()
488 return fctx.size()
489
489
490 @reraise_safe_exceptions
490 @reraise_safe_exceptions
491 def get_all_commit_ids(self, wire, name):
491 def get_all_commit_ids(self, wire, name):
492 repo = self._factory.repo(wire)
492 repo = self._factory.repo(wire)
493 revs = repo.filtered(name).changelog.index
493 revs = repo.filtered(name).changelog.index
494 return map(lambda x: hex(x[7]), revs)[:-1]
494 return map(lambda x: hex(x[7]), revs)[:-1]
495
495
496 @reraise_safe_exceptions
496 @reraise_safe_exceptions
497 def get_config_value(self, wire, section, name, untrusted=False):
497 def get_config_value(self, wire, section, name, untrusted=False):
498 repo = self._factory.repo(wire)
498 repo = self._factory.repo(wire)
499 return repo.ui.config(section, name, untrusted=untrusted)
499 return repo.ui.config(section, name, untrusted=untrusted)
500
500
501 @reraise_safe_exceptions
501 @reraise_safe_exceptions
502 def get_config_bool(self, wire, section, name, untrusted=False):
502 def get_config_bool(self, wire, section, name, untrusted=False):
503 repo = self._factory.repo(wire)
503 repo = self._factory.repo(wire)
504 return repo.ui.configbool(section, name, untrusted=untrusted)
504 return repo.ui.configbool(section, name, untrusted=untrusted)
505
505
506 @reraise_safe_exceptions
506 @reraise_safe_exceptions
507 def get_config_list(self, wire, section, name, untrusted=False):
507 def get_config_list(self, wire, section, name, untrusted=False):
508 repo = self._factory.repo(wire)
508 repo = self._factory.repo(wire)
509 return repo.ui.configlist(section, name, untrusted=untrusted)
509 return repo.ui.configlist(section, name, untrusted=untrusted)
510
510
511 @reraise_safe_exceptions
511 @reraise_safe_exceptions
512 def is_large_file(self, wire, path):
512 def is_large_file(self, wire, path):
513 return largefiles.lfutil.isstandin(path)
513 return largefiles.lfutil.isstandin(path)
514
514
515 @reraise_safe_exceptions
515 @reraise_safe_exceptions
516 def in_largefiles_store(self, wire, sha):
516 def in_largefiles_store(self, wire, sha):
517 repo = self._factory.repo(wire)
517 repo = self._factory.repo(wire)
518 return largefiles.lfutil.instore(repo, sha)
518 return largefiles.lfutil.instore(repo, sha)
519
519
520 @reraise_safe_exceptions
520 @reraise_safe_exceptions
521 def in_user_cache(self, wire, sha):
521 def in_user_cache(self, wire, sha):
522 repo = self._factory.repo(wire)
522 repo = self._factory.repo(wire)
523 return largefiles.lfutil.inusercache(repo.ui, sha)
523 return largefiles.lfutil.inusercache(repo.ui, sha)
524
524
525 @reraise_safe_exceptions
525 @reraise_safe_exceptions
526 def store_path(self, wire, sha):
526 def store_path(self, wire, sha):
527 repo = self._factory.repo(wire)
527 repo = self._factory.repo(wire)
528 return largefiles.lfutil.storepath(repo, sha)
528 return largefiles.lfutil.storepath(repo, sha)
529
529
530 @reraise_safe_exceptions
530 @reraise_safe_exceptions
531 def link(self, wire, sha, path):
531 def link(self, wire, sha, path):
532 repo = self._factory.repo(wire)
532 repo = self._factory.repo(wire)
533 largefiles.lfutil.link(
533 largefiles.lfutil.link(
534 largefiles.lfutil.usercachepath(repo.ui, sha), path)
534 largefiles.lfutil.usercachepath(repo.ui, sha), path)
535
535
536 @reraise_safe_exceptions
536 @reraise_safe_exceptions
537 def localrepository(self, wire, create=False):
537 def localrepository(self, wire, create=False):
538 self._factory.repo(wire, create=create)
538 self._factory.repo(wire, create=create)
539
539
540 @reraise_safe_exceptions
540 @reraise_safe_exceptions
541 def lookup(self, wire, revision, both):
541 def lookup(self, wire, revision, both):
542
542
543 repo = self._factory.repo(wire)
543 repo = self._factory.repo(wire)
544
544
545 if isinstance(revision, int):
545 if isinstance(revision, int):
546 # NOTE(marcink):
546 # NOTE(marcink):
547 # since Mercurial doesn't support indexes properly
547 # since Mercurial doesn't support indexes properly
548 # we need to shift accordingly by one to get proper index, e.g
548 # we need to shift accordingly by one to get proper index, e.g
549 # repo[-1] => repo[-2]
549 # repo[-1] => repo[-2]
550 # repo[0] => repo[-1]
550 # repo[0] => repo[-1]
551 # repo[1] => repo[2] we also never call repo[0] because
551 # repo[1] => repo[2] we also never call repo[0] because
552 # it's actually second commit
552 # it's actually second commit
553 if revision <= 0:
553 if revision <= 0:
554 revision = revision + -1
554 revision = revision + -1
555 else:
555 else:
556 revision = revision + 1
556 revision = revision + 1
557
557
558 try:
558 try:
559 ctx = repo[revision]
559 ctx = repo[revision]
560 except RepoLookupError as e:
560 except RepoLookupError as e:
561 raise exceptions.LookupException(e)(revision)
561 raise exceptions.LookupException(e)(revision)
562 except LookupError as e:
562 except LookupError as e:
563 raise exceptions.LookupException(e)(e.name)
563 raise exceptions.LookupException(e)(e.name)
564
564
565 if not both:
565 if not both:
566 return ctx.hex()
566 return ctx.hex()
567
567
568 ctx = repo[ctx.hex()]
568 ctx = repo[ctx.hex()]
569 return ctx.hex(), ctx.rev()
569 return ctx.hex(), ctx.rev()
570
570
571 @reraise_safe_exceptions
571 @reraise_safe_exceptions
572 def pull(self, wire, url, commit_ids=None):
572 def pull(self, wire, url, commit_ids=None):
573 repo = self._factory.repo(wire)
573 repo = self._factory.repo(wire)
574 # Disable any prompts for this repo
574 # Disable any prompts for this repo
575 repo.ui.setconfig('ui', 'interactive', 'off', '-y')
575 repo.ui.setconfig('ui', 'interactive', 'off', '-y')
576
576
577 remote = peer(repo, {}, url)
577 remote = peer(repo, {}, url)
578 # Disable any prompts for this remote
578 # Disable any prompts for this remote
579 remote.ui.setconfig('ui', 'interactive', 'off', '-y')
579 remote.ui.setconfig('ui', 'interactive', 'off', '-y')
580
580
581 if commit_ids:
581 if commit_ids:
582 commit_ids = [bin(commit_id) for commit_id in commit_ids]
582 commit_ids = [bin(commit_id) for commit_id in commit_ids]
583
583
584 return exchange.pull(
584 return exchange.pull(
585 repo, remote, heads=commit_ids, force=None).cgresult
585 repo, remote, heads=commit_ids, force=None).cgresult
586
586
587 @reraise_safe_exceptions
587 @reraise_safe_exceptions
588 def sync_push(self, wire, url):
588 def sync_push(self, wire, url):
589 if not self.check_url(url, wire['config']):
589 if not self.check_url(url, wire['config']):
590 return
590 return
591
591
592 repo = self._factory.repo(wire)
592 repo = self._factory.repo(wire)
593
593
594 # Disable any prompts for this repo
594 # Disable any prompts for this repo
595 repo.ui.setconfig('ui', 'interactive', 'off', '-y')
595 repo.ui.setconfig('ui', 'interactive', 'off', '-y')
596
596
597 bookmarks = dict(repo._bookmarks).keys()
597 bookmarks = dict(repo._bookmarks).keys()
598 remote = peer(repo, {}, url)
598 remote = peer(repo, {}, url)
599 # Disable any prompts for this remote
599 # Disable any prompts for this remote
600 remote.ui.setconfig('ui', 'interactive', 'off', '-y')
600 remote.ui.setconfig('ui', 'interactive', 'off', '-y')
601
601
602 return exchange.push(
602 return exchange.push(
603 repo, remote, newbranch=True, bookmarks=bookmarks).cgresult
603 repo, remote, newbranch=True, bookmarks=bookmarks).cgresult
604
604
605 @reraise_safe_exceptions
605 @reraise_safe_exceptions
606 def revision(self, wire, rev):
606 def revision(self, wire, rev):
607 repo = self._factory.repo(wire)
607 repo = self._factory.repo(wire)
608 ctx = repo[rev]
608 ctx = repo[rev]
609 return ctx.rev()
609 return ctx.rev()
610
610
611 @reraise_safe_exceptions
611 @reraise_safe_exceptions
612 def rev_range(self, wire, filter):
612 def rev_range(self, wire, filter):
613 repo = self._factory.repo(wire)
613 repo = self._factory.repo(wire)
614 revisions = [rev for rev in revrange(repo, filter)]
614 revisions = [rev for rev in revrange(repo, filter)]
615 return revisions
615 return revisions
616
616
617 @reraise_safe_exceptions
617 @reraise_safe_exceptions
618 def rev_range_hash(self, wire, node):
618 def rev_range_hash(self, wire, node):
619 repo = self._factory.repo(wire)
619 repo = self._factory.repo(wire)
620
620
621 def get_revs(repo, rev_opt):
621 def get_revs(repo, rev_opt):
622 if rev_opt:
622 if rev_opt:
623 revs = revrange(repo, rev_opt)
623 revs = revrange(repo, rev_opt)
624 if len(revs) == 0:
624 if len(revs) == 0:
625 return (nullrev, nullrev)
625 return (nullrev, nullrev)
626 return max(revs), min(revs)
626 return max(revs), min(revs)
627 else:
627 else:
628 return len(repo) - 1, 0
628 return len(repo) - 1, 0
629
629
630 stop, start = get_revs(repo, [node + ':'])
630 stop, start = get_revs(repo, [node + ':'])
631 revs = [hex(repo[r].node()) for r in xrange(start, stop + 1)]
631 revs = [hex(repo[r].node()) for r in xrange(start, stop + 1)]
632 return revs
632 return revs
633
633
634 @reraise_safe_exceptions
634 @reraise_safe_exceptions
635 def revs_from_revspec(self, wire, rev_spec, *args, **kwargs):
635 def revs_from_revspec(self, wire, rev_spec, *args, **kwargs):
636 other_path = kwargs.pop('other_path', None)
636 other_path = kwargs.pop('other_path', None)
637
637
638 # case when we want to compare two independent repositories
638 # case when we want to compare two independent repositories
639 if other_path and other_path != wire["path"]:
639 if other_path and other_path != wire["path"]:
640 baseui = self._factory._create_config(wire["config"])
640 baseui = self._factory._create_config(wire["config"])
641 repo = unionrepo.unionrepository(baseui, other_path, wire["path"])
641 repo = unionrepo.makeunionrepository(baseui, other_path, wire["path"])
642 else:
642 else:
643 repo = self._factory.repo(wire)
643 repo = self._factory.repo(wire)
644 return list(repo.revs(rev_spec, *args))
644 return list(repo.revs(rev_spec, *args))
645
645
646 @reraise_safe_exceptions
646 @reraise_safe_exceptions
647 def strip(self, wire, revision, update, backup):
647 def strip(self, wire, revision, update, backup):
648 repo = self._factory.repo(wire)
648 repo = self._factory.repo(wire)
649 ctx = repo[revision]
649 ctx = repo[revision]
650 hgext_strip(
650 hgext_strip(
651 repo.baseui, repo, ctx.node(), update=update, backup=backup)
651 repo.baseui, repo, ctx.node(), update=update, backup=backup)
652
652
653 @reraise_safe_exceptions
653 @reraise_safe_exceptions
654 def verify(self, wire,):
654 def verify(self, wire,):
655 repo = self._factory.repo(wire)
655 repo = self._factory.repo(wire)
656 baseui = self._factory._create_config(wire['config'])
656 baseui = self._factory._create_config(wire['config'])
657 baseui.setconfig('ui', 'quiet', 'false')
657 baseui.setconfig('ui', 'quiet', 'false')
658 output = io.BytesIO()
658 output = io.BytesIO()
659
659
660 def write(data, **unused_kwargs):
660 def write(data, **unused_kwargs):
661 output.write(data)
661 output.write(data)
662 baseui.write = write
662 baseui.write = write
663
663
664 repo.ui = baseui
664 repo.ui = baseui
665 verify.verify(repo)
665 verify.verify(repo)
666 return output.getvalue()
666 return output.getvalue()
667
667
668 @reraise_safe_exceptions
668 @reraise_safe_exceptions
669 def tag(self, wire, name, revision, message, local, user,
669 def tag(self, wire, name, revision, message, local, user,
670 tag_time, tag_timezone):
670 tag_time, tag_timezone):
671 repo = self._factory.repo(wire)
671 repo = self._factory.repo(wire)
672 ctx = repo[revision]
672 ctx = repo[revision]
673 node = ctx.node()
673 node = ctx.node()
674
674
675 date = (tag_time, tag_timezone)
675 date = (tag_time, tag_timezone)
676 try:
676 try:
677 hg_tag.tag(repo, name, node, message, local, user, date)
677 hg_tag.tag(repo, name, node, message, local, user, date)
678 except Abort as e:
678 except Abort as e:
679 log.exception("Tag operation aborted")
679 log.exception("Tag operation aborted")
680 # Exception can contain unicode which we convert
680 # Exception can contain unicode which we convert
681 raise exceptions.AbortException(e)(repr(e))
681 raise exceptions.AbortException(e)(repr(e))
682
682
683 @reraise_safe_exceptions
683 @reraise_safe_exceptions
684 def tags(self, wire):
684 def tags(self, wire):
685 repo = self._factory.repo(wire)
685 repo = self._factory.repo(wire)
686 return repo.tags()
686 return repo.tags()
687
687
688 @reraise_safe_exceptions
688 @reraise_safe_exceptions
689 def update(self, wire, node=None, clean=False):
689 def update(self, wire, node=None, clean=False):
690 repo = self._factory.repo(wire)
690 repo = self._factory.repo(wire)
691 baseui = self._factory._create_config(wire['config'])
691 baseui = self._factory._create_config(wire['config'])
692 commands.update(baseui, repo, node=node, clean=clean)
692 commands.update(baseui, repo, node=node, clean=clean)
693
693
694 @reraise_safe_exceptions
694 @reraise_safe_exceptions
695 def identify(self, wire):
695 def identify(self, wire):
696 repo = self._factory.repo(wire)
696 repo = self._factory.repo(wire)
697 baseui = self._factory._create_config(wire['config'])
697 baseui = self._factory._create_config(wire['config'])
698 output = io.BytesIO()
698 output = io.BytesIO()
699 baseui.write = output.write
699 baseui.write = output.write
700 # This is required to get a full node id
700 # This is required to get a full node id
701 baseui.debugflag = True
701 baseui.debugflag = True
702 commands.identify(baseui, repo, id=True)
702 commands.identify(baseui, repo, id=True)
703
703
704 return output.getvalue()
704 return output.getvalue()
705
705
706 @reraise_safe_exceptions
706 @reraise_safe_exceptions
707 def pull_cmd(self, wire, source, bookmark=None, branch=None, revision=None,
707 def pull_cmd(self, wire, source, bookmark=None, branch=None, revision=None,
708 hooks=True):
708 hooks=True):
709 repo = self._factory.repo(wire)
709 repo = self._factory.repo(wire)
710 baseui = self._factory._create_config(wire['config'], hooks=hooks)
710 baseui = self._factory._create_config(wire['config'], hooks=hooks)
711
711
712 # Mercurial internally has a lot of logic that checks ONLY if
712 # Mercurial internally has a lot of logic that checks ONLY if
713 # option is defined, we just pass those if they are defined then
713 # option is defined, we just pass those if they are defined then
714 opts = {}
714 opts = {}
715 if bookmark:
715 if bookmark:
716 opts['bookmark'] = bookmark
716 opts['bookmark'] = bookmark
717 if branch:
717 if branch:
718 opts['branch'] = branch
718 opts['branch'] = branch
719 if revision:
719 if revision:
720 opts['rev'] = revision
720 opts['rev'] = revision
721
721
722 commands.pull(baseui, repo, source, **opts)
722 commands.pull(baseui, repo, source, **opts)
723
723
724 @reraise_safe_exceptions
724 @reraise_safe_exceptions
725 def heads(self, wire, branch=None):
725 def heads(self, wire, branch=None):
726 repo = self._factory.repo(wire)
726 repo = self._factory.repo(wire)
727 baseui = self._factory._create_config(wire['config'])
727 baseui = self._factory._create_config(wire['config'])
728 output = io.BytesIO()
728 output = io.BytesIO()
729
729
730 def write(data, **unused_kwargs):
730 def write(data, **unused_kwargs):
731 output.write(data)
731 output.write(data)
732
732
733 baseui.write = write
733 baseui.write = write
734 if branch:
734 if branch:
735 args = [branch]
735 args = [branch]
736 else:
736 else:
737 args = []
737 args = []
738 commands.heads(baseui, repo, template='{node} ', *args)
738 commands.heads(baseui, repo, template='{node} ', *args)
739
739
740 return output.getvalue()
740 return output.getvalue()
741
741
742 @reraise_safe_exceptions
742 @reraise_safe_exceptions
743 def ancestor(self, wire, revision1, revision2):
743 def ancestor(self, wire, revision1, revision2):
744 repo = self._factory.repo(wire)
744 repo = self._factory.repo(wire)
745 changelog = repo.changelog
745 changelog = repo.changelog
746 lookup = repo.lookup
746 lookup = repo.lookup
747 a = changelog.ancestor(lookup(revision1), lookup(revision2))
747 a = changelog.ancestor(lookup(revision1), lookup(revision2))
748 return hex(a)
748 return hex(a)
749
749
750 @reraise_safe_exceptions
750 @reraise_safe_exceptions
751 def push(self, wire, revisions, dest_path, hooks=True,
751 def push(self, wire, revisions, dest_path, hooks=True,
752 push_branches=False):
752 push_branches=False):
753 repo = self._factory.repo(wire)
753 repo = self._factory.repo(wire)
754 baseui = self._factory._create_config(wire['config'], hooks=hooks)
754 baseui = self._factory._create_config(wire['config'], hooks=hooks)
755 commands.push(baseui, repo, dest=dest_path, rev=revisions,
755 commands.push(baseui, repo, dest=dest_path, rev=revisions,
756 new_branch=push_branches)
756 new_branch=push_branches)
757
757
758 @reraise_safe_exceptions
758 @reraise_safe_exceptions
759 def merge(self, wire, revision):
759 def merge(self, wire, revision):
760 repo = self._factory.repo(wire)
760 repo = self._factory.repo(wire)
761 baseui = self._factory._create_config(wire['config'])
761 baseui = self._factory._create_config(wire['config'])
762 repo.ui.setconfig('ui', 'merge', 'internal:dump')
762 repo.ui.setconfig('ui', 'merge', 'internal:dump')
763
763
764 # In case of sub repositories are used mercurial prompts the user in
764 # In case of sub repositories are used mercurial prompts the user in
765 # case of merge conflicts or different sub repository sources. By
765 # case of merge conflicts or different sub repository sources. By
766 # setting the interactive flag to `False` mercurial doesn't prompt the
766 # setting the interactive flag to `False` mercurial doesn't prompt the
767 # used but instead uses a default value.
767 # used but instead uses a default value.
768 repo.ui.setconfig('ui', 'interactive', False)
768 repo.ui.setconfig('ui', 'interactive', False)
769
769
770 commands.merge(baseui, repo, rev=revision)
770 commands.merge(baseui, repo, rev=revision)
771
771
772 @reraise_safe_exceptions
772 @reraise_safe_exceptions
773 def commit(self, wire, message, username, close_branch=False):
773 def commit(self, wire, message, username, close_branch=False):
774 repo = self._factory.repo(wire)
774 repo = self._factory.repo(wire)
775 baseui = self._factory._create_config(wire['config'])
775 baseui = self._factory._create_config(wire['config'])
776 repo.ui.setconfig('ui', 'username', username)
776 repo.ui.setconfig('ui', 'username', username)
777 commands.commit(baseui, repo, message=message, close_branch=close_branch)
777 commands.commit(baseui, repo, message=message, close_branch=close_branch)
778
778
779 @reraise_safe_exceptions
779 @reraise_safe_exceptions
780 def rebase(self, wire, source=None, dest=None, abort=False):
780 def rebase(self, wire, source=None, dest=None, abort=False):
781 repo = self._factory.repo(wire)
781 repo = self._factory.repo(wire)
782 baseui = self._factory._create_config(wire['config'])
782 baseui = self._factory._create_config(wire['config'])
783 repo.ui.setconfig('ui', 'merge', 'internal:dump')
783 repo.ui.setconfig('ui', 'merge', 'internal:dump')
784 rebase.rebase(
784 rebase.rebase(
785 baseui, repo, base=source, dest=dest, abort=abort, keep=not abort)
785 baseui, repo, base=source, dest=dest, abort=abort, keep=not abort)
786
786
787 @reraise_safe_exceptions
787 @reraise_safe_exceptions
788 def bookmark(self, wire, bookmark, revision=None):
788 def bookmark(self, wire, bookmark, revision=None):
789 repo = self._factory.repo(wire)
789 repo = self._factory.repo(wire)
790 baseui = self._factory._create_config(wire['config'])
790 baseui = self._factory._create_config(wire['config'])
791 commands.bookmark(baseui, repo, bookmark, rev=revision, force=True)
791 commands.bookmark(baseui, repo, bookmark, rev=revision, force=True)
792
792
793 @reraise_safe_exceptions
793 @reraise_safe_exceptions
794 def install_hooks(self, wire, force=False):
794 def install_hooks(self, wire, force=False):
795 # we don't need any special hooks for Mercurial
795 # we don't need any special hooks for Mercurial
796 pass
796 pass
797
797
798 @reraise_safe_exceptions
798 @reraise_safe_exceptions
799 def get_hooks_info(self, wire):
799 def get_hooks_info(self, wire):
800 return {
800 return {
801 'pre_version': vcsserver.__version__,
801 'pre_version': vcsserver.__version__,
802 'post_version': vcsserver.__version__,
802 'post_version': vcsserver.__version__,
803 }
803 }
@@ -1,63 +1,63 b''
1 # RhodeCode VCSServer provides access to different vcs backends via network.
1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2019 RhodeCode GmbH
2 # Copyright (C) 2014-2019 RhodeCode GmbH
3 #
3 #
4 # This program is free software; you can redistribute it and/or modify
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 3 of the License, or
6 # the Free Software Foundation; either version 3 of the License, or
7 # (at your option) any later version.
7 # (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software Foundation,
15 # along with this program; if not, write to the Free Software Foundation,
16 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
17
18 """
18 """
19 Mercurial libs compatibility
19 Mercurial libs compatibility
20 """
20 """
21
21
22 import mercurial
22 import mercurial
23 from mercurial import demandimport
23 from mercurial import demandimport
24 # patch demandimport, due to bug in mercurial when it always triggers
24 # patch demandimport, due to bug in mercurial when it always triggers
25 # demandimport.enable()
25 # demandimport.enable()
26 demandimport.enable = lambda *args, **kwargs: 1
26 demandimport.enable = lambda *args, **kwargs: 1
27
27
28 from mercurial import ui
28 from mercurial import ui
29 from mercurial import patch
29 from mercurial import patch
30 from mercurial import config
30 from mercurial import config
31 from mercurial import extensions
31 from mercurial import extensions
32 from mercurial import scmutil
32 from mercurial import scmutil
33 from mercurial import archival
33 from mercurial import archival
34 from mercurial import discovery
34 from mercurial import discovery
35 from mercurial import unionrepo
35 from mercurial import unionrepo
36 from mercurial import localrepo
36 from mercurial import localrepo
37 from mercurial import merge as hg_merge
37 from mercurial import merge as hg_merge
38 from mercurial import subrepo
38 from mercurial import subrepo
39 from mercurial import tags as hg_tag
39 from mercurial import tags as hg_tag
40
40
41 from mercurial.commands import clone, nullid, pull
41 from mercurial.commands import clone, nullid, pull
42 from mercurial.context import memctx, memfilectx
42 from mercurial.context import memctx, memfilectx
43 from mercurial.error import (
43 from mercurial.error import (
44 LookupError, RepoError, RepoLookupError, Abort, InterventionRequired,
44 LookupError, RepoError, RepoLookupError, Abort, InterventionRequired,
45 RequirementError)
45 RequirementError)
46 from mercurial.hgweb import hgweb_mod
46 from mercurial.hgweb import hgweb_mod
47 from mercurial.localrepo import localrepository
47 from mercurial.localrepo import instance
48 from mercurial.match import match
48 from mercurial.match import match
49 from mercurial.mdiff import diffopts
49 from mercurial.mdiff import diffopts
50 from mercurial.node import bin, hex
50 from mercurial.node import bin, hex
51 from mercurial.encoding import tolocal
51 from mercurial.encoding import tolocal
52 from mercurial.discovery import findcommonoutgoing
52 from mercurial.discovery import findcommonoutgoing
53 from mercurial.hg import peer
53 from mercurial.hg import peer
54 from mercurial.httppeer import makepeer
54 from mercurial.httppeer import makepeer
55 from mercurial.util import url as hg_url
55 from mercurial.util import url as hg_url
56 from mercurial.scmutil import revrange
56 from mercurial.scmutil import revrange
57 from mercurial.node import nullrev
57 from mercurial.node import nullrev
58 from mercurial import exchange
58 from mercurial import exchange
59 from hgext import largefiles
59 from hgext import largefiles
60
60
61 # those authnadlers are patched for python 2.6.5 bug an
61 # those authnadlers are patched for python 2.6.5 bug an
62 # infinit looping when given invalid resources
62 # infinit looping when given invalid resources
63 from mercurial.url import httpbasicauthhandler, httpdigestauthhandler
63 from mercurial.url import httpbasicauthhandler, httpdigestauthhandler
General Comments 0
You need to be logged in to leave comments. Login now