##// END OF EJS Templates
session: moved pyramid_beaker internally to apply some patches required for better session handling
marcink -
r3748:9f6c56d4 new-ui
parent child Browse files
Show More
@@ -0,0 +1,200 b''
1 # Copyright (c) 2010 Agendaless Consulting and Contributors.
2 # (http://www.agendaless.com), All Rights Reserved
3 # License: BSD-derived (http://www.repoze.org/LICENSE.txt)
4 # With Patches from RhodeCode GmBH
5
6
7 import os
8
9 from beaker import cache
10 from beaker.session import SessionObject
11 from beaker.util import coerce_cache_params
12 from beaker.util import coerce_session_params
13
14 from pyramid.interfaces import ISession
15 from pyramid.settings import asbool
16 from zope.interface import implementer
17
18 from binascii import hexlify
19
20
21 def BeakerSessionFactoryConfig(**options):
22 """ Return a Pyramid session factory using Beaker session settings
23 supplied directly as ``**options``"""
24
25 class PyramidBeakerSessionObject(SessionObject):
26 _options = options
27 _cookie_on_exception = _options.pop('cookie_on_exception', True)
28 _constant_csrf_token = _options.pop('constant_csrf_token', False)
29
30 def __init__(self, request):
31 SessionObject.__init__(self, request.environ, **self._options)
32
33 def session_callback(request, response):
34 exception = getattr(request, 'exception', None)
35 if (exception is None or self._cookie_on_exception) and self.accessed():
36 self.persist()
37 headers = self.__dict__['_headers']
38 if headers['set_cookie'] and headers['cookie_out']:
39 response.headerlist.append(('Set-Cookie', headers['cookie_out']))
40 request.add_response_callback(session_callback)
41
42 # ISession API
43
44 @property
45 def id(self):
46 # this is as inspected in SessionObject.__init__
47 if self.__dict__['_params'].get('type') != 'cookie':
48 return self._session().id
49 return None
50
51 @property
52 def new(self):
53 return self.last_accessed is None
54
55 changed = SessionObject.save
56
57 # modifying dictionary methods
58
59 @call_save
60 def clear(self):
61 return self._session().clear()
62
63 @call_save
64 def update(self, d, **kw):
65 return self._session().update(d, **kw)
66
67 @call_save
68 def setdefault(self, k, d=None):
69 return self._session().setdefault(k, d)
70
71 @call_save
72 def pop(self, k, d=None):
73 return self._session().pop(k, d)
74
75 @call_save
76 def popitem(self):
77 return self._session().popitem()
78
79 __setitem__ = call_save(SessionObject.__setitem__)
80 __delitem__ = call_save(SessionObject.__delitem__)
81
82 # Flash API methods
83 def flash(self, msg, queue='', allow_duplicate=True):
84 storage = self.setdefault('_f_' + queue, [])
85 if allow_duplicate or (msg not in storage):
86 storage.append(msg)
87
88 def pop_flash(self, queue=''):
89 storage = self.pop('_f_' + queue, [])
90 return storage
91
92 def peek_flash(self, queue=''):
93 storage = self.get('_f_' + queue, [])
94 return storage
95
96 # CSRF API methods
97 def new_csrf_token(self):
98 token = (self._constant_csrf_token
99 or hexlify(os.urandom(20)).decode('ascii'))
100 self['_csrft_'] = token
101 return token
102
103 def get_csrf_token(self):
104 token = self.get('_csrft_', None)
105 if token is None:
106 token = self.new_csrf_token()
107 return token
108
109 return implementer(ISession)(PyramidBeakerSessionObject)
110
111
112 def call_save(wrapped):
113 """ By default, in non-auto-mode beaker badly wants people to
114 call save even though it should know something has changed when
115 a mutating method is called. This hack should be removed if
116 Beaker ever starts to do this by default. """
117 def save(session, *arg, **kw):
118 value = wrapped(session, *arg, **kw)
119 session.save()
120 return value
121 save.__doc__ = wrapped.__doc__
122 return save
123
124
125 def session_factory_from_settings(settings):
126 """ Return a Pyramid session factory using Beaker session settings
127 supplied from a Paste configuration file"""
128 prefixes = ('session.', 'beaker.session.')
129 options = {}
130
131 # Pull out any config args meant for beaker session. if there are any
132 for k, v in settings.items():
133 for prefix in prefixes:
134 if k.startswith(prefix):
135 option_name = k[len(prefix):]
136 if option_name == 'cookie_on_exception':
137 v = asbool(v)
138 options[option_name] = v
139
140 options = coerce_session_params(options)
141 return BeakerSessionFactoryConfig(**options)
142
143
144 def set_cache_regions_from_settings(settings):
145 """ Add cache support to the Pylons application.
146
147 The ``settings`` passed to the configurator are used to setup
148 the cache options. Cache options in the settings should start
149 with either 'beaker.cache.' or 'cache.'.
150
151 """
152 cache_settings = {'regions': []}
153 for key in settings.keys():
154 for prefix in ['beaker.cache.', 'cache.']:
155 if key.startswith(prefix):
156 name = key.split(prefix)[1].strip()
157 cache_settings[name] = settings[key].strip()
158
159 if ('expire' in cache_settings
160 and isinstance(cache_settings['expire'], basestring)
161 and cache_settings['expire'].lower() in ['none', 'no']):
162 cache_settings['expire'] = None
163
164 coerce_cache_params(cache_settings)
165
166 if 'enabled' not in cache_settings:
167 cache_settings['enabled'] = True
168
169 regions = cache_settings['regions']
170 if regions:
171 for region in regions:
172 if not region:
173 continue
174
175 region_settings = {
176 'data_dir': cache_settings.get('data_dir'),
177 'lock_dir': cache_settings.get('lock_dir'),
178 'expire': cache_settings.get('expire', 60),
179 'enabled': cache_settings['enabled'],
180 'key_length': cache_settings.get('key_length', 250),
181 'type': cache_settings.get('type'),
182 'url': cache_settings.get('url'),
183 }
184 region_prefix = '%s.' % region
185 region_len = len(region_prefix)
186 for key in list(cache_settings.keys()):
187 if key.startswith(region_prefix):
188 region_settings[key[region_len:]] = cache_settings.pop(key)
189
190 if (isinstance(region_settings['expire'], basestring)
191 and region_settings['expire'].lower() in ['none', 'no']):
192 region_settings['expire'] = None
193 coerce_cache_params(region_settings)
194 cache.cache_regions[region] = region_settings
195
196
197 def includeme(config):
198 session_factory = session_factory_from_settings(config.registry.settings)
199 config.set_session_factory(session_factory)
200 set_cache_regions_from_settings(config.registry.settings)
@@ -1,2361 +1,2345 b''
1 # Generated by pip2nix 0.8.0.dev1
1 # Generated by pip2nix 0.8.0.dev1
2 # See https://github.com/johbo/pip2nix
2 # See https://github.com/johbo/pip2nix
3
3
4 { pkgs, fetchurl, fetchgit, fetchhg }:
4 { pkgs, fetchurl, fetchgit, fetchhg }:
5
5
6 self: super: {
6 self: super: {
7 "alembic" = super.buildPythonPackage {
7 "alembic" = super.buildPythonPackage {
8 name = "alembic-1.0.10";
8 name = "alembic-1.0.10";
9 doCheck = false;
9 doCheck = false;
10 propagatedBuildInputs = [
10 propagatedBuildInputs = [
11 self."sqlalchemy"
11 self."sqlalchemy"
12 self."mako"
12 self."mako"
13 self."python-editor"
13 self."python-editor"
14 self."python-dateutil"
14 self."python-dateutil"
15 ];
15 ];
16 src = fetchurl {
16 src = fetchurl {
17 url = "https://files.pythonhosted.org/packages/6e/8b/fa3bd058cccd5e9177fea4efa26bfb769228fdd3178436ad5e05830ef6ef/alembic-1.0.10.tar.gz";
17 url = "https://files.pythonhosted.org/packages/6e/8b/fa3bd058cccd5e9177fea4efa26bfb769228fdd3178436ad5e05830ef6ef/alembic-1.0.10.tar.gz";
18 sha256 = "1dwl0264r6ri2jyrjr68am04x538ab26xwy4crqjnnhm4alwm3c2";
18 sha256 = "1dwl0264r6ri2jyrjr68am04x538ab26xwy4crqjnnhm4alwm3c2";
19 };
19 };
20 meta = {
20 meta = {
21 license = [ pkgs.lib.licenses.mit ];
21 license = [ pkgs.lib.licenses.mit ];
22 };
22 };
23 };
23 };
24 "amqp" = super.buildPythonPackage {
24 "amqp" = super.buildPythonPackage {
25 name = "amqp-2.3.1";
25 name = "amqp-2.3.1";
26 doCheck = false;
26 doCheck = false;
27 propagatedBuildInputs = [
27 propagatedBuildInputs = [
28 self."vine"
28 self."vine"
29 ];
29 ];
30 src = fetchurl {
30 src = fetchurl {
31 url = "https://files.pythonhosted.org/packages/1b/32/242ff76cd802766f11c89c72f3389b5c8de4bdfbab406137b90c5fae8b05/amqp-2.3.1.tar.gz";
31 url = "https://files.pythonhosted.org/packages/1b/32/242ff76cd802766f11c89c72f3389b5c8de4bdfbab406137b90c5fae8b05/amqp-2.3.1.tar.gz";
32 sha256 = "0wlfnvhmfrn7c8qif2jyvsm63ibdxp02ss564qwrvqfhz0di72s0";
32 sha256 = "0wlfnvhmfrn7c8qif2jyvsm63ibdxp02ss564qwrvqfhz0di72s0";
33 };
33 };
34 meta = {
34 meta = {
35 license = [ pkgs.lib.licenses.bsdOriginal ];
35 license = [ pkgs.lib.licenses.bsdOriginal ];
36 };
36 };
37 };
37 };
38 "appenlight-client" = super.buildPythonPackage {
38 "appenlight-client" = super.buildPythonPackage {
39 name = "appenlight-client-0.6.26";
39 name = "appenlight-client-0.6.26";
40 doCheck = false;
40 doCheck = false;
41 propagatedBuildInputs = [
41 propagatedBuildInputs = [
42 self."webob"
42 self."webob"
43 self."requests"
43 self."requests"
44 self."six"
44 self."six"
45 ];
45 ];
46 src = fetchurl {
46 src = fetchurl {
47 url = "https://files.pythonhosted.org/packages/2e/56/418fc10379b96e795ee39a15e69a730c222818af04c3821fa354eaa859ec/appenlight_client-0.6.26.tar.gz";
47 url = "https://files.pythonhosted.org/packages/2e/56/418fc10379b96e795ee39a15e69a730c222818af04c3821fa354eaa859ec/appenlight_client-0.6.26.tar.gz";
48 sha256 = "0s9xw3sb8s3pk73k78nnq4jil3q4mk6bczfa1fmgfx61kdxl2712";
48 sha256 = "0s9xw3sb8s3pk73k78nnq4jil3q4mk6bczfa1fmgfx61kdxl2712";
49 };
49 };
50 meta = {
50 meta = {
51 license = [ pkgs.lib.licenses.bsdOriginal ];
51 license = [ pkgs.lib.licenses.bsdOriginal ];
52 };
52 };
53 };
53 };
54 "asn1crypto" = super.buildPythonPackage {
54 "asn1crypto" = super.buildPythonPackage {
55 name = "asn1crypto-0.24.0";
55 name = "asn1crypto-0.24.0";
56 doCheck = false;
56 doCheck = false;
57 src = fetchurl {
57 src = fetchurl {
58 url = "https://files.pythonhosted.org/packages/fc/f1/8db7daa71f414ddabfa056c4ef792e1461ff655c2ae2928a2b675bfed6b4/asn1crypto-0.24.0.tar.gz";
58 url = "https://files.pythonhosted.org/packages/fc/f1/8db7daa71f414ddabfa056c4ef792e1461ff655c2ae2928a2b675bfed6b4/asn1crypto-0.24.0.tar.gz";
59 sha256 = "0jaf8rf9dx1lf23xfv2cdd5h52f1qr3w8k63985bc35g3d220p4x";
59 sha256 = "0jaf8rf9dx1lf23xfv2cdd5h52f1qr3w8k63985bc35g3d220p4x";
60 };
60 };
61 meta = {
61 meta = {
62 license = [ pkgs.lib.licenses.mit ];
62 license = [ pkgs.lib.licenses.mit ];
63 };
63 };
64 };
64 };
65 "atomicwrites" = super.buildPythonPackage {
65 "atomicwrites" = super.buildPythonPackage {
66 name = "atomicwrites-1.2.1";
66 name = "atomicwrites-1.2.1";
67 doCheck = false;
67 doCheck = false;
68 src = fetchurl {
68 src = fetchurl {
69 url = "https://files.pythonhosted.org/packages/ac/ed/a311712ef6b4355035489f665e63e1a73f9eb371929e3c98e5efd451069e/atomicwrites-1.2.1.tar.gz";
69 url = "https://files.pythonhosted.org/packages/ac/ed/a311712ef6b4355035489f665e63e1a73f9eb371929e3c98e5efd451069e/atomicwrites-1.2.1.tar.gz";
70 sha256 = "1vmkbw9j0qammwxbxycrs39gvdg4lc2d4lk98kwf8ag2manyi6pc";
70 sha256 = "1vmkbw9j0qammwxbxycrs39gvdg4lc2d4lk98kwf8ag2manyi6pc";
71 };
71 };
72 meta = {
72 meta = {
73 license = [ pkgs.lib.licenses.mit ];
73 license = [ pkgs.lib.licenses.mit ];
74 };
74 };
75 };
75 };
76 "attrs" = super.buildPythonPackage {
76 "attrs" = super.buildPythonPackage {
77 name = "attrs-18.2.0";
77 name = "attrs-18.2.0";
78 doCheck = false;
78 doCheck = false;
79 src = fetchurl {
79 src = fetchurl {
80 url = "https://files.pythonhosted.org/packages/0f/9e/26b1d194aab960063b266170e53c39f73ea0d0d3f5ce23313e0ec8ee9bdf/attrs-18.2.0.tar.gz";
80 url = "https://files.pythonhosted.org/packages/0f/9e/26b1d194aab960063b266170e53c39f73ea0d0d3f5ce23313e0ec8ee9bdf/attrs-18.2.0.tar.gz";
81 sha256 = "0s9ydh058wmmf5v391pym877x4ahxg45dw6a0w4c7s5wgpigdjqh";
81 sha256 = "0s9ydh058wmmf5v391pym877x4ahxg45dw6a0w4c7s5wgpigdjqh";
82 };
82 };
83 meta = {
83 meta = {
84 license = [ pkgs.lib.licenses.mit ];
84 license = [ pkgs.lib.licenses.mit ];
85 };
85 };
86 };
86 };
87 "authomatic" = super.buildPythonPackage {
87 "authomatic" = super.buildPythonPackage {
88 name = "authomatic-0.1.0.post1";
88 name = "authomatic-0.1.0.post1";
89 doCheck = false;
89 doCheck = false;
90 src = fetchurl {
90 src = fetchurl {
91 url = "https://code.rhodecode.com/upstream/authomatic/artifacts/download/0-4fe9c041-a567-4f84-be4c-7efa2a606d3c.tar.gz?md5=f6bdc3c769688212db68233e8d2b0383";
91 url = "https://code.rhodecode.com/upstream/authomatic/artifacts/download/0-4fe9c041-a567-4f84-be4c-7efa2a606d3c.tar.gz?md5=f6bdc3c769688212db68233e8d2b0383";
92 sha256 = "0pc716mva0ym6xd8jwzjbjp8dqxy9069wwwv2aqwb8lyhl4757ab";
92 sha256 = "0pc716mva0ym6xd8jwzjbjp8dqxy9069wwwv2aqwb8lyhl4757ab";
93 };
93 };
94 meta = {
94 meta = {
95 license = [ pkgs.lib.licenses.mit ];
95 license = [ pkgs.lib.licenses.mit ];
96 };
96 };
97 };
97 };
98 "babel" = super.buildPythonPackage {
98 "babel" = super.buildPythonPackage {
99 name = "babel-1.3";
99 name = "babel-1.3";
100 doCheck = false;
100 doCheck = false;
101 propagatedBuildInputs = [
101 propagatedBuildInputs = [
102 self."pytz"
102 self."pytz"
103 ];
103 ];
104 src = fetchurl {
104 src = fetchurl {
105 url = "https://files.pythonhosted.org/packages/33/27/e3978243a03a76398c384c83f7ca879bc6e8f1511233a621fcada135606e/Babel-1.3.tar.gz";
105 url = "https://files.pythonhosted.org/packages/33/27/e3978243a03a76398c384c83f7ca879bc6e8f1511233a621fcada135606e/Babel-1.3.tar.gz";
106 sha256 = "0bnin777lc53nxd1hp3apq410jj5wx92n08h7h4izpl4f4sx00lz";
106 sha256 = "0bnin777lc53nxd1hp3apq410jj5wx92n08h7h4izpl4f4sx00lz";
107 };
107 };
108 meta = {
108 meta = {
109 license = [ pkgs.lib.licenses.bsdOriginal ];
109 license = [ pkgs.lib.licenses.bsdOriginal ];
110 };
110 };
111 };
111 };
112 "backports.shutil-get-terminal-size" = super.buildPythonPackage {
112 "backports.shutil-get-terminal-size" = super.buildPythonPackage {
113 name = "backports.shutil-get-terminal-size-1.0.0";
113 name = "backports.shutil-get-terminal-size-1.0.0";
114 doCheck = false;
114 doCheck = false;
115 src = fetchurl {
115 src = fetchurl {
116 url = "https://files.pythonhosted.org/packages/ec/9c/368086faa9c016efce5da3e0e13ba392c9db79e3ab740b763fe28620b18b/backports.shutil_get_terminal_size-1.0.0.tar.gz";
116 url = "https://files.pythonhosted.org/packages/ec/9c/368086faa9c016efce5da3e0e13ba392c9db79e3ab740b763fe28620b18b/backports.shutil_get_terminal_size-1.0.0.tar.gz";
117 sha256 = "107cmn7g3jnbkp826zlj8rrj19fam301qvaqf0f3905f5217lgki";
117 sha256 = "107cmn7g3jnbkp826zlj8rrj19fam301qvaqf0f3905f5217lgki";
118 };
118 };
119 meta = {
119 meta = {
120 license = [ pkgs.lib.licenses.mit ];
120 license = [ pkgs.lib.licenses.mit ];
121 };
121 };
122 };
122 };
123 "beaker" = super.buildPythonPackage {
123 "beaker" = super.buildPythonPackage {
124 name = "beaker-1.9.1";
124 name = "beaker-1.9.1";
125 doCheck = false;
125 doCheck = false;
126 propagatedBuildInputs = [
126 propagatedBuildInputs = [
127 self."funcsigs"
127 self."funcsigs"
128 ];
128 ];
129 src = fetchurl {
129 src = fetchurl {
130 url = "https://files.pythonhosted.org/packages/ca/14/a626188d0d0c7b55dd7cf1902046c2743bd392a7078bb53073e13280eb1e/Beaker-1.9.1.tar.gz";
130 url = "https://files.pythonhosted.org/packages/ca/14/a626188d0d0c7b55dd7cf1902046c2743bd392a7078bb53073e13280eb1e/Beaker-1.9.1.tar.gz";
131 sha256 = "08arsn61r255lhz6hcpn2lsiqpg30clla805ysx06wmbhvb6w9rj";
131 sha256 = "08arsn61r255lhz6hcpn2lsiqpg30clla805ysx06wmbhvb6w9rj";
132 };
132 };
133 meta = {
133 meta = {
134 license = [ pkgs.lib.licenses.bsdOriginal ];
134 license = [ pkgs.lib.licenses.bsdOriginal ];
135 };
135 };
136 };
136 };
137 "beautifulsoup4" = super.buildPythonPackage {
137 "beautifulsoup4" = super.buildPythonPackage {
138 name = "beautifulsoup4-4.6.3";
138 name = "beautifulsoup4-4.6.3";
139 doCheck = false;
139 doCheck = false;
140 src = fetchurl {
140 src = fetchurl {
141 url = "https://files.pythonhosted.org/packages/88/df/86bffad6309f74f3ff85ea69344a078fc30003270c8df6894fca7a3c72ff/beautifulsoup4-4.6.3.tar.gz";
141 url = "https://files.pythonhosted.org/packages/88/df/86bffad6309f74f3ff85ea69344a078fc30003270c8df6894fca7a3c72ff/beautifulsoup4-4.6.3.tar.gz";
142 sha256 = "041dhalzjciw6qyzzq7a2k4h1yvyk76xigp35hv5ibnn448ydy4h";
142 sha256 = "041dhalzjciw6qyzzq7a2k4h1yvyk76xigp35hv5ibnn448ydy4h";
143 };
143 };
144 meta = {
144 meta = {
145 license = [ pkgs.lib.licenses.mit ];
145 license = [ pkgs.lib.licenses.mit ];
146 };
146 };
147 };
147 };
148 "billiard" = super.buildPythonPackage {
148 "billiard" = super.buildPythonPackage {
149 name = "billiard-3.5.0.3";
149 name = "billiard-3.5.0.3";
150 doCheck = false;
150 doCheck = false;
151 src = fetchurl {
151 src = fetchurl {
152 url = "https://files.pythonhosted.org/packages/39/ac/f5571210cca2e4f4532e38aaff242f26c8654c5e2436bee966c230647ccc/billiard-3.5.0.3.tar.gz";
152 url = "https://files.pythonhosted.org/packages/39/ac/f5571210cca2e4f4532e38aaff242f26c8654c5e2436bee966c230647ccc/billiard-3.5.0.3.tar.gz";
153 sha256 = "1riwiiwgb141151md4ykx49qrz749akj5k8g290ji9bsqjyj4yqx";
153 sha256 = "1riwiiwgb141151md4ykx49qrz749akj5k8g290ji9bsqjyj4yqx";
154 };
154 };
155 meta = {
155 meta = {
156 license = [ pkgs.lib.licenses.bsdOriginal ];
156 license = [ pkgs.lib.licenses.bsdOriginal ];
157 };
157 };
158 };
158 };
159 "bleach" = super.buildPythonPackage {
159 "bleach" = super.buildPythonPackage {
160 name = "bleach-3.1.0";
160 name = "bleach-3.1.0";
161 doCheck = false;
161 doCheck = false;
162 propagatedBuildInputs = [
162 propagatedBuildInputs = [
163 self."six"
163 self."six"
164 self."webencodings"
164 self."webencodings"
165 ];
165 ];
166 src = fetchurl {
166 src = fetchurl {
167 url = "https://files.pythonhosted.org/packages/78/5a/0df03e8735cd9c75167528299c738702437589b9c71a849489d00ffa82e8/bleach-3.1.0.tar.gz";
167 url = "https://files.pythonhosted.org/packages/78/5a/0df03e8735cd9c75167528299c738702437589b9c71a849489d00ffa82e8/bleach-3.1.0.tar.gz";
168 sha256 = "1yhrgrhkln8bd6gn3imj69g1h4xqah9gaz9q26crqr6gmmvpzprz";
168 sha256 = "1yhrgrhkln8bd6gn3imj69g1h4xqah9gaz9q26crqr6gmmvpzprz";
169 };
169 };
170 meta = {
170 meta = {
171 license = [ pkgs.lib.licenses.asl20 ];
171 license = [ pkgs.lib.licenses.asl20 ];
172 };
172 };
173 };
173 };
174 "bumpversion" = super.buildPythonPackage {
174 "bumpversion" = super.buildPythonPackage {
175 name = "bumpversion-0.5.3";
175 name = "bumpversion-0.5.3";
176 doCheck = false;
176 doCheck = false;
177 src = fetchurl {
177 src = fetchurl {
178 url = "https://files.pythonhosted.org/packages/14/41/8c9da3549f8e00c84f0432c3a8cf8ed6898374714676aab91501d48760db/bumpversion-0.5.3.tar.gz";
178 url = "https://files.pythonhosted.org/packages/14/41/8c9da3549f8e00c84f0432c3a8cf8ed6898374714676aab91501d48760db/bumpversion-0.5.3.tar.gz";
179 sha256 = "0zn7694yfipxg35ikkfh7kvgl2fissha3dnqad2c5bvsvmrwhi37";
179 sha256 = "0zn7694yfipxg35ikkfh7kvgl2fissha3dnqad2c5bvsvmrwhi37";
180 };
180 };
181 meta = {
181 meta = {
182 license = [ pkgs.lib.licenses.mit ];
182 license = [ pkgs.lib.licenses.mit ];
183 };
183 };
184 };
184 };
185 "celery" = super.buildPythonPackage {
185 "celery" = super.buildPythonPackage {
186 name = "celery-4.1.1";
186 name = "celery-4.1.1";
187 doCheck = false;
187 doCheck = false;
188 propagatedBuildInputs = [
188 propagatedBuildInputs = [
189 self."pytz"
189 self."pytz"
190 self."billiard"
190 self."billiard"
191 self."kombu"
191 self."kombu"
192 ];
192 ];
193 src = fetchurl {
193 src = fetchurl {
194 url = "https://files.pythonhosted.org/packages/e9/cf/a4c0597effca20c57eb586324e41d1180bc8f13a933da41e0646cff69f02/celery-4.1.1.tar.gz";
194 url = "https://files.pythonhosted.org/packages/e9/cf/a4c0597effca20c57eb586324e41d1180bc8f13a933da41e0646cff69f02/celery-4.1.1.tar.gz";
195 sha256 = "1xbir4vw42n2ir9lanhwl7w69zpmj7lbi66fxm2b7pyvkcss7wni";
195 sha256 = "1xbir4vw42n2ir9lanhwl7w69zpmj7lbi66fxm2b7pyvkcss7wni";
196 };
196 };
197 meta = {
197 meta = {
198 license = [ pkgs.lib.licenses.bsdOriginal ];
198 license = [ pkgs.lib.licenses.bsdOriginal ];
199 };
199 };
200 };
200 };
201 "cffi" = super.buildPythonPackage {
201 "cffi" = super.buildPythonPackage {
202 name = "cffi-1.12.2";
202 name = "cffi-1.12.2";
203 doCheck = false;
203 doCheck = false;
204 propagatedBuildInputs = [
204 propagatedBuildInputs = [
205 self."pycparser"
205 self."pycparser"
206 ];
206 ];
207 src = fetchurl {
207 src = fetchurl {
208 url = "https://files.pythonhosted.org/packages/64/7c/27367b38e6cc3e1f49f193deb761fe75cda9f95da37b67b422e62281fcac/cffi-1.12.2.tar.gz";
208 url = "https://files.pythonhosted.org/packages/64/7c/27367b38e6cc3e1f49f193deb761fe75cda9f95da37b67b422e62281fcac/cffi-1.12.2.tar.gz";
209 sha256 = "19qfks2djya8vix95bmg3xzipjb8w9b8mbj4j5k2hqkc8j58f4z1";
209 sha256 = "19qfks2djya8vix95bmg3xzipjb8w9b8mbj4j5k2hqkc8j58f4z1";
210 };
210 };
211 meta = {
211 meta = {
212 license = [ pkgs.lib.licenses.mit ];
212 license = [ pkgs.lib.licenses.mit ];
213 };
213 };
214 };
214 };
215 "chameleon" = super.buildPythonPackage {
215 "chameleon" = super.buildPythonPackage {
216 name = "chameleon-2.24";
216 name = "chameleon-2.24";
217 doCheck = false;
217 doCheck = false;
218 src = fetchurl {
218 src = fetchurl {
219 url = "https://files.pythonhosted.org/packages/5a/9e/637379ffa13c5172b5c0e704833ffea6bf51cec7567f93fd6e903d53ed74/Chameleon-2.24.tar.gz";
219 url = "https://files.pythonhosted.org/packages/5a/9e/637379ffa13c5172b5c0e704833ffea6bf51cec7567f93fd6e903d53ed74/Chameleon-2.24.tar.gz";
220 sha256 = "0ykqr7syxfa6h9adjfnsv1gdsca2xzm22vmic8859n0f0j09abj5";
220 sha256 = "0ykqr7syxfa6h9adjfnsv1gdsca2xzm22vmic8859n0f0j09abj5";
221 };
221 };
222 meta = {
222 meta = {
223 license = [ { fullName = "BSD-like (http://repoze.org/license.html)"; } ];
223 license = [ { fullName = "BSD-like (http://repoze.org/license.html)"; } ];
224 };
224 };
225 };
225 };
226 "channelstream" = super.buildPythonPackage {
226 "channelstream" = super.buildPythonPackage {
227 name = "channelstream-0.5.2";
227 name = "channelstream-0.5.2";
228 doCheck = false;
228 doCheck = false;
229 propagatedBuildInputs = [
229 propagatedBuildInputs = [
230 self."gevent"
230 self."gevent"
231 self."ws4py"
231 self."ws4py"
232 self."pyramid"
232 self."pyramid"
233 self."pyramid-jinja2"
233 self."pyramid-jinja2"
234 self."itsdangerous"
234 self."itsdangerous"
235 self."requests"
235 self."requests"
236 self."six"
236 self."six"
237 ];
237 ];
238 src = fetchurl {
238 src = fetchurl {
239 url = "https://files.pythonhosted.org/packages/2b/31/29a8e085cf5bf97fa88e7b947adabfc581a18a3463adf77fb6dada34a65f/channelstream-0.5.2.tar.gz";
239 url = "https://files.pythonhosted.org/packages/2b/31/29a8e085cf5bf97fa88e7b947adabfc581a18a3463adf77fb6dada34a65f/channelstream-0.5.2.tar.gz";
240 sha256 = "1qbm4xdl5hfkja683x546bncg3rqq8qv79w1m1a1wd48cqqzb6rm";
240 sha256 = "1qbm4xdl5hfkja683x546bncg3rqq8qv79w1m1a1wd48cqqzb6rm";
241 };
241 };
242 meta = {
242 meta = {
243 license = [ pkgs.lib.licenses.bsdOriginal ];
243 license = [ pkgs.lib.licenses.bsdOriginal ];
244 };
244 };
245 };
245 };
246 "click" = super.buildPythonPackage {
246 "click" = super.buildPythonPackage {
247 name = "click-7.0";
247 name = "click-7.0";
248 doCheck = false;
248 doCheck = false;
249 src = fetchurl {
249 src = fetchurl {
250 url = "https://files.pythonhosted.org/packages/f8/5c/f60e9d8a1e77005f664b76ff8aeaee5bc05d0a91798afd7f53fc998dbc47/Click-7.0.tar.gz";
250 url = "https://files.pythonhosted.org/packages/f8/5c/f60e9d8a1e77005f664b76ff8aeaee5bc05d0a91798afd7f53fc998dbc47/Click-7.0.tar.gz";
251 sha256 = "1mzjixd4vjbjvzb6vylki9w1556a9qmdh35kzmq6cign46av952v";
251 sha256 = "1mzjixd4vjbjvzb6vylki9w1556a9qmdh35kzmq6cign46av952v";
252 };
252 };
253 meta = {
253 meta = {
254 license = [ pkgs.lib.licenses.bsdOriginal ];
254 license = [ pkgs.lib.licenses.bsdOriginal ];
255 };
255 };
256 };
256 };
257 "colander" = super.buildPythonPackage {
257 "colander" = super.buildPythonPackage {
258 name = "colander-1.7.0";
258 name = "colander-1.7.0";
259 doCheck = false;
259 doCheck = false;
260 propagatedBuildInputs = [
260 propagatedBuildInputs = [
261 self."translationstring"
261 self."translationstring"
262 self."iso8601"
262 self."iso8601"
263 self."enum34"
263 self."enum34"
264 ];
264 ];
265 src = fetchurl {
265 src = fetchurl {
266 url = "https://files.pythonhosted.org/packages/db/e4/74ab06f54211917b41865cafc987ce511e35503de48da9bfe9358a1bdc3e/colander-1.7.0.tar.gz";
266 url = "https://files.pythonhosted.org/packages/db/e4/74ab06f54211917b41865cafc987ce511e35503de48da9bfe9358a1bdc3e/colander-1.7.0.tar.gz";
267 sha256 = "1wl1bqab307lbbcjx81i28s3yl6dlm4rf15fxawkjb6j48x1cn6p";
267 sha256 = "1wl1bqab307lbbcjx81i28s3yl6dlm4rf15fxawkjb6j48x1cn6p";
268 };
268 };
269 meta = {
269 meta = {
270 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
270 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
271 };
271 };
272 };
272 };
273 "configobj" = super.buildPythonPackage {
273 "configobj" = super.buildPythonPackage {
274 name = "configobj-5.0.6";
274 name = "configobj-5.0.6";
275 doCheck = false;
275 doCheck = false;
276 propagatedBuildInputs = [
276 propagatedBuildInputs = [
277 self."six"
277 self."six"
278 ];
278 ];
279 src = fetchurl {
279 src = fetchurl {
280 url = "https://code.rhodecode.com/upstream/configobj/artifacts/download/0-012de99a-b1e1-4f64-a5c0-07a98a41b324.tar.gz?md5=6a513f51fe04b2c18cf84c1395a7c626";
280 url = "https://code.rhodecode.com/upstream/configobj/artifacts/download/0-012de99a-b1e1-4f64-a5c0-07a98a41b324.tar.gz?md5=6a513f51fe04b2c18cf84c1395a7c626";
281 sha256 = "0kqfrdfr14mw8yd8qwq14dv2xghpkjmd3yjsy8dfcbvpcc17xnxp";
281 sha256 = "0kqfrdfr14mw8yd8qwq14dv2xghpkjmd3yjsy8dfcbvpcc17xnxp";
282 };
282 };
283 meta = {
283 meta = {
284 license = [ pkgs.lib.licenses.bsdOriginal ];
284 license = [ pkgs.lib.licenses.bsdOriginal ];
285 };
285 };
286 };
286 };
287 "configparser" = super.buildPythonPackage {
287 "configparser" = super.buildPythonPackage {
288 name = "configparser-3.7.4";
288 name = "configparser-3.7.4";
289 doCheck = false;
289 doCheck = false;
290 src = fetchurl {
290 src = fetchurl {
291 url = "https://files.pythonhosted.org/packages/e2/1c/83fd53748d8245cb9a3399f705c251d3fc0ce7df04450aac1cfc49dd6a0f/configparser-3.7.4.tar.gz";
291 url = "https://files.pythonhosted.org/packages/e2/1c/83fd53748d8245cb9a3399f705c251d3fc0ce7df04450aac1cfc49dd6a0f/configparser-3.7.4.tar.gz";
292 sha256 = "0xac32886ihs2xg7w1gppcq2sgin5qsm8lqwijs5xifq9w0x0q6s";
292 sha256 = "0xac32886ihs2xg7w1gppcq2sgin5qsm8lqwijs5xifq9w0x0q6s";
293 };
293 };
294 meta = {
294 meta = {
295 license = [ pkgs.lib.licenses.mit ];
295 license = [ pkgs.lib.licenses.mit ];
296 };
296 };
297 };
297 };
298 "cov-core" = super.buildPythonPackage {
298 "cov-core" = super.buildPythonPackage {
299 name = "cov-core-1.15.0";
299 name = "cov-core-1.15.0";
300 doCheck = false;
300 doCheck = false;
301 propagatedBuildInputs = [
301 propagatedBuildInputs = [
302 self."coverage"
302 self."coverage"
303 ];
303 ];
304 src = fetchurl {
304 src = fetchurl {
305 url = "https://files.pythonhosted.org/packages/4b/87/13e75a47b4ba1be06f29f6d807ca99638bedc6b57fa491cd3de891ca2923/cov-core-1.15.0.tar.gz";
305 url = "https://files.pythonhosted.org/packages/4b/87/13e75a47b4ba1be06f29f6d807ca99638bedc6b57fa491cd3de891ca2923/cov-core-1.15.0.tar.gz";
306 sha256 = "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a";
306 sha256 = "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a";
307 };
307 };
308 meta = {
308 meta = {
309 license = [ pkgs.lib.licenses.mit ];
309 license = [ pkgs.lib.licenses.mit ];
310 };
310 };
311 };
311 };
312 "coverage" = super.buildPythonPackage {
312 "coverage" = super.buildPythonPackage {
313 name = "coverage-4.5.3";
313 name = "coverage-4.5.3";
314 doCheck = false;
314 doCheck = false;
315 src = fetchurl {
315 src = fetchurl {
316 url = "https://files.pythonhosted.org/packages/82/70/2280b5b29a0352519bb95ab0ef1ea942d40466ca71c53a2085bdeff7b0eb/coverage-4.5.3.tar.gz";
316 url = "https://files.pythonhosted.org/packages/82/70/2280b5b29a0352519bb95ab0ef1ea942d40466ca71c53a2085bdeff7b0eb/coverage-4.5.3.tar.gz";
317 sha256 = "02f6m073qdispn96rc616hg0rnmw1pgqzw3bgxwiwza4zf9hirlx";
317 sha256 = "02f6m073qdispn96rc616hg0rnmw1pgqzw3bgxwiwza4zf9hirlx";
318 };
318 };
319 meta = {
319 meta = {
320 license = [ pkgs.lib.licenses.asl20 ];
320 license = [ pkgs.lib.licenses.asl20 ];
321 };
321 };
322 };
322 };
323 "cryptography" = super.buildPythonPackage {
323 "cryptography" = super.buildPythonPackage {
324 name = "cryptography-2.6.1";
324 name = "cryptography-2.6.1";
325 doCheck = false;
325 doCheck = false;
326 propagatedBuildInputs = [
326 propagatedBuildInputs = [
327 self."asn1crypto"
327 self."asn1crypto"
328 self."six"
328 self."six"
329 self."cffi"
329 self."cffi"
330 self."enum34"
330 self."enum34"
331 self."ipaddress"
331 self."ipaddress"
332 ];
332 ];
333 src = fetchurl {
333 src = fetchurl {
334 url = "https://files.pythonhosted.org/packages/07/ca/bc827c5e55918ad223d59d299fff92f3563476c3b00d0a9157d9c0217449/cryptography-2.6.1.tar.gz";
334 url = "https://files.pythonhosted.org/packages/07/ca/bc827c5e55918ad223d59d299fff92f3563476c3b00d0a9157d9c0217449/cryptography-2.6.1.tar.gz";
335 sha256 = "19iwz5avym5zl6jrrrkym1rdaa9h61j20ph4cswsqgv8xg5j3j16";
335 sha256 = "19iwz5avym5zl6jrrrkym1rdaa9h61j20ph4cswsqgv8xg5j3j16";
336 };
336 };
337 meta = {
337 meta = {
338 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "BSD or Apache License, Version 2.0"; } pkgs.lib.licenses.asl20 ];
338 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "BSD or Apache License, Version 2.0"; } pkgs.lib.licenses.asl20 ];
339 };
339 };
340 };
340 };
341 "cssselect" = super.buildPythonPackage {
341 "cssselect" = super.buildPythonPackage {
342 name = "cssselect-1.0.3";
342 name = "cssselect-1.0.3";
343 doCheck = false;
343 doCheck = false;
344 src = fetchurl {
344 src = fetchurl {
345 url = "https://files.pythonhosted.org/packages/52/ea/f31e1d2e9eb130fda2a631e22eac369dc644e8807345fbed5113f2d6f92b/cssselect-1.0.3.tar.gz";
345 url = "https://files.pythonhosted.org/packages/52/ea/f31e1d2e9eb130fda2a631e22eac369dc644e8807345fbed5113f2d6f92b/cssselect-1.0.3.tar.gz";
346 sha256 = "011jqa2jhmydhi0iz4v1w3cr540z5zas8g2bw8brdw4s4b2qnv86";
346 sha256 = "011jqa2jhmydhi0iz4v1w3cr540z5zas8g2bw8brdw4s4b2qnv86";
347 };
347 };
348 meta = {
348 meta = {
349 license = [ pkgs.lib.licenses.bsdOriginal ];
349 license = [ pkgs.lib.licenses.bsdOriginal ];
350 };
350 };
351 };
351 };
352 "decorator" = super.buildPythonPackage {
352 "decorator" = super.buildPythonPackage {
353 name = "decorator-4.1.2";
353 name = "decorator-4.1.2";
354 doCheck = false;
354 doCheck = false;
355 src = fetchurl {
355 src = fetchurl {
356 url = "https://files.pythonhosted.org/packages/bb/e0/f6e41e9091e130bf16d4437dabbac3993908e4d6485ecbc985ef1352db94/decorator-4.1.2.tar.gz";
356 url = "https://files.pythonhosted.org/packages/bb/e0/f6e41e9091e130bf16d4437dabbac3993908e4d6485ecbc985ef1352db94/decorator-4.1.2.tar.gz";
357 sha256 = "1d8npb11kxyi36mrvjdpcjij76l5zfyrz2f820brf0l0rcw4vdkw";
357 sha256 = "1d8npb11kxyi36mrvjdpcjij76l5zfyrz2f820brf0l0rcw4vdkw";
358 };
358 };
359 meta = {
359 meta = {
360 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "new BSD License"; } ];
360 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "new BSD License"; } ];
361 };
361 };
362 };
362 };
363 "deform" = super.buildPythonPackage {
363 "deform" = super.buildPythonPackage {
364 name = "deform-2.0.7";
364 name = "deform-2.0.7";
365 doCheck = false;
365 doCheck = false;
366 propagatedBuildInputs = [
366 propagatedBuildInputs = [
367 self."chameleon"
367 self."chameleon"
368 self."colander"
368 self."colander"
369 self."iso8601"
369 self."iso8601"
370 self."peppercorn"
370 self."peppercorn"
371 self."translationstring"
371 self."translationstring"
372 self."zope.deprecation"
372 self."zope.deprecation"
373 ];
373 ];
374 src = fetchurl {
374 src = fetchurl {
375 url = "https://files.pythonhosted.org/packages/cf/a1/bc234527b8f181de9acd80e796483c00007658d1e32b7de78f1c2e004d9a/deform-2.0.7.tar.gz";
375 url = "https://files.pythonhosted.org/packages/cf/a1/bc234527b8f181de9acd80e796483c00007658d1e32b7de78f1c2e004d9a/deform-2.0.7.tar.gz";
376 sha256 = "0jnpi0zr2hjvbmiz6nm33yqv976dn9lf51vhlzqc0i75xcr9rwig";
376 sha256 = "0jnpi0zr2hjvbmiz6nm33yqv976dn9lf51vhlzqc0i75xcr9rwig";
377 };
377 };
378 meta = {
378 meta = {
379 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
379 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
380 };
380 };
381 };
381 };
382 "defusedxml" = super.buildPythonPackage {
382 "defusedxml" = super.buildPythonPackage {
383 name = "defusedxml-0.6.0";
383 name = "defusedxml-0.6.0";
384 doCheck = false;
384 doCheck = false;
385 src = fetchurl {
385 src = fetchurl {
386 url = "https://files.pythonhosted.org/packages/a4/5f/f8aa58ca0cf01cbcee728abc9d88bfeb74e95e6cb4334cfd5bed5673ea77/defusedxml-0.6.0.tar.gz";
386 url = "https://files.pythonhosted.org/packages/a4/5f/f8aa58ca0cf01cbcee728abc9d88bfeb74e95e6cb4334cfd5bed5673ea77/defusedxml-0.6.0.tar.gz";
387 sha256 = "1xbp8fivl3wlbyg2jrvs4lalaqv1xp9a9f29p75wdx2s2d6h717n";
387 sha256 = "1xbp8fivl3wlbyg2jrvs4lalaqv1xp9a9f29p75wdx2s2d6h717n";
388 };
388 };
389 meta = {
389 meta = {
390 license = [ pkgs.lib.licenses.psfl ];
390 license = [ pkgs.lib.licenses.psfl ];
391 };
391 };
392 };
392 };
393 "dm.xmlsec.binding" = super.buildPythonPackage {
393 "dm.xmlsec.binding" = super.buildPythonPackage {
394 name = "dm.xmlsec.binding-1.3.7";
394 name = "dm.xmlsec.binding-1.3.7";
395 doCheck = false;
395 doCheck = false;
396 propagatedBuildInputs = [
396 propagatedBuildInputs = [
397 self."setuptools"
397 self."setuptools"
398 self."lxml"
398 self."lxml"
399 ];
399 ];
400 src = fetchurl {
400 src = fetchurl {
401 url = "https://files.pythonhosted.org/packages/2c/9e/7651982d50252692991acdae614af821fd6c79bc8dcd598ad71d55be8fc7/dm.xmlsec.binding-1.3.7.tar.gz";
401 url = "https://files.pythonhosted.org/packages/2c/9e/7651982d50252692991acdae614af821fd6c79bc8dcd598ad71d55be8fc7/dm.xmlsec.binding-1.3.7.tar.gz";
402 sha256 = "03jjjscx1pz2nc0dwiw9nia02qbz1c6f0f9zkyr8fmvys2n5jkb3";
402 sha256 = "03jjjscx1pz2nc0dwiw9nia02qbz1c6f0f9zkyr8fmvys2n5jkb3";
403 };
403 };
404 meta = {
404 meta = {
405 license = [ pkgs.lib.licenses.bsdOriginal ];
405 license = [ pkgs.lib.licenses.bsdOriginal ];
406 };
406 };
407 };
407 };
408 "docutils" = super.buildPythonPackage {
408 "docutils" = super.buildPythonPackage {
409 name = "docutils-0.14";
409 name = "docutils-0.14";
410 doCheck = false;
410 doCheck = false;
411 src = fetchurl {
411 src = fetchurl {
412 url = "https://files.pythonhosted.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-0.14.tar.gz";
412 url = "https://files.pythonhosted.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-0.14.tar.gz";
413 sha256 = "0x22fs3pdmr42kvz6c654756wja305qv6cx1zbhwlagvxgr4xrji";
413 sha256 = "0x22fs3pdmr42kvz6c654756wja305qv6cx1zbhwlagvxgr4xrji";
414 };
414 };
415 meta = {
415 meta = {
416 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.publicDomain pkgs.lib.licenses.gpl1 { fullName = "public domain, Python, 2-Clause BSD, GPL 3 (see COPYING.txt)"; } pkgs.lib.licenses.psfl ];
416 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.publicDomain pkgs.lib.licenses.gpl1 { fullName = "public domain, Python, 2-Clause BSD, GPL 3 (see COPYING.txt)"; } pkgs.lib.licenses.psfl ];
417 };
417 };
418 };
418 };
419 "dogpile.cache" = super.buildPythonPackage {
419 "dogpile.cache" = super.buildPythonPackage {
420 name = "dogpile.cache-0.7.1";
420 name = "dogpile.cache-0.7.1";
421 doCheck = false;
421 doCheck = false;
422 propagatedBuildInputs = [
422 propagatedBuildInputs = [
423 self."decorator"
423 self."decorator"
424 ];
424 ];
425 src = fetchurl {
425 src = fetchurl {
426 url = "https://files.pythonhosted.org/packages/84/3e/dbf1cfc5228f1d3dca80ef714db2c5aaec5cd9efaf54d7e3daef6bc48b19/dogpile.cache-0.7.1.tar.gz";
426 url = "https://files.pythonhosted.org/packages/84/3e/dbf1cfc5228f1d3dca80ef714db2c5aaec5cd9efaf54d7e3daef6bc48b19/dogpile.cache-0.7.1.tar.gz";
427 sha256 = "0caazmrzhnfqb5yrp8myhw61ny637jj69wcngrpbvi31jlcpy6v9";
427 sha256 = "0caazmrzhnfqb5yrp8myhw61ny637jj69wcngrpbvi31jlcpy6v9";
428 };
428 };
429 meta = {
429 meta = {
430 license = [ pkgs.lib.licenses.bsdOriginal ];
430 license = [ pkgs.lib.licenses.bsdOriginal ];
431 };
431 };
432 };
432 };
433 "dogpile.core" = super.buildPythonPackage {
433 "dogpile.core" = super.buildPythonPackage {
434 name = "dogpile.core-0.4.1";
434 name = "dogpile.core-0.4.1";
435 doCheck = false;
435 doCheck = false;
436 src = fetchurl {
436 src = fetchurl {
437 url = "https://files.pythonhosted.org/packages/0e/77/e72abc04c22aedf874301861e5c1e761231c288b5de369c18be8f4b5c9bb/dogpile.core-0.4.1.tar.gz";
437 url = "https://files.pythonhosted.org/packages/0e/77/e72abc04c22aedf874301861e5c1e761231c288b5de369c18be8f4b5c9bb/dogpile.core-0.4.1.tar.gz";
438 sha256 = "0xpdvg4kr1isfkrh1rfsh7za4q5a5s6l2kf9wpvndbwf3aqjyrdy";
438 sha256 = "0xpdvg4kr1isfkrh1rfsh7za4q5a5s6l2kf9wpvndbwf3aqjyrdy";
439 };
439 };
440 meta = {
440 meta = {
441 license = [ pkgs.lib.licenses.bsdOriginal ];
441 license = [ pkgs.lib.licenses.bsdOriginal ];
442 };
442 };
443 };
443 };
444 "ecdsa" = super.buildPythonPackage {
444 "ecdsa" = super.buildPythonPackage {
445 name = "ecdsa-0.13";
445 name = "ecdsa-0.13";
446 doCheck = false;
446 doCheck = false;
447 src = fetchurl {
447 src = fetchurl {
448 url = "https://files.pythonhosted.org/packages/f9/e5/99ebb176e47f150ac115ffeda5fedb6a3dbb3c00c74a59fd84ddf12f5857/ecdsa-0.13.tar.gz";
448 url = "https://files.pythonhosted.org/packages/f9/e5/99ebb176e47f150ac115ffeda5fedb6a3dbb3c00c74a59fd84ddf12f5857/ecdsa-0.13.tar.gz";
449 sha256 = "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4";
449 sha256 = "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4";
450 };
450 };
451 meta = {
451 meta = {
452 license = [ pkgs.lib.licenses.mit ];
452 license = [ pkgs.lib.licenses.mit ];
453 };
453 };
454 };
454 };
455 "elasticsearch" = super.buildPythonPackage {
455 "elasticsearch" = super.buildPythonPackage {
456 name = "elasticsearch-6.3.1";
456 name = "elasticsearch-6.3.1";
457 doCheck = false;
457 doCheck = false;
458 propagatedBuildInputs = [
458 propagatedBuildInputs = [
459 self."urllib3"
459 self."urllib3"
460 ];
460 ];
461 src = fetchurl {
461 src = fetchurl {
462 url = "https://files.pythonhosted.org/packages/9d/ce/c4664e8380e379a9402ecfbaf158e56396da90d520daba21cfa840e0eb71/elasticsearch-6.3.1.tar.gz";
462 url = "https://files.pythonhosted.org/packages/9d/ce/c4664e8380e379a9402ecfbaf158e56396da90d520daba21cfa840e0eb71/elasticsearch-6.3.1.tar.gz";
463 sha256 = "12y93v0yn7a4xmf969239g8gb3l4cdkclfpbk1qc8hx5qkymrnma";
463 sha256 = "12y93v0yn7a4xmf969239g8gb3l4cdkclfpbk1qc8hx5qkymrnma";
464 };
464 };
465 meta = {
465 meta = {
466 license = [ pkgs.lib.licenses.asl20 ];
466 license = [ pkgs.lib.licenses.asl20 ];
467 };
467 };
468 };
468 };
469 "elasticsearch-dsl" = super.buildPythonPackage {
469 "elasticsearch-dsl" = super.buildPythonPackage {
470 name = "elasticsearch-dsl-6.3.1";
470 name = "elasticsearch-dsl-6.3.1";
471 doCheck = false;
471 doCheck = false;
472 propagatedBuildInputs = [
472 propagatedBuildInputs = [
473 self."six"
473 self."six"
474 self."python-dateutil"
474 self."python-dateutil"
475 self."elasticsearch"
475 self."elasticsearch"
476 self."ipaddress"
476 self."ipaddress"
477 ];
477 ];
478 src = fetchurl {
478 src = fetchurl {
479 url = "https://files.pythonhosted.org/packages/4c/0d/1549f50c591db6bb4e66cbcc8d34a6e537c3d89aa426b167c244fd46420a/elasticsearch-dsl-6.3.1.tar.gz";
479 url = "https://files.pythonhosted.org/packages/4c/0d/1549f50c591db6bb4e66cbcc8d34a6e537c3d89aa426b167c244fd46420a/elasticsearch-dsl-6.3.1.tar.gz";
480 sha256 = "1gh8a0shqi105k325hgwb9avrpdjh0mc6mxwfg9ba7g6lssb702z";
480 sha256 = "1gh8a0shqi105k325hgwb9avrpdjh0mc6mxwfg9ba7g6lssb702z";
481 };
481 };
482 meta = {
482 meta = {
483 license = [ pkgs.lib.licenses.asl20 ];
483 license = [ pkgs.lib.licenses.asl20 ];
484 };
484 };
485 };
485 };
486 "elasticsearch1" = super.buildPythonPackage {
486 "elasticsearch1" = super.buildPythonPackage {
487 name = "elasticsearch1-1.10.0";
487 name = "elasticsearch1-1.10.0";
488 doCheck = false;
488 doCheck = false;
489 propagatedBuildInputs = [
489 propagatedBuildInputs = [
490 self."urllib3"
490 self."urllib3"
491 ];
491 ];
492 src = fetchurl {
492 src = fetchurl {
493 url = "https://files.pythonhosted.org/packages/a6/eb/73e75f9681fa71e3157b8ee878534235d57f24ee64f0e77f8d995fb57076/elasticsearch1-1.10.0.tar.gz";
493 url = "https://files.pythonhosted.org/packages/a6/eb/73e75f9681fa71e3157b8ee878534235d57f24ee64f0e77f8d995fb57076/elasticsearch1-1.10.0.tar.gz";
494 sha256 = "0g89444kd5zwql4vbvyrmi2m6l6dcj6ga98j4hqxyyyz6z20aki2";
494 sha256 = "0g89444kd5zwql4vbvyrmi2m6l6dcj6ga98j4hqxyyyz6z20aki2";
495 };
495 };
496 meta = {
496 meta = {
497 license = [ pkgs.lib.licenses.asl20 ];
497 license = [ pkgs.lib.licenses.asl20 ];
498 };
498 };
499 };
499 };
500 "elasticsearch1-dsl" = super.buildPythonPackage {
500 "elasticsearch1-dsl" = super.buildPythonPackage {
501 name = "elasticsearch1-dsl-0.0.12";
501 name = "elasticsearch1-dsl-0.0.12";
502 doCheck = false;
502 doCheck = false;
503 propagatedBuildInputs = [
503 propagatedBuildInputs = [
504 self."six"
504 self."six"
505 self."python-dateutil"
505 self."python-dateutil"
506 self."elasticsearch1"
506 self."elasticsearch1"
507 ];
507 ];
508 src = fetchurl {
508 src = fetchurl {
509 url = "https://files.pythonhosted.org/packages/eb/9d/785342775cb10eddc9b8d7457d618a423b4f0b89d8b2b2d1bc27190d71db/elasticsearch1-dsl-0.0.12.tar.gz";
509 url = "https://files.pythonhosted.org/packages/eb/9d/785342775cb10eddc9b8d7457d618a423b4f0b89d8b2b2d1bc27190d71db/elasticsearch1-dsl-0.0.12.tar.gz";
510 sha256 = "0ig1ly39v93hba0z975wnhbmzwj28w6w1sqlr2g7cn5spp732bhk";
510 sha256 = "0ig1ly39v93hba0z975wnhbmzwj28w6w1sqlr2g7cn5spp732bhk";
511 };
511 };
512 meta = {
512 meta = {
513 license = [ pkgs.lib.licenses.asl20 ];
513 license = [ pkgs.lib.licenses.asl20 ];
514 };
514 };
515 };
515 };
516 "elasticsearch2" = super.buildPythonPackage {
516 "elasticsearch2" = super.buildPythonPackage {
517 name = "elasticsearch2-2.5.0";
517 name = "elasticsearch2-2.5.0";
518 doCheck = false;
518 doCheck = false;
519 propagatedBuildInputs = [
519 propagatedBuildInputs = [
520 self."urllib3"
520 self."urllib3"
521 ];
521 ];
522 src = fetchurl {
522 src = fetchurl {
523 url = "https://files.pythonhosted.org/packages/84/77/63cf63d4ba11d913b5278406f2a37b0712bec6fc85edfb6151a33eaeba25/elasticsearch2-2.5.0.tar.gz";
523 url = "https://files.pythonhosted.org/packages/84/77/63cf63d4ba11d913b5278406f2a37b0712bec6fc85edfb6151a33eaeba25/elasticsearch2-2.5.0.tar.gz";
524 sha256 = "0ky0q16lbvz022yv6q3pix7aamf026p1y994537ccjf0p0dxnbxr";
524 sha256 = "0ky0q16lbvz022yv6q3pix7aamf026p1y994537ccjf0p0dxnbxr";
525 };
525 };
526 meta = {
526 meta = {
527 license = [ pkgs.lib.licenses.asl20 ];
527 license = [ pkgs.lib.licenses.asl20 ];
528 };
528 };
529 };
529 };
530 "entrypoints" = super.buildPythonPackage {
530 "entrypoints" = super.buildPythonPackage {
531 name = "entrypoints-0.2.2";
531 name = "entrypoints-0.2.2";
532 doCheck = false;
532 doCheck = false;
533 propagatedBuildInputs = [
533 propagatedBuildInputs = [
534 self."configparser"
534 self."configparser"
535 ];
535 ];
536 src = fetchurl {
536 src = fetchurl {
537 url = "https://code.rhodecode.com/upstream/entrypoints/artifacts/download/0-8e9ee9e4-c4db-409c-b07e-81568fd1832d.tar.gz?md5=3a027b8ff1d257b91fe257de6c43357d";
537 url = "https://code.rhodecode.com/upstream/entrypoints/artifacts/download/0-8e9ee9e4-c4db-409c-b07e-81568fd1832d.tar.gz?md5=3a027b8ff1d257b91fe257de6c43357d";
538 sha256 = "0qih72n2myclanplqipqxpgpj9d2yhff1pz5d02zq1cfqyd173w5";
538 sha256 = "0qih72n2myclanplqipqxpgpj9d2yhff1pz5d02zq1cfqyd173w5";
539 };
539 };
540 meta = {
540 meta = {
541 license = [ pkgs.lib.licenses.mit ];
541 license = [ pkgs.lib.licenses.mit ];
542 };
542 };
543 };
543 };
544 "enum34" = super.buildPythonPackage {
544 "enum34" = super.buildPythonPackage {
545 name = "enum34-1.1.6";
545 name = "enum34-1.1.6";
546 doCheck = false;
546 doCheck = false;
547 src = fetchurl {
547 src = fetchurl {
548 url = "https://files.pythonhosted.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz";
548 url = "https://files.pythonhosted.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz";
549 sha256 = "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a";
549 sha256 = "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a";
550 };
550 };
551 meta = {
551 meta = {
552 license = [ pkgs.lib.licenses.bsdOriginal ];
552 license = [ pkgs.lib.licenses.bsdOriginal ];
553 };
553 };
554 };
554 };
555 "formencode" = super.buildPythonPackage {
555 "formencode" = super.buildPythonPackage {
556 name = "formencode-1.2.4";
556 name = "formencode-1.2.4";
557 doCheck = false;
557 doCheck = false;
558 src = fetchurl {
558 src = fetchurl {
559 url = "https://files.pythonhosted.org/packages/8e/59/0174271a6f004512e0201188593e6d319db139d14cb7490e488bbb078015/FormEncode-1.2.4.tar.gz";
559 url = "https://files.pythonhosted.org/packages/8e/59/0174271a6f004512e0201188593e6d319db139d14cb7490e488bbb078015/FormEncode-1.2.4.tar.gz";
560 sha256 = "1fgy04sdy4yry5xcjls3x3xy30dqwj58ycnkndim819jx0788w42";
560 sha256 = "1fgy04sdy4yry5xcjls3x3xy30dqwj58ycnkndim819jx0788w42";
561 };
561 };
562 meta = {
562 meta = {
563 license = [ pkgs.lib.licenses.psfl ];
563 license = [ pkgs.lib.licenses.psfl ];
564 };
564 };
565 };
565 };
566 "funcsigs" = super.buildPythonPackage {
566 "funcsigs" = super.buildPythonPackage {
567 name = "funcsigs-1.0.2";
567 name = "funcsigs-1.0.2";
568 doCheck = false;
568 doCheck = false;
569 src = fetchurl {
569 src = fetchurl {
570 url = "https://files.pythonhosted.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz";
570 url = "https://files.pythonhosted.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz";
571 sha256 = "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7";
571 sha256 = "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7";
572 };
572 };
573 meta = {
573 meta = {
574 license = [ { fullName = "ASL"; } pkgs.lib.licenses.asl20 ];
574 license = [ { fullName = "ASL"; } pkgs.lib.licenses.asl20 ];
575 };
575 };
576 };
576 };
577 "functools32" = super.buildPythonPackage {
577 "functools32" = super.buildPythonPackage {
578 name = "functools32-3.2.3.post2";
578 name = "functools32-3.2.3.post2";
579 doCheck = false;
579 doCheck = false;
580 src = fetchurl {
580 src = fetchurl {
581 url = "https://files.pythonhosted.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db/functools32-3.2.3-2.tar.gz";
581 url = "https://files.pythonhosted.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db/functools32-3.2.3-2.tar.gz";
582 sha256 = "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn";
582 sha256 = "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn";
583 };
583 };
584 meta = {
584 meta = {
585 license = [ pkgs.lib.licenses.psfl ];
585 license = [ pkgs.lib.licenses.psfl ];
586 };
586 };
587 };
587 };
588 "future" = super.buildPythonPackage {
588 "future" = super.buildPythonPackage {
589 name = "future-0.14.3";
589 name = "future-0.14.3";
590 doCheck = false;
590 doCheck = false;
591 src = fetchurl {
591 src = fetchurl {
592 url = "https://files.pythonhosted.org/packages/83/80/8ef3a11a15f8eaafafa0937b20c1b3f73527e69ab6b3fa1cf94a5a96aabb/future-0.14.3.tar.gz";
592 url = "https://files.pythonhosted.org/packages/83/80/8ef3a11a15f8eaafafa0937b20c1b3f73527e69ab6b3fa1cf94a5a96aabb/future-0.14.3.tar.gz";
593 sha256 = "1savk7jx7hal032f522c5ajhh8fra6gmnadrj9adv5qxi18pv1b2";
593 sha256 = "1savk7jx7hal032f522c5ajhh8fra6gmnadrj9adv5qxi18pv1b2";
594 };
594 };
595 meta = {
595 meta = {
596 license = [ { fullName = "OSI Approved"; } pkgs.lib.licenses.mit ];
596 license = [ { fullName = "OSI Approved"; } pkgs.lib.licenses.mit ];
597 };
597 };
598 };
598 };
599 "futures" = super.buildPythonPackage {
599 "futures" = super.buildPythonPackage {
600 name = "futures-3.0.2";
600 name = "futures-3.0.2";
601 doCheck = false;
601 doCheck = false;
602 src = fetchurl {
602 src = fetchurl {
603 url = "https://files.pythonhosted.org/packages/f8/e7/fc0fcbeb9193ba2d4de00b065e7fd5aecd0679e93ce95a07322b2b1434f4/futures-3.0.2.tar.gz";
603 url = "https://files.pythonhosted.org/packages/f8/e7/fc0fcbeb9193ba2d4de00b065e7fd5aecd0679e93ce95a07322b2b1434f4/futures-3.0.2.tar.gz";
604 sha256 = "0mz2pbgxbc2nbib1szifi07whjbfs4r02pv2z390z7p410awjgyw";
604 sha256 = "0mz2pbgxbc2nbib1szifi07whjbfs4r02pv2z390z7p410awjgyw";
605 };
605 };
606 meta = {
606 meta = {
607 license = [ pkgs.lib.licenses.bsdOriginal ];
607 license = [ pkgs.lib.licenses.bsdOriginal ];
608 };
608 };
609 };
609 };
610 "gevent" = super.buildPythonPackage {
610 "gevent" = super.buildPythonPackage {
611 name = "gevent-1.4.0";
611 name = "gevent-1.4.0";
612 doCheck = false;
612 doCheck = false;
613 propagatedBuildInputs = [
613 propagatedBuildInputs = [
614 self."greenlet"
614 self."greenlet"
615 ];
615 ];
616 src = fetchurl {
616 src = fetchurl {
617 url = "https://files.pythonhosted.org/packages/ed/27/6c49b70808f569b66ec7fac2e78f076e9b204db9cf5768740cff3d5a07ae/gevent-1.4.0.tar.gz";
617 url = "https://files.pythonhosted.org/packages/ed/27/6c49b70808f569b66ec7fac2e78f076e9b204db9cf5768740cff3d5a07ae/gevent-1.4.0.tar.gz";
618 sha256 = "1lchr4akw2jkm5v4kz7bdm4wv3knkfhbfn9vkkz4s5yrkcxzmdqy";
618 sha256 = "1lchr4akw2jkm5v4kz7bdm4wv3knkfhbfn9vkkz4s5yrkcxzmdqy";
619 };
619 };
620 meta = {
620 meta = {
621 license = [ pkgs.lib.licenses.mit ];
621 license = [ pkgs.lib.licenses.mit ];
622 };
622 };
623 };
623 };
624 "gnureadline" = super.buildPythonPackage {
624 "gnureadline" = super.buildPythonPackage {
625 name = "gnureadline-6.3.8";
625 name = "gnureadline-6.3.8";
626 doCheck = false;
626 doCheck = false;
627 src = fetchurl {
627 src = fetchurl {
628 url = "https://files.pythonhosted.org/packages/50/64/86085c823cd78f9df9d8e33dce0baa71618016f8860460b82cf6610e1eb3/gnureadline-6.3.8.tar.gz";
628 url = "https://files.pythonhosted.org/packages/50/64/86085c823cd78f9df9d8e33dce0baa71618016f8860460b82cf6610e1eb3/gnureadline-6.3.8.tar.gz";
629 sha256 = "0ddhj98x2nv45iz4aadk4b9m0b1kpsn1xhcbypn5cd556knhiqjq";
629 sha256 = "0ddhj98x2nv45iz4aadk4b9m0b1kpsn1xhcbypn5cd556knhiqjq";
630 };
630 };
631 meta = {
631 meta = {
632 license = [ { fullName = "GNU General Public License v3 (GPLv3)"; } pkgs.lib.licenses.gpl1 ];
632 license = [ { fullName = "GNU General Public License v3 (GPLv3)"; } pkgs.lib.licenses.gpl1 ];
633 };
633 };
634 };
634 };
635 "gprof2dot" = super.buildPythonPackage {
635 "gprof2dot" = super.buildPythonPackage {
636 name = "gprof2dot-2017.9.19";
636 name = "gprof2dot-2017.9.19";
637 doCheck = false;
637 doCheck = false;
638 src = fetchurl {
638 src = fetchurl {
639 url = "https://files.pythonhosted.org/packages/9d/36/f977122502979f3dfb50704979c9ed70e6b620787942b089bf1af15f5aba/gprof2dot-2017.9.19.tar.gz";
639 url = "https://files.pythonhosted.org/packages/9d/36/f977122502979f3dfb50704979c9ed70e6b620787942b089bf1af15f5aba/gprof2dot-2017.9.19.tar.gz";
640 sha256 = "17ih23ld2nzgc3xwgbay911l6lh96jp1zshmskm17n1gg2i7mg6f";
640 sha256 = "17ih23ld2nzgc3xwgbay911l6lh96jp1zshmskm17n1gg2i7mg6f";
641 };
641 };
642 meta = {
642 meta = {
643 license = [ { fullName = "GNU Lesser General Public License v3 or later (LGPLv3+)"; } { fullName = "LGPL"; } ];
643 license = [ { fullName = "GNU Lesser General Public License v3 or later (LGPLv3+)"; } { fullName = "LGPL"; } ];
644 };
644 };
645 };
645 };
646 "greenlet" = super.buildPythonPackage {
646 "greenlet" = super.buildPythonPackage {
647 name = "greenlet-0.4.15";
647 name = "greenlet-0.4.15";
648 doCheck = false;
648 doCheck = false;
649 src = fetchurl {
649 src = fetchurl {
650 url = "https://files.pythonhosted.org/packages/f8/e8/b30ae23b45f69aa3f024b46064c0ac8e5fcb4f22ace0dca8d6f9c8bbe5e7/greenlet-0.4.15.tar.gz";
650 url = "https://files.pythonhosted.org/packages/f8/e8/b30ae23b45f69aa3f024b46064c0ac8e5fcb4f22ace0dca8d6f9c8bbe5e7/greenlet-0.4.15.tar.gz";
651 sha256 = "1g4g1wwc472ds89zmqlpyan3fbnzpa8qm48z3z1y6mlk44z485ll";
651 sha256 = "1g4g1wwc472ds89zmqlpyan3fbnzpa8qm48z3z1y6mlk44z485ll";
652 };
652 };
653 meta = {
653 meta = {
654 license = [ pkgs.lib.licenses.mit ];
654 license = [ pkgs.lib.licenses.mit ];
655 };
655 };
656 };
656 };
657 "gunicorn" = super.buildPythonPackage {
657 "gunicorn" = super.buildPythonPackage {
658 name = "gunicorn-19.9.0";
658 name = "gunicorn-19.9.0";
659 doCheck = false;
659 doCheck = false;
660 src = fetchurl {
660 src = fetchurl {
661 url = "https://files.pythonhosted.org/packages/47/52/68ba8e5e8ba251e54006a49441f7ccabca83b6bef5aedacb4890596c7911/gunicorn-19.9.0.tar.gz";
661 url = "https://files.pythonhosted.org/packages/47/52/68ba8e5e8ba251e54006a49441f7ccabca83b6bef5aedacb4890596c7911/gunicorn-19.9.0.tar.gz";
662 sha256 = "1wzlf4xmn6qjirh5w81l6i6kqjnab1n1qqkh7zsj1yb6gh4n49ps";
662 sha256 = "1wzlf4xmn6qjirh5w81l6i6kqjnab1n1qqkh7zsj1yb6gh4n49ps";
663 };
663 };
664 meta = {
664 meta = {
665 license = [ pkgs.lib.licenses.mit ];
665 license = [ pkgs.lib.licenses.mit ];
666 };
666 };
667 };
667 };
668 "hupper" = super.buildPythonPackage {
668 "hupper" = super.buildPythonPackage {
669 name = "hupper-1.6.1";
669 name = "hupper-1.6.1";
670 doCheck = false;
670 doCheck = false;
671 src = fetchurl {
671 src = fetchurl {
672 url = "https://files.pythonhosted.org/packages/85/d9/e005d357b11249c5d70ddf5b7adab2e4c0da4e8b0531ff146917a04fe6c0/hupper-1.6.1.tar.gz";
672 url = "https://files.pythonhosted.org/packages/85/d9/e005d357b11249c5d70ddf5b7adab2e4c0da4e8b0531ff146917a04fe6c0/hupper-1.6.1.tar.gz";
673 sha256 = "0d3cvkc8ssgwk54wvhbifj56ry97qi10pfzwfk8vwzzcikbfp3zy";
673 sha256 = "0d3cvkc8ssgwk54wvhbifj56ry97qi10pfzwfk8vwzzcikbfp3zy";
674 };
674 };
675 meta = {
675 meta = {
676 license = [ pkgs.lib.licenses.mit ];
676 license = [ pkgs.lib.licenses.mit ];
677 };
677 };
678 };
678 };
679 "infrae.cache" = super.buildPythonPackage {
679 "infrae.cache" = super.buildPythonPackage {
680 name = "infrae.cache-1.0.1";
680 name = "infrae.cache-1.0.1";
681 doCheck = false;
681 doCheck = false;
682 propagatedBuildInputs = [
682 propagatedBuildInputs = [
683 self."beaker"
683 self."beaker"
684 self."repoze.lru"
684 self."repoze.lru"
685 ];
685 ];
686 src = fetchurl {
686 src = fetchurl {
687 url = "https://files.pythonhosted.org/packages/bb/f0/e7d5e984cf6592fd2807dc7bc44a93f9d18e04e6a61f87fdfb2622422d74/infrae.cache-1.0.1.tar.gz";
687 url = "https://files.pythonhosted.org/packages/bb/f0/e7d5e984cf6592fd2807dc7bc44a93f9d18e04e6a61f87fdfb2622422d74/infrae.cache-1.0.1.tar.gz";
688 sha256 = "1dvqsjn8vw253wz9d1pz17j79mf4bs53dvp2qxck2qdp1am1njw4";
688 sha256 = "1dvqsjn8vw253wz9d1pz17j79mf4bs53dvp2qxck2qdp1am1njw4";
689 };
689 };
690 meta = {
690 meta = {
691 license = [ pkgs.lib.licenses.zpl21 ];
691 license = [ pkgs.lib.licenses.zpl21 ];
692 };
692 };
693 };
693 };
694 "invoke" = super.buildPythonPackage {
694 "invoke" = super.buildPythonPackage {
695 name = "invoke-0.13.0";
695 name = "invoke-0.13.0";
696 doCheck = false;
696 doCheck = false;
697 src = fetchurl {
697 src = fetchurl {
698 url = "https://files.pythonhosted.org/packages/47/bf/d07ef52fa1ac645468858bbac7cb95b246a972a045e821493d17d89c81be/invoke-0.13.0.tar.gz";
698 url = "https://files.pythonhosted.org/packages/47/bf/d07ef52fa1ac645468858bbac7cb95b246a972a045e821493d17d89c81be/invoke-0.13.0.tar.gz";
699 sha256 = "0794vhgxfmkh0vzkkg5cfv1w82g3jc3xr18wim29far9qpx9468s";
699 sha256 = "0794vhgxfmkh0vzkkg5cfv1w82g3jc3xr18wim29far9qpx9468s";
700 };
700 };
701 meta = {
701 meta = {
702 license = [ pkgs.lib.licenses.bsdOriginal ];
702 license = [ pkgs.lib.licenses.bsdOriginal ];
703 };
703 };
704 };
704 };
705 "ipaddress" = super.buildPythonPackage {
705 "ipaddress" = super.buildPythonPackage {
706 name = "ipaddress-1.0.22";
706 name = "ipaddress-1.0.22";
707 doCheck = false;
707 doCheck = false;
708 src = fetchurl {
708 src = fetchurl {
709 url = "https://files.pythonhosted.org/packages/97/8d/77b8cedcfbf93676148518036c6b1ce7f8e14bf07e95d7fd4ddcb8cc052f/ipaddress-1.0.22.tar.gz";
709 url = "https://files.pythonhosted.org/packages/97/8d/77b8cedcfbf93676148518036c6b1ce7f8e14bf07e95d7fd4ddcb8cc052f/ipaddress-1.0.22.tar.gz";
710 sha256 = "0b570bm6xqpjwqis15pvdy6lyvvzfndjvkynilcddjj5x98wfimi";
710 sha256 = "0b570bm6xqpjwqis15pvdy6lyvvzfndjvkynilcddjj5x98wfimi";
711 };
711 };
712 meta = {
712 meta = {
713 license = [ pkgs.lib.licenses.psfl ];
713 license = [ pkgs.lib.licenses.psfl ];
714 };
714 };
715 };
715 };
716 "ipdb" = super.buildPythonPackage {
716 "ipdb" = super.buildPythonPackage {
717 name = "ipdb-0.12";
717 name = "ipdb-0.12";
718 doCheck = false;
718 doCheck = false;
719 propagatedBuildInputs = [
719 propagatedBuildInputs = [
720 self."setuptools"
720 self."setuptools"
721 self."ipython"
721 self."ipython"
722 ];
722 ];
723 src = fetchurl {
723 src = fetchurl {
724 url = "https://files.pythonhosted.org/packages/6d/43/c3c2e866a8803e196d6209595020a4a6db1a3c5d07c01455669497ae23d0/ipdb-0.12.tar.gz";
724 url = "https://files.pythonhosted.org/packages/6d/43/c3c2e866a8803e196d6209595020a4a6db1a3c5d07c01455669497ae23d0/ipdb-0.12.tar.gz";
725 sha256 = "1khr2n7xfy8hg65kj1bsrjq9g7656pp0ybfa8abpbzpdawji3qnw";
725 sha256 = "1khr2n7xfy8hg65kj1bsrjq9g7656pp0ybfa8abpbzpdawji3qnw";
726 };
726 };
727 meta = {
727 meta = {
728 license = [ pkgs.lib.licenses.bsdOriginal ];
728 license = [ pkgs.lib.licenses.bsdOriginal ];
729 };
729 };
730 };
730 };
731 "ipython" = super.buildPythonPackage {
731 "ipython" = super.buildPythonPackage {
732 name = "ipython-5.1.0";
732 name = "ipython-5.1.0";
733 doCheck = false;
733 doCheck = false;
734 propagatedBuildInputs = [
734 propagatedBuildInputs = [
735 self."setuptools"
735 self."setuptools"
736 self."decorator"
736 self."decorator"
737 self."pickleshare"
737 self."pickleshare"
738 self."simplegeneric"
738 self."simplegeneric"
739 self."traitlets"
739 self."traitlets"
740 self."prompt-toolkit"
740 self."prompt-toolkit"
741 self."pygments"
741 self."pygments"
742 self."pexpect"
742 self."pexpect"
743 self."backports.shutil-get-terminal-size"
743 self."backports.shutil-get-terminal-size"
744 self."pathlib2"
744 self."pathlib2"
745 self."pexpect"
745 self."pexpect"
746 ];
746 ];
747 src = fetchurl {
747 src = fetchurl {
748 url = "https://files.pythonhosted.org/packages/89/63/a9292f7cd9d0090a0f995e1167f3f17d5889dcbc9a175261719c513b9848/ipython-5.1.0.tar.gz";
748 url = "https://files.pythonhosted.org/packages/89/63/a9292f7cd9d0090a0f995e1167f3f17d5889dcbc9a175261719c513b9848/ipython-5.1.0.tar.gz";
749 sha256 = "0qdrf6aj9kvjczd5chj1my8y2iq09am9l8bb2a1334a52d76kx3y";
749 sha256 = "0qdrf6aj9kvjczd5chj1my8y2iq09am9l8bb2a1334a52d76kx3y";
750 };
750 };
751 meta = {
751 meta = {
752 license = [ pkgs.lib.licenses.bsdOriginal ];
752 license = [ pkgs.lib.licenses.bsdOriginal ];
753 };
753 };
754 };
754 };
755 "ipython-genutils" = super.buildPythonPackage {
755 "ipython-genutils" = super.buildPythonPackage {
756 name = "ipython-genutils-0.2.0";
756 name = "ipython-genutils-0.2.0";
757 doCheck = false;
757 doCheck = false;
758 src = fetchurl {
758 src = fetchurl {
759 url = "https://files.pythonhosted.org/packages/e8/69/fbeffffc05236398ebfcfb512b6d2511c622871dca1746361006da310399/ipython_genutils-0.2.0.tar.gz";
759 url = "https://files.pythonhosted.org/packages/e8/69/fbeffffc05236398ebfcfb512b6d2511c622871dca1746361006da310399/ipython_genutils-0.2.0.tar.gz";
760 sha256 = "1a4bc9y8hnvq6cp08qs4mckgm6i6ajpndp4g496rvvzcfmp12bpb";
760 sha256 = "1a4bc9y8hnvq6cp08qs4mckgm6i6ajpndp4g496rvvzcfmp12bpb";
761 };
761 };
762 meta = {
762 meta = {
763 license = [ pkgs.lib.licenses.bsdOriginal ];
763 license = [ pkgs.lib.licenses.bsdOriginal ];
764 };
764 };
765 };
765 };
766 "iso8601" = super.buildPythonPackage {
766 "iso8601" = super.buildPythonPackage {
767 name = "iso8601-0.1.12";
767 name = "iso8601-0.1.12";
768 doCheck = false;
768 doCheck = false;
769 src = fetchurl {
769 src = fetchurl {
770 url = "https://files.pythonhosted.org/packages/45/13/3db24895497345fb44c4248c08b16da34a9eb02643cea2754b21b5ed08b0/iso8601-0.1.12.tar.gz";
770 url = "https://files.pythonhosted.org/packages/45/13/3db24895497345fb44c4248c08b16da34a9eb02643cea2754b21b5ed08b0/iso8601-0.1.12.tar.gz";
771 sha256 = "10nyvvnrhw2w3p09v1ica4lgj6f4g9j3kkfx17qmraiq3w7b5i29";
771 sha256 = "10nyvvnrhw2w3p09v1ica4lgj6f4g9j3kkfx17qmraiq3w7b5i29";
772 };
772 };
773 meta = {
773 meta = {
774 license = [ pkgs.lib.licenses.mit ];
774 license = [ pkgs.lib.licenses.mit ];
775 };
775 };
776 };
776 };
777 "isodate" = super.buildPythonPackage {
777 "isodate" = super.buildPythonPackage {
778 name = "isodate-0.6.0";
778 name = "isodate-0.6.0";
779 doCheck = false;
779 doCheck = false;
780 propagatedBuildInputs = [
780 propagatedBuildInputs = [
781 self."six"
781 self."six"
782 ];
782 ];
783 src = fetchurl {
783 src = fetchurl {
784 url = "https://files.pythonhosted.org/packages/b1/80/fb8c13a4cd38eb5021dc3741a9e588e4d1de88d895c1910c6fc8a08b7a70/isodate-0.6.0.tar.gz";
784 url = "https://files.pythonhosted.org/packages/b1/80/fb8c13a4cd38eb5021dc3741a9e588e4d1de88d895c1910c6fc8a08b7a70/isodate-0.6.0.tar.gz";
785 sha256 = "1n7jkz68kk5pwni540pr5zdh99bf6ywydk1p5pdrqisrawylldif";
785 sha256 = "1n7jkz68kk5pwni540pr5zdh99bf6ywydk1p5pdrqisrawylldif";
786 };
786 };
787 meta = {
787 meta = {
788 license = [ pkgs.lib.licenses.bsdOriginal ];
788 license = [ pkgs.lib.licenses.bsdOriginal ];
789 };
789 };
790 };
790 };
791 "itsdangerous" = super.buildPythonPackage {
791 "itsdangerous" = super.buildPythonPackage {
792 name = "itsdangerous-0.24";
792 name = "itsdangerous-0.24";
793 doCheck = false;
793 doCheck = false;
794 src = fetchurl {
794 src = fetchurl {
795 url = "https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz";
795 url = "https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz";
796 sha256 = "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb";
796 sha256 = "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb";
797 };
797 };
798 meta = {
798 meta = {
799 license = [ pkgs.lib.licenses.bsdOriginal ];
799 license = [ pkgs.lib.licenses.bsdOriginal ];
800 };
800 };
801 };
801 };
802 "jinja2" = super.buildPythonPackage {
802 "jinja2" = super.buildPythonPackage {
803 name = "jinja2-2.9.6";
803 name = "jinja2-2.9.6";
804 doCheck = false;
804 doCheck = false;
805 propagatedBuildInputs = [
805 propagatedBuildInputs = [
806 self."markupsafe"
806 self."markupsafe"
807 ];
807 ];
808 src = fetchurl {
808 src = fetchurl {
809 url = "https://files.pythonhosted.org/packages/90/61/f820ff0076a2599dd39406dcb858ecb239438c02ce706c8e91131ab9c7f1/Jinja2-2.9.6.tar.gz";
809 url = "https://files.pythonhosted.org/packages/90/61/f820ff0076a2599dd39406dcb858ecb239438c02ce706c8e91131ab9c7f1/Jinja2-2.9.6.tar.gz";
810 sha256 = "1zzrkywhziqffrzks14kzixz7nd4yh2vc0fb04a68vfd2ai03anx";
810 sha256 = "1zzrkywhziqffrzks14kzixz7nd4yh2vc0fb04a68vfd2ai03anx";
811 };
811 };
812 meta = {
812 meta = {
813 license = [ pkgs.lib.licenses.bsdOriginal ];
813 license = [ pkgs.lib.licenses.bsdOriginal ];
814 };
814 };
815 };
815 };
816 "jsonschema" = super.buildPythonPackage {
816 "jsonschema" = super.buildPythonPackage {
817 name = "jsonschema-2.6.0";
817 name = "jsonschema-2.6.0";
818 doCheck = false;
818 doCheck = false;
819 propagatedBuildInputs = [
819 propagatedBuildInputs = [
820 self."functools32"
820 self."functools32"
821 ];
821 ];
822 src = fetchurl {
822 src = fetchurl {
823 url = "https://files.pythonhosted.org/packages/58/b9/171dbb07e18c6346090a37f03c7e74410a1a56123f847efed59af260a298/jsonschema-2.6.0.tar.gz";
823 url = "https://files.pythonhosted.org/packages/58/b9/171dbb07e18c6346090a37f03c7e74410a1a56123f847efed59af260a298/jsonschema-2.6.0.tar.gz";
824 sha256 = "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg";
824 sha256 = "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg";
825 };
825 };
826 meta = {
826 meta = {
827 license = [ pkgs.lib.licenses.mit ];
827 license = [ pkgs.lib.licenses.mit ];
828 };
828 };
829 };
829 };
830 "jupyter-client" = super.buildPythonPackage {
830 "jupyter-client" = super.buildPythonPackage {
831 name = "jupyter-client-5.0.0";
831 name = "jupyter-client-5.0.0";
832 doCheck = false;
832 doCheck = false;
833 propagatedBuildInputs = [
833 propagatedBuildInputs = [
834 self."traitlets"
834 self."traitlets"
835 self."jupyter-core"
835 self."jupyter-core"
836 self."pyzmq"
836 self."pyzmq"
837 self."python-dateutil"
837 self."python-dateutil"
838 ];
838 ];
839 src = fetchurl {
839 src = fetchurl {
840 url = "https://files.pythonhosted.org/packages/e5/6f/65412ed462202b90134b7e761b0b7e7f949e07a549c1755475333727b3d0/jupyter_client-5.0.0.tar.gz";
840 url = "https://files.pythonhosted.org/packages/e5/6f/65412ed462202b90134b7e761b0b7e7f949e07a549c1755475333727b3d0/jupyter_client-5.0.0.tar.gz";
841 sha256 = "0nxw4rqk4wsjhc87gjqd7pv89cb9dnimcfnmcmp85bmrvv1gjri7";
841 sha256 = "0nxw4rqk4wsjhc87gjqd7pv89cb9dnimcfnmcmp85bmrvv1gjri7";
842 };
842 };
843 meta = {
843 meta = {
844 license = [ pkgs.lib.licenses.bsdOriginal ];
844 license = [ pkgs.lib.licenses.bsdOriginal ];
845 };
845 };
846 };
846 };
847 "jupyter-core" = super.buildPythonPackage {
847 "jupyter-core" = super.buildPythonPackage {
848 name = "jupyter-core-4.4.0";
848 name = "jupyter-core-4.4.0";
849 doCheck = false;
849 doCheck = false;
850 propagatedBuildInputs = [
850 propagatedBuildInputs = [
851 self."traitlets"
851 self."traitlets"
852 ];
852 ];
853 src = fetchurl {
853 src = fetchurl {
854 url = "https://files.pythonhosted.org/packages/b6/2d/2804f4de3a95583f65e5dcb4d7c8c7183124882323758996e867f47e72af/jupyter_core-4.4.0.tar.gz";
854 url = "https://files.pythonhosted.org/packages/b6/2d/2804f4de3a95583f65e5dcb4d7c8c7183124882323758996e867f47e72af/jupyter_core-4.4.0.tar.gz";
855 sha256 = "1dy083rarba8prn9f9srxq3c7n7vyql02ycrqq306c40lr57aw5s";
855 sha256 = "1dy083rarba8prn9f9srxq3c7n7vyql02ycrqq306c40lr57aw5s";
856 };
856 };
857 meta = {
857 meta = {
858 license = [ pkgs.lib.licenses.bsdOriginal ];
858 license = [ pkgs.lib.licenses.bsdOriginal ];
859 };
859 };
860 };
860 };
861 "kombu" = super.buildPythonPackage {
861 "kombu" = super.buildPythonPackage {
862 name = "kombu-4.2.1";
862 name = "kombu-4.2.1";
863 doCheck = false;
863 doCheck = false;
864 propagatedBuildInputs = [
864 propagatedBuildInputs = [
865 self."amqp"
865 self."amqp"
866 ];
866 ];
867 src = fetchurl {
867 src = fetchurl {
868 url = "https://files.pythonhosted.org/packages/39/9f/556b988833abede4a80dbd18b2bdf4e8ff4486dd482ed45da961347e8ed2/kombu-4.2.1.tar.gz";
868 url = "https://files.pythonhosted.org/packages/39/9f/556b988833abede4a80dbd18b2bdf4e8ff4486dd482ed45da961347e8ed2/kombu-4.2.1.tar.gz";
869 sha256 = "10lh3hncvw67fz0k5vgbx3yh9gjfpqdlia1f13i28cgnc1nfrbc6";
869 sha256 = "10lh3hncvw67fz0k5vgbx3yh9gjfpqdlia1f13i28cgnc1nfrbc6";
870 };
870 };
871 meta = {
871 meta = {
872 license = [ pkgs.lib.licenses.bsdOriginal ];
872 license = [ pkgs.lib.licenses.bsdOriginal ];
873 };
873 };
874 };
874 };
875 "lxml" = super.buildPythonPackage {
875 "lxml" = super.buildPythonPackage {
876 name = "lxml-4.2.5";
876 name = "lxml-4.2.5";
877 doCheck = false;
877 doCheck = false;
878 src = fetchurl {
878 src = fetchurl {
879 url = "https://files.pythonhosted.org/packages/4b/20/ddf5eb3bd5c57582d2b4652b4bbcf8da301bdfe5d805cb94e805f4d7464d/lxml-4.2.5.tar.gz";
879 url = "https://files.pythonhosted.org/packages/4b/20/ddf5eb3bd5c57582d2b4652b4bbcf8da301bdfe5d805cb94e805f4d7464d/lxml-4.2.5.tar.gz";
880 sha256 = "0zw0y9hs0nflxhl9cs6ipwwh53szi3w2x06wl0k9cylyqac0cwin";
880 sha256 = "0zw0y9hs0nflxhl9cs6ipwwh53szi3w2x06wl0k9cylyqac0cwin";
881 };
881 };
882 meta = {
882 meta = {
883 license = [ pkgs.lib.licenses.bsdOriginal ];
883 license = [ pkgs.lib.licenses.bsdOriginal ];
884 };
884 };
885 };
885 };
886 "mako" = super.buildPythonPackage {
886 "mako" = super.buildPythonPackage {
887 name = "mako-1.0.7";
887 name = "mako-1.0.7";
888 doCheck = false;
888 doCheck = false;
889 propagatedBuildInputs = [
889 propagatedBuildInputs = [
890 self."markupsafe"
890 self."markupsafe"
891 ];
891 ];
892 src = fetchurl {
892 src = fetchurl {
893 url = "https://files.pythonhosted.org/packages/eb/f3/67579bb486517c0d49547f9697e36582cd19dafb5df9e687ed8e22de57fa/Mako-1.0.7.tar.gz";
893 url = "https://files.pythonhosted.org/packages/eb/f3/67579bb486517c0d49547f9697e36582cd19dafb5df9e687ed8e22de57fa/Mako-1.0.7.tar.gz";
894 sha256 = "1bi5gnr8r8dva06qpyx4kgjc6spm2k1y908183nbbaylggjzs0jf";
894 sha256 = "1bi5gnr8r8dva06qpyx4kgjc6spm2k1y908183nbbaylggjzs0jf";
895 };
895 };
896 meta = {
896 meta = {
897 license = [ pkgs.lib.licenses.mit ];
897 license = [ pkgs.lib.licenses.mit ];
898 };
898 };
899 };
899 };
900 "markdown" = super.buildPythonPackage {
900 "markdown" = super.buildPythonPackage {
901 name = "markdown-2.6.11";
901 name = "markdown-2.6.11";
902 doCheck = false;
902 doCheck = false;
903 src = fetchurl {
903 src = fetchurl {
904 url = "https://files.pythonhosted.org/packages/b3/73/fc5c850f44af5889192dff783b7b0d8f3fe8d30b65c8e3f78f8f0265fecf/Markdown-2.6.11.tar.gz";
904 url = "https://files.pythonhosted.org/packages/b3/73/fc5c850f44af5889192dff783b7b0d8f3fe8d30b65c8e3f78f8f0265fecf/Markdown-2.6.11.tar.gz";
905 sha256 = "108g80ryzykh8bj0i7jfp71510wrcixdi771lf2asyghgyf8cmm8";
905 sha256 = "108g80ryzykh8bj0i7jfp71510wrcixdi771lf2asyghgyf8cmm8";
906 };
906 };
907 meta = {
907 meta = {
908 license = [ pkgs.lib.licenses.bsdOriginal ];
908 license = [ pkgs.lib.licenses.bsdOriginal ];
909 };
909 };
910 };
910 };
911 "markupsafe" = super.buildPythonPackage {
911 "markupsafe" = super.buildPythonPackage {
912 name = "markupsafe-1.1.0";
912 name = "markupsafe-1.1.0";
913 doCheck = false;
913 doCheck = false;
914 src = fetchurl {
914 src = fetchurl {
915 url = "https://files.pythonhosted.org/packages/ac/7e/1b4c2e05809a4414ebce0892fe1e32c14ace86ca7d50c70f00979ca9b3a3/MarkupSafe-1.1.0.tar.gz";
915 url = "https://files.pythonhosted.org/packages/ac/7e/1b4c2e05809a4414ebce0892fe1e32c14ace86ca7d50c70f00979ca9b3a3/MarkupSafe-1.1.0.tar.gz";
916 sha256 = "1lxirjypbdd3l9jl4vliilhfnhy7c7f2vlldqg1b0i74khn375sf";
916 sha256 = "1lxirjypbdd3l9jl4vliilhfnhy7c7f2vlldqg1b0i74khn375sf";
917 };
917 };
918 meta = {
918 meta = {
919 license = [ pkgs.lib.licenses.bsdOriginal ];
919 license = [ pkgs.lib.licenses.bsdOriginal ];
920 };
920 };
921 };
921 };
922 "meld3" = super.buildPythonPackage {
922 "meld3" = super.buildPythonPackage {
923 name = "meld3-1.0.2";
923 name = "meld3-1.0.2";
924 doCheck = false;
924 doCheck = false;
925 src = fetchurl {
925 src = fetchurl {
926 url = "https://files.pythonhosted.org/packages/45/a0/317c6422b26c12fe0161e936fc35f36552069ba8e6f7ecbd99bbffe32a5f/meld3-1.0.2.tar.gz";
926 url = "https://files.pythonhosted.org/packages/45/a0/317c6422b26c12fe0161e936fc35f36552069ba8e6f7ecbd99bbffe32a5f/meld3-1.0.2.tar.gz";
927 sha256 = "0n4mkwlpsqnmn0dm0wm5hn9nkda0nafl0jdy5sdl5977znh59dzp";
927 sha256 = "0n4mkwlpsqnmn0dm0wm5hn9nkda0nafl0jdy5sdl5977znh59dzp";
928 };
928 };
929 meta = {
929 meta = {
930 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
930 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
931 };
931 };
932 };
932 };
933 "mistune" = super.buildPythonPackage {
933 "mistune" = super.buildPythonPackage {
934 name = "mistune-0.8.4";
934 name = "mistune-0.8.4";
935 doCheck = false;
935 doCheck = false;
936 src = fetchurl {
936 src = fetchurl {
937 url = "https://files.pythonhosted.org/packages/2d/a4/509f6e7783ddd35482feda27bc7f72e65b5e7dc910eca4ab2164daf9c577/mistune-0.8.4.tar.gz";
937 url = "https://files.pythonhosted.org/packages/2d/a4/509f6e7783ddd35482feda27bc7f72e65b5e7dc910eca4ab2164daf9c577/mistune-0.8.4.tar.gz";
938 sha256 = "0vkmsh0x480rni51lhyvigfdf06b9247z868pk3bal1wnnfl58sr";
938 sha256 = "0vkmsh0x480rni51lhyvigfdf06b9247z868pk3bal1wnnfl58sr";
939 };
939 };
940 meta = {
940 meta = {
941 license = [ pkgs.lib.licenses.bsdOriginal ];
941 license = [ pkgs.lib.licenses.bsdOriginal ];
942 };
942 };
943 };
943 };
944 "mock" = super.buildPythonPackage {
944 "mock" = super.buildPythonPackage {
945 name = "mock-1.0.1";
945 name = "mock-1.0.1";
946 doCheck = false;
946 doCheck = false;
947 src = fetchurl {
947 src = fetchurl {
948 url = "https://files.pythonhosted.org/packages/a2/52/7edcd94f0afb721a2d559a5b9aae8af4f8f2c79bc63fdbe8a8a6c9b23bbe/mock-1.0.1.tar.gz";
948 url = "https://files.pythonhosted.org/packages/a2/52/7edcd94f0afb721a2d559a5b9aae8af4f8f2c79bc63fdbe8a8a6c9b23bbe/mock-1.0.1.tar.gz";
949 sha256 = "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq";
949 sha256 = "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq";
950 };
950 };
951 meta = {
951 meta = {
952 license = [ pkgs.lib.licenses.bsdOriginal ];
952 license = [ pkgs.lib.licenses.bsdOriginal ];
953 };
953 };
954 };
954 };
955 "more-itertools" = super.buildPythonPackage {
955 "more-itertools" = super.buildPythonPackage {
956 name = "more-itertools-5.0.0";
956 name = "more-itertools-5.0.0";
957 doCheck = false;
957 doCheck = false;
958 propagatedBuildInputs = [
958 propagatedBuildInputs = [
959 self."six"
959 self."six"
960 ];
960 ];
961 src = fetchurl {
961 src = fetchurl {
962 url = "https://files.pythonhosted.org/packages/dd/26/30fc0d541d9fdf55faf5ba4b0fd68f81d5bd2447579224820ad525934178/more-itertools-5.0.0.tar.gz";
962 url = "https://files.pythonhosted.org/packages/dd/26/30fc0d541d9fdf55faf5ba4b0fd68f81d5bd2447579224820ad525934178/more-itertools-5.0.0.tar.gz";
963 sha256 = "1r12cm6mcdwdzz7d47a6g4l437xsvapdlgyhqay3i2nrlv03da9q";
963 sha256 = "1r12cm6mcdwdzz7d47a6g4l437xsvapdlgyhqay3i2nrlv03da9q";
964 };
964 };
965 meta = {
965 meta = {
966 license = [ pkgs.lib.licenses.mit ];
966 license = [ pkgs.lib.licenses.mit ];
967 };
967 };
968 };
968 };
969 "msgpack-python" = super.buildPythonPackage {
969 "msgpack-python" = super.buildPythonPackage {
970 name = "msgpack-python-0.5.6";
970 name = "msgpack-python-0.5.6";
971 doCheck = false;
971 doCheck = false;
972 src = fetchurl {
972 src = fetchurl {
973 url = "https://files.pythonhosted.org/packages/8a/20/6eca772d1a5830336f84aca1d8198e5a3f4715cd1c7fc36d3cc7f7185091/msgpack-python-0.5.6.tar.gz";
973 url = "https://files.pythonhosted.org/packages/8a/20/6eca772d1a5830336f84aca1d8198e5a3f4715cd1c7fc36d3cc7f7185091/msgpack-python-0.5.6.tar.gz";
974 sha256 = "16wh8qgybmfh4pjp8vfv78mdlkxfmcasg78lzlnm6nslsfkci31p";
974 sha256 = "16wh8qgybmfh4pjp8vfv78mdlkxfmcasg78lzlnm6nslsfkci31p";
975 };
975 };
976 meta = {
976 meta = {
977 license = [ pkgs.lib.licenses.asl20 ];
977 license = [ pkgs.lib.licenses.asl20 ];
978 };
978 };
979 };
979 };
980 "mysql-python" = super.buildPythonPackage {
980 "mysql-python" = super.buildPythonPackage {
981 name = "mysql-python-1.2.5";
981 name = "mysql-python-1.2.5";
982 doCheck = false;
982 doCheck = false;
983 src = fetchurl {
983 src = fetchurl {
984 url = "https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip";
984 url = "https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip";
985 sha256 = "0x0c2jg0bb3pp84njaqiic050qkyd7ymwhfvhipnimg58yv40441";
985 sha256 = "0x0c2jg0bb3pp84njaqiic050qkyd7ymwhfvhipnimg58yv40441";
986 };
986 };
987 meta = {
987 meta = {
988 license = [ pkgs.lib.licenses.gpl1 ];
988 license = [ pkgs.lib.licenses.gpl1 ];
989 };
989 };
990 };
990 };
991 "nbconvert" = super.buildPythonPackage {
991 "nbconvert" = super.buildPythonPackage {
992 name = "nbconvert-5.3.1";
992 name = "nbconvert-5.3.1";
993 doCheck = false;
993 doCheck = false;
994 propagatedBuildInputs = [
994 propagatedBuildInputs = [
995 self."mistune"
995 self."mistune"
996 self."jinja2"
996 self."jinja2"
997 self."pygments"
997 self."pygments"
998 self."traitlets"
998 self."traitlets"
999 self."jupyter-core"
999 self."jupyter-core"
1000 self."nbformat"
1000 self."nbformat"
1001 self."entrypoints"
1001 self."entrypoints"
1002 self."bleach"
1002 self."bleach"
1003 self."pandocfilters"
1003 self."pandocfilters"
1004 self."testpath"
1004 self."testpath"
1005 ];
1005 ];
1006 src = fetchurl {
1006 src = fetchurl {
1007 url = "https://files.pythonhosted.org/packages/b9/a4/d0a0938ad6f5eeb4dea4e73d255c617ef94b0b2849d51194c9bbdb838412/nbconvert-5.3.1.tar.gz";
1007 url = "https://files.pythonhosted.org/packages/b9/a4/d0a0938ad6f5eeb4dea4e73d255c617ef94b0b2849d51194c9bbdb838412/nbconvert-5.3.1.tar.gz";
1008 sha256 = "1f9dkvpx186xjm4xab0qbph588mncp4vqk3fmxrsnqs43mks9c8j";
1008 sha256 = "1f9dkvpx186xjm4xab0qbph588mncp4vqk3fmxrsnqs43mks9c8j";
1009 };
1009 };
1010 meta = {
1010 meta = {
1011 license = [ pkgs.lib.licenses.bsdOriginal ];
1011 license = [ pkgs.lib.licenses.bsdOriginal ];
1012 };
1012 };
1013 };
1013 };
1014 "nbformat" = super.buildPythonPackage {
1014 "nbformat" = super.buildPythonPackage {
1015 name = "nbformat-4.4.0";
1015 name = "nbformat-4.4.0";
1016 doCheck = false;
1016 doCheck = false;
1017 propagatedBuildInputs = [
1017 propagatedBuildInputs = [
1018 self."ipython-genutils"
1018 self."ipython-genutils"
1019 self."traitlets"
1019 self."traitlets"
1020 self."jsonschema"
1020 self."jsonschema"
1021 self."jupyter-core"
1021 self."jupyter-core"
1022 ];
1022 ];
1023 src = fetchurl {
1023 src = fetchurl {
1024 url = "https://files.pythonhosted.org/packages/6e/0e/160754f7ae3e984863f585a3743b0ed1702043a81245907c8fae2d537155/nbformat-4.4.0.tar.gz";
1024 url = "https://files.pythonhosted.org/packages/6e/0e/160754f7ae3e984863f585a3743b0ed1702043a81245907c8fae2d537155/nbformat-4.4.0.tar.gz";
1025 sha256 = "00nlf08h8yc4q73nphfvfhxrcnilaqanb8z0mdy6nxk0vzq4wjgp";
1025 sha256 = "00nlf08h8yc4q73nphfvfhxrcnilaqanb8z0mdy6nxk0vzq4wjgp";
1026 };
1026 };
1027 meta = {
1027 meta = {
1028 license = [ pkgs.lib.licenses.bsdOriginal ];
1028 license = [ pkgs.lib.licenses.bsdOriginal ];
1029 };
1029 };
1030 };
1030 };
1031 "packaging" = super.buildPythonPackage {
1031 "packaging" = super.buildPythonPackage {
1032 name = "packaging-15.2";
1032 name = "packaging-15.2";
1033 doCheck = false;
1033 doCheck = false;
1034 src = fetchurl {
1034 src = fetchurl {
1035 url = "https://files.pythonhosted.org/packages/24/c4/185da1304f07047dc9e0c46c31db75c0351bd73458ac3efad7da3dbcfbe1/packaging-15.2.tar.gz";
1035 url = "https://files.pythonhosted.org/packages/24/c4/185da1304f07047dc9e0c46c31db75c0351bd73458ac3efad7da3dbcfbe1/packaging-15.2.tar.gz";
1036 sha256 = "1zn60w84bxvw6wypffka18ca66pa1k2cfrq3cq8fnsfja5m3k4ng";
1036 sha256 = "1zn60w84bxvw6wypffka18ca66pa1k2cfrq3cq8fnsfja5m3k4ng";
1037 };
1037 };
1038 meta = {
1038 meta = {
1039 license = [ pkgs.lib.licenses.asl20 ];
1039 license = [ pkgs.lib.licenses.asl20 ];
1040 };
1040 };
1041 };
1041 };
1042 "pandocfilters" = super.buildPythonPackage {
1042 "pandocfilters" = super.buildPythonPackage {
1043 name = "pandocfilters-1.4.2";
1043 name = "pandocfilters-1.4.2";
1044 doCheck = false;
1044 doCheck = false;
1045 src = fetchurl {
1045 src = fetchurl {
1046 url = "https://files.pythonhosted.org/packages/4c/ea/236e2584af67bb6df960832731a6e5325fd4441de001767da328c33368ce/pandocfilters-1.4.2.tar.gz";
1046 url = "https://files.pythonhosted.org/packages/4c/ea/236e2584af67bb6df960832731a6e5325fd4441de001767da328c33368ce/pandocfilters-1.4.2.tar.gz";
1047 sha256 = "1a8d9b7s48gmq9zj0pmbyv2sivn5i7m6mybgpkk4jm5vd7hp1pdk";
1047 sha256 = "1a8d9b7s48gmq9zj0pmbyv2sivn5i7m6mybgpkk4jm5vd7hp1pdk";
1048 };
1048 };
1049 meta = {
1049 meta = {
1050 license = [ pkgs.lib.licenses.bsdOriginal ];
1050 license = [ pkgs.lib.licenses.bsdOriginal ];
1051 };
1051 };
1052 };
1052 };
1053 "paste" = super.buildPythonPackage {
1053 "paste" = super.buildPythonPackage {
1054 name = "paste-3.0.8";
1054 name = "paste-3.0.8";
1055 doCheck = false;
1055 doCheck = false;
1056 propagatedBuildInputs = [
1056 propagatedBuildInputs = [
1057 self."six"
1057 self."six"
1058 ];
1058 ];
1059 src = fetchurl {
1059 src = fetchurl {
1060 url = "https://files.pythonhosted.org/packages/66/65/e3acf1663438483c1f6ced0b6c6f3b90da9f0faacb0a6e2aa0f3f9f4b235/Paste-3.0.8.tar.gz";
1060 url = "https://files.pythonhosted.org/packages/66/65/e3acf1663438483c1f6ced0b6c6f3b90da9f0faacb0a6e2aa0f3f9f4b235/Paste-3.0.8.tar.gz";
1061 sha256 = "05w1sh6ky4d7pmdb8nv82n13w22jcn3qsagg5ih3hjmbws9kkwf4";
1061 sha256 = "05w1sh6ky4d7pmdb8nv82n13w22jcn3qsagg5ih3hjmbws9kkwf4";
1062 };
1062 };
1063 meta = {
1063 meta = {
1064 license = [ pkgs.lib.licenses.mit ];
1064 license = [ pkgs.lib.licenses.mit ];
1065 };
1065 };
1066 };
1066 };
1067 "pastedeploy" = super.buildPythonPackage {
1067 "pastedeploy" = super.buildPythonPackage {
1068 name = "pastedeploy-2.0.1";
1068 name = "pastedeploy-2.0.1";
1069 doCheck = false;
1069 doCheck = false;
1070 src = fetchurl {
1070 src = fetchurl {
1071 url = "https://files.pythonhosted.org/packages/19/a0/5623701df7e2478a68a1b685d1a84518024eef994cde7e4da8449a31616f/PasteDeploy-2.0.1.tar.gz";
1071 url = "https://files.pythonhosted.org/packages/19/a0/5623701df7e2478a68a1b685d1a84518024eef994cde7e4da8449a31616f/PasteDeploy-2.0.1.tar.gz";
1072 sha256 = "02imfbbx1mi2h546f3sr37m47dk9qizaqhzzlhx8bkzxa6fzn8yl";
1072 sha256 = "02imfbbx1mi2h546f3sr37m47dk9qizaqhzzlhx8bkzxa6fzn8yl";
1073 };
1073 };
1074 meta = {
1074 meta = {
1075 license = [ pkgs.lib.licenses.mit ];
1075 license = [ pkgs.lib.licenses.mit ];
1076 };
1076 };
1077 };
1077 };
1078 "pastescript" = super.buildPythonPackage {
1078 "pastescript" = super.buildPythonPackage {
1079 name = "pastescript-3.1.0";
1079 name = "pastescript-3.1.0";
1080 doCheck = false;
1080 doCheck = false;
1081 propagatedBuildInputs = [
1081 propagatedBuildInputs = [
1082 self."paste"
1082 self."paste"
1083 self."pastedeploy"
1083 self."pastedeploy"
1084 self."six"
1084 self."six"
1085 ];
1085 ];
1086 src = fetchurl {
1086 src = fetchurl {
1087 url = "https://files.pythonhosted.org/packages/9e/1d/14db1c283eb21a5d36b6ba1114c13b709629711e64acab653d9994fe346f/PasteScript-3.1.0.tar.gz";
1087 url = "https://files.pythonhosted.org/packages/9e/1d/14db1c283eb21a5d36b6ba1114c13b709629711e64acab653d9994fe346f/PasteScript-3.1.0.tar.gz";
1088 sha256 = "02qcxjjr32ks7a6d4f533wl34ysc7yhwlrfcyqwqbzr52250v4fs";
1088 sha256 = "02qcxjjr32ks7a6d4f533wl34ysc7yhwlrfcyqwqbzr52250v4fs";
1089 };
1089 };
1090 meta = {
1090 meta = {
1091 license = [ pkgs.lib.licenses.mit ];
1091 license = [ pkgs.lib.licenses.mit ];
1092 };
1092 };
1093 };
1093 };
1094 "pathlib2" = super.buildPythonPackage {
1094 "pathlib2" = super.buildPythonPackage {
1095 name = "pathlib2-2.3.3";
1095 name = "pathlib2-2.3.3";
1096 doCheck = false;
1096 doCheck = false;
1097 propagatedBuildInputs = [
1097 propagatedBuildInputs = [
1098 self."six"
1098 self."six"
1099 self."scandir"
1099 self."scandir"
1100 ];
1100 ];
1101 src = fetchurl {
1101 src = fetchurl {
1102 url = "https://files.pythonhosted.org/packages/bf/d7/a2568f4596b75d2c6e2b4094a7e64f620decc7887f69a1f2811931ea15b9/pathlib2-2.3.3.tar.gz";
1102 url = "https://files.pythonhosted.org/packages/bf/d7/a2568f4596b75d2c6e2b4094a7e64f620decc7887f69a1f2811931ea15b9/pathlib2-2.3.3.tar.gz";
1103 sha256 = "0hpp92vqqgcd8h92msm9slv161b1q160igjwnkf2ag6cx0c96695";
1103 sha256 = "0hpp92vqqgcd8h92msm9slv161b1q160igjwnkf2ag6cx0c96695";
1104 };
1104 };
1105 meta = {
1105 meta = {
1106 license = [ pkgs.lib.licenses.mit ];
1106 license = [ pkgs.lib.licenses.mit ];
1107 };
1107 };
1108 };
1108 };
1109 "peppercorn" = super.buildPythonPackage {
1109 "peppercorn" = super.buildPythonPackage {
1110 name = "peppercorn-0.6";
1110 name = "peppercorn-0.6";
1111 doCheck = false;
1111 doCheck = false;
1112 src = fetchurl {
1112 src = fetchurl {
1113 url = "https://files.pythonhosted.org/packages/e4/77/93085de7108cdf1a0b092ff443872a8f9442c736d7ddebdf2f27627935f4/peppercorn-0.6.tar.gz";
1113 url = "https://files.pythonhosted.org/packages/e4/77/93085de7108cdf1a0b092ff443872a8f9442c736d7ddebdf2f27627935f4/peppercorn-0.6.tar.gz";
1114 sha256 = "1ip4bfwcpwkq9hz2dai14k2cyabvwrnvcvrcmzxmqm04g8fnimwn";
1114 sha256 = "1ip4bfwcpwkq9hz2dai14k2cyabvwrnvcvrcmzxmqm04g8fnimwn";
1115 };
1115 };
1116 meta = {
1116 meta = {
1117 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1117 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1118 };
1118 };
1119 };
1119 };
1120 "pexpect" = super.buildPythonPackage {
1120 "pexpect" = super.buildPythonPackage {
1121 name = "pexpect-4.7.0";
1121 name = "pexpect-4.7.0";
1122 doCheck = false;
1122 doCheck = false;
1123 propagatedBuildInputs = [
1123 propagatedBuildInputs = [
1124 self."ptyprocess"
1124 self."ptyprocess"
1125 ];
1125 ];
1126 src = fetchurl {
1126 src = fetchurl {
1127 url = "https://files.pythonhosted.org/packages/1c/b1/362a0d4235496cb42c33d1d8732b5e2c607b0129ad5fdd76f5a583b9fcb3/pexpect-4.7.0.tar.gz";
1127 url = "https://files.pythonhosted.org/packages/1c/b1/362a0d4235496cb42c33d1d8732b5e2c607b0129ad5fdd76f5a583b9fcb3/pexpect-4.7.0.tar.gz";
1128 sha256 = "1sv2rri15zwhds85a4kamwh9pj49qcxv7m4miyr4jfpfwv81yb4y";
1128 sha256 = "1sv2rri15zwhds85a4kamwh9pj49qcxv7m4miyr4jfpfwv81yb4y";
1129 };
1129 };
1130 meta = {
1130 meta = {
1131 license = [ pkgs.lib.licenses.isc { fullName = "ISC License (ISCL)"; } ];
1131 license = [ pkgs.lib.licenses.isc { fullName = "ISC License (ISCL)"; } ];
1132 };
1132 };
1133 };
1133 };
1134 "pickleshare" = super.buildPythonPackage {
1134 "pickleshare" = super.buildPythonPackage {
1135 name = "pickleshare-0.7.5";
1135 name = "pickleshare-0.7.5";
1136 doCheck = false;
1136 doCheck = false;
1137 propagatedBuildInputs = [
1137 propagatedBuildInputs = [
1138 self."pathlib2"
1138 self."pathlib2"
1139 ];
1139 ];
1140 src = fetchurl {
1140 src = fetchurl {
1141 url = "https://files.pythonhosted.org/packages/d8/b6/df3c1c9b616e9c0edbc4fbab6ddd09df9535849c64ba51fcb6531c32d4d8/pickleshare-0.7.5.tar.gz";
1141 url = "https://files.pythonhosted.org/packages/d8/b6/df3c1c9b616e9c0edbc4fbab6ddd09df9535849c64ba51fcb6531c32d4d8/pickleshare-0.7.5.tar.gz";
1142 sha256 = "1jmghg3c53yp1i8cm6pcrm280ayi8621rwyav9fac7awjr3kss47";
1142 sha256 = "1jmghg3c53yp1i8cm6pcrm280ayi8621rwyav9fac7awjr3kss47";
1143 };
1143 };
1144 meta = {
1144 meta = {
1145 license = [ pkgs.lib.licenses.mit ];
1145 license = [ pkgs.lib.licenses.mit ];
1146 };
1146 };
1147 };
1147 };
1148 "plaster" = super.buildPythonPackage {
1148 "plaster" = super.buildPythonPackage {
1149 name = "plaster-1.0";
1149 name = "plaster-1.0";
1150 doCheck = false;
1150 doCheck = false;
1151 propagatedBuildInputs = [
1151 propagatedBuildInputs = [
1152 self."setuptools"
1152 self."setuptools"
1153 ];
1153 ];
1154 src = fetchurl {
1154 src = fetchurl {
1155 url = "https://files.pythonhosted.org/packages/37/e1/56d04382d718d32751017d32f351214384e529b794084eee20bb52405563/plaster-1.0.tar.gz";
1155 url = "https://files.pythonhosted.org/packages/37/e1/56d04382d718d32751017d32f351214384e529b794084eee20bb52405563/plaster-1.0.tar.gz";
1156 sha256 = "1hy8k0nv2mxq94y5aysk6hjk9ryb4bsd13g83m60hcyzxz3wflc3";
1156 sha256 = "1hy8k0nv2mxq94y5aysk6hjk9ryb4bsd13g83m60hcyzxz3wflc3";
1157 };
1157 };
1158 meta = {
1158 meta = {
1159 license = [ pkgs.lib.licenses.mit ];
1159 license = [ pkgs.lib.licenses.mit ];
1160 };
1160 };
1161 };
1161 };
1162 "plaster-pastedeploy" = super.buildPythonPackage {
1162 "plaster-pastedeploy" = super.buildPythonPackage {
1163 name = "plaster-pastedeploy-0.7";
1163 name = "plaster-pastedeploy-0.7";
1164 doCheck = false;
1164 doCheck = false;
1165 propagatedBuildInputs = [
1165 propagatedBuildInputs = [
1166 self."pastedeploy"
1166 self."pastedeploy"
1167 self."plaster"
1167 self."plaster"
1168 ];
1168 ];
1169 src = fetchurl {
1169 src = fetchurl {
1170 url = "https://files.pythonhosted.org/packages/99/69/2d3bc33091249266a1bd3cf24499e40ab31d54dffb4a7d76fe647950b98c/plaster_pastedeploy-0.7.tar.gz";
1170 url = "https://files.pythonhosted.org/packages/99/69/2d3bc33091249266a1bd3cf24499e40ab31d54dffb4a7d76fe647950b98c/plaster_pastedeploy-0.7.tar.gz";
1171 sha256 = "1zg7gcsvc1kzay1ry5p699rg2qavfsxqwl17mqxzr0gzw6j9679r";
1171 sha256 = "1zg7gcsvc1kzay1ry5p699rg2qavfsxqwl17mqxzr0gzw6j9679r";
1172 };
1172 };
1173 meta = {
1173 meta = {
1174 license = [ pkgs.lib.licenses.mit ];
1174 license = [ pkgs.lib.licenses.mit ];
1175 };
1175 };
1176 };
1176 };
1177 "pluggy" = super.buildPythonPackage {
1177 "pluggy" = super.buildPythonPackage {
1178 name = "pluggy-0.11.0";
1178 name = "pluggy-0.11.0";
1179 doCheck = false;
1179 doCheck = false;
1180 src = fetchurl {
1180 src = fetchurl {
1181 url = "https://files.pythonhosted.org/packages/0d/a1/862ab336e8128fde20981d2c1aa8506693412daf5083b1911d539412676b/pluggy-0.11.0.tar.gz";
1181 url = "https://files.pythonhosted.org/packages/0d/a1/862ab336e8128fde20981d2c1aa8506693412daf5083b1911d539412676b/pluggy-0.11.0.tar.gz";
1182 sha256 = "10511a54dvafw1jrk75mrhml53c7b7w4yaw7241696lc2hfvr895";
1182 sha256 = "10511a54dvafw1jrk75mrhml53c7b7w4yaw7241696lc2hfvr895";
1183 };
1183 };
1184 meta = {
1184 meta = {
1185 license = [ pkgs.lib.licenses.mit ];
1185 license = [ pkgs.lib.licenses.mit ];
1186 };
1186 };
1187 };
1187 };
1188 "prompt-toolkit" = super.buildPythonPackage {
1188 "prompt-toolkit" = super.buildPythonPackage {
1189 name = "prompt-toolkit-1.0.16";
1189 name = "prompt-toolkit-1.0.16";
1190 doCheck = false;
1190 doCheck = false;
1191 propagatedBuildInputs = [
1191 propagatedBuildInputs = [
1192 self."six"
1192 self."six"
1193 self."wcwidth"
1193 self."wcwidth"
1194 ];
1194 ];
1195 src = fetchurl {
1195 src = fetchurl {
1196 url = "https://files.pythonhosted.org/packages/f1/03/bb36771dc9fa7553ac4bdc639a9ecdf6fda0ff4176faf940d97e3c16e41d/prompt_toolkit-1.0.16.tar.gz";
1196 url = "https://files.pythonhosted.org/packages/f1/03/bb36771dc9fa7553ac4bdc639a9ecdf6fda0ff4176faf940d97e3c16e41d/prompt_toolkit-1.0.16.tar.gz";
1197 sha256 = "1d65hm6nf0cbq0q0121m60zzy4s1fpg9fn761s1yxf08dridvkn1";
1197 sha256 = "1d65hm6nf0cbq0q0121m60zzy4s1fpg9fn761s1yxf08dridvkn1";
1198 };
1198 };
1199 meta = {
1199 meta = {
1200 license = [ pkgs.lib.licenses.bsdOriginal ];
1200 license = [ pkgs.lib.licenses.bsdOriginal ];
1201 };
1201 };
1202 };
1202 };
1203 "psutil" = super.buildPythonPackage {
1203 "psutil" = super.buildPythonPackage {
1204 name = "psutil-5.5.1";
1204 name = "psutil-5.5.1";
1205 doCheck = false;
1205 doCheck = false;
1206 src = fetchurl {
1206 src = fetchurl {
1207 url = "https://files.pythonhosted.org/packages/c7/01/7c30b247cdc5ba29623faa5c8cf1f1bbf7e041783c340414b0ed7e067c64/psutil-5.5.1.tar.gz";
1207 url = "https://files.pythonhosted.org/packages/c7/01/7c30b247cdc5ba29623faa5c8cf1f1bbf7e041783c340414b0ed7e067c64/psutil-5.5.1.tar.gz";
1208 sha256 = "045qaqvn6k90bj5bcy259yrwcd2afgznaav3sfhphy9b8ambzkkj";
1208 sha256 = "045qaqvn6k90bj5bcy259yrwcd2afgznaav3sfhphy9b8ambzkkj";
1209 };
1209 };
1210 meta = {
1210 meta = {
1211 license = [ pkgs.lib.licenses.bsdOriginal ];
1211 license = [ pkgs.lib.licenses.bsdOriginal ];
1212 };
1212 };
1213 };
1213 };
1214 "psycopg2" = super.buildPythonPackage {
1214 "psycopg2" = super.buildPythonPackage {
1215 name = "psycopg2-2.8.2";
1215 name = "psycopg2-2.8.2";
1216 doCheck = false;
1216 doCheck = false;
1217 src = fetchurl {
1217 src = fetchurl {
1218 url = "https://files.pythonhosted.org/packages/23/7e/93c325482c328619870b6cd09370f6dbe1148283daca65115cd63642e60f/psycopg2-2.8.2.tar.gz";
1218 url = "https://files.pythonhosted.org/packages/23/7e/93c325482c328619870b6cd09370f6dbe1148283daca65115cd63642e60f/psycopg2-2.8.2.tar.gz";
1219 sha256 = "122mn2z3r0zgs8jyq682jjjr6vq5690qmxqf22gj6g41dwdz5b2w";
1219 sha256 = "122mn2z3r0zgs8jyq682jjjr6vq5690qmxqf22gj6g41dwdz5b2w";
1220 };
1220 };
1221 meta = {
1221 meta = {
1222 license = [ pkgs.lib.licenses.zpl21 { fullName = "GNU Library or Lesser General Public License (LGPL)"; } { fullName = "LGPL with exceptions or ZPL"; } ];
1222 license = [ pkgs.lib.licenses.zpl21 { fullName = "GNU Library or Lesser General Public License (LGPL)"; } { fullName = "LGPL with exceptions or ZPL"; } ];
1223 };
1223 };
1224 };
1224 };
1225 "ptyprocess" = super.buildPythonPackage {
1225 "ptyprocess" = super.buildPythonPackage {
1226 name = "ptyprocess-0.6.0";
1226 name = "ptyprocess-0.6.0";
1227 doCheck = false;
1227 doCheck = false;
1228 src = fetchurl {
1228 src = fetchurl {
1229 url = "https://files.pythonhosted.org/packages/7d/2d/e4b8733cf79b7309d84c9081a4ab558c89d8c89da5961bf4ddb050ca1ce0/ptyprocess-0.6.0.tar.gz";
1229 url = "https://files.pythonhosted.org/packages/7d/2d/e4b8733cf79b7309d84c9081a4ab558c89d8c89da5961bf4ddb050ca1ce0/ptyprocess-0.6.0.tar.gz";
1230 sha256 = "1h4lcd3w5nrxnsk436ar7fwkiy5rfn5wj2xwy9l0r4mdqnf2jgwj";
1230 sha256 = "1h4lcd3w5nrxnsk436ar7fwkiy5rfn5wj2xwy9l0r4mdqnf2jgwj";
1231 };
1231 };
1232 meta = {
1232 meta = {
1233 license = [ ];
1233 license = [ ];
1234 };
1234 };
1235 };
1235 };
1236 "py" = super.buildPythonPackage {
1236 "py" = super.buildPythonPackage {
1237 name = "py-1.6.0";
1237 name = "py-1.6.0";
1238 doCheck = false;
1238 doCheck = false;
1239 src = fetchurl {
1239 src = fetchurl {
1240 url = "https://files.pythonhosted.org/packages/4f/38/5f427d1eedae73063ce4da680d2bae72014995f9fdeaa57809df61c968cd/py-1.6.0.tar.gz";
1240 url = "https://files.pythonhosted.org/packages/4f/38/5f427d1eedae73063ce4da680d2bae72014995f9fdeaa57809df61c968cd/py-1.6.0.tar.gz";
1241 sha256 = "1wcs3zv9wl5m5x7p16avqj2gsrviyb23yvc3pr330isqs0sh98q6";
1241 sha256 = "1wcs3zv9wl5m5x7p16avqj2gsrviyb23yvc3pr330isqs0sh98q6";
1242 };
1242 };
1243 meta = {
1243 meta = {
1244 license = [ pkgs.lib.licenses.mit ];
1244 license = [ pkgs.lib.licenses.mit ];
1245 };
1245 };
1246 };
1246 };
1247 "py-bcrypt" = super.buildPythonPackage {
1247 "py-bcrypt" = super.buildPythonPackage {
1248 name = "py-bcrypt-0.4";
1248 name = "py-bcrypt-0.4";
1249 doCheck = false;
1249 doCheck = false;
1250 src = fetchurl {
1250 src = fetchurl {
1251 url = "https://files.pythonhosted.org/packages/68/b1/1c3068c5c4d2e35c48b38dcc865301ebfdf45f54507086ac65ced1fd3b3d/py-bcrypt-0.4.tar.gz";
1251 url = "https://files.pythonhosted.org/packages/68/b1/1c3068c5c4d2e35c48b38dcc865301ebfdf45f54507086ac65ced1fd3b3d/py-bcrypt-0.4.tar.gz";
1252 sha256 = "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az";
1252 sha256 = "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az";
1253 };
1253 };
1254 meta = {
1254 meta = {
1255 license = [ pkgs.lib.licenses.bsdOriginal ];
1255 license = [ pkgs.lib.licenses.bsdOriginal ];
1256 };
1256 };
1257 };
1257 };
1258 "py-gfm" = super.buildPythonPackage {
1258 "py-gfm" = super.buildPythonPackage {
1259 name = "py-gfm-0.1.4";
1259 name = "py-gfm-0.1.4";
1260 doCheck = false;
1260 doCheck = false;
1261 propagatedBuildInputs = [
1261 propagatedBuildInputs = [
1262 self."setuptools"
1262 self."setuptools"
1263 self."markdown"
1263 self."markdown"
1264 ];
1264 ];
1265 src = fetchurl {
1265 src = fetchurl {
1266 url = "https://files.pythonhosted.org/packages/06/ee/004a03a1d92bb386dae44f6dd087db541bc5093374f1637d4d4ae5596cc2/py-gfm-0.1.4.tar.gz";
1266 url = "https://files.pythonhosted.org/packages/06/ee/004a03a1d92bb386dae44f6dd087db541bc5093374f1637d4d4ae5596cc2/py-gfm-0.1.4.tar.gz";
1267 sha256 = "0zip06g2isivx8fzgqd4n9qzsa22c25jas1rsb7m2rnjg72m0rzg";
1267 sha256 = "0zip06g2isivx8fzgqd4n9qzsa22c25jas1rsb7m2rnjg72m0rzg";
1268 };
1268 };
1269 meta = {
1269 meta = {
1270 license = [ pkgs.lib.licenses.bsdOriginal ];
1270 license = [ pkgs.lib.licenses.bsdOriginal ];
1271 };
1271 };
1272 };
1272 };
1273 "pyasn1" = super.buildPythonPackage {
1273 "pyasn1" = super.buildPythonPackage {
1274 name = "pyasn1-0.4.5";
1274 name = "pyasn1-0.4.5";
1275 doCheck = false;
1275 doCheck = false;
1276 src = fetchurl {
1276 src = fetchurl {
1277 url = "https://files.pythonhosted.org/packages/46/60/b7e32f6ff481b8a1f6c8f02b0fd9b693d1c92ddd2efb038ec050d99a7245/pyasn1-0.4.5.tar.gz";
1277 url = "https://files.pythonhosted.org/packages/46/60/b7e32f6ff481b8a1f6c8f02b0fd9b693d1c92ddd2efb038ec050d99a7245/pyasn1-0.4.5.tar.gz";
1278 sha256 = "1xqh3jh2nfi2bflk5a0vn59y3pp1vn54f3ksx652sid92gz2096s";
1278 sha256 = "1xqh3jh2nfi2bflk5a0vn59y3pp1vn54f3ksx652sid92gz2096s";
1279 };
1279 };
1280 meta = {
1280 meta = {
1281 license = [ pkgs.lib.licenses.bsdOriginal ];
1281 license = [ pkgs.lib.licenses.bsdOriginal ];
1282 };
1282 };
1283 };
1283 };
1284 "pyasn1-modules" = super.buildPythonPackage {
1284 "pyasn1-modules" = super.buildPythonPackage {
1285 name = "pyasn1-modules-0.2.5";
1285 name = "pyasn1-modules-0.2.5";
1286 doCheck = false;
1286 doCheck = false;
1287 propagatedBuildInputs = [
1287 propagatedBuildInputs = [
1288 self."pyasn1"
1288 self."pyasn1"
1289 ];
1289 ];
1290 src = fetchurl {
1290 src = fetchurl {
1291 url = "https://files.pythonhosted.org/packages/ec/0b/69620cb04a016e4a1e8e352e8a42717862129b574b3479adb2358a1f12f7/pyasn1-modules-0.2.5.tar.gz";
1291 url = "https://files.pythonhosted.org/packages/ec/0b/69620cb04a016e4a1e8e352e8a42717862129b574b3479adb2358a1f12f7/pyasn1-modules-0.2.5.tar.gz";
1292 sha256 = "15nvfx0vnl8akdlv3k6s0n80vqvryj82bm040jdsn7wmyxl1ywpg";
1292 sha256 = "15nvfx0vnl8akdlv3k6s0n80vqvryj82bm040jdsn7wmyxl1ywpg";
1293 };
1293 };
1294 meta = {
1294 meta = {
1295 license = [ pkgs.lib.licenses.bsdOriginal ];
1295 license = [ pkgs.lib.licenses.bsdOriginal ];
1296 };
1296 };
1297 };
1297 };
1298 "pycparser" = super.buildPythonPackage {
1298 "pycparser" = super.buildPythonPackage {
1299 name = "pycparser-2.19";
1299 name = "pycparser-2.19";
1300 doCheck = false;
1300 doCheck = false;
1301 src = fetchurl {
1301 src = fetchurl {
1302 url = "https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz";
1302 url = "https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz";
1303 sha256 = "1cr5dcj9628lkz1qlwq3fv97c25363qppkmcayqvd05dpy573259";
1303 sha256 = "1cr5dcj9628lkz1qlwq3fv97c25363qppkmcayqvd05dpy573259";
1304 };
1304 };
1305 meta = {
1305 meta = {
1306 license = [ pkgs.lib.licenses.bsdOriginal ];
1306 license = [ pkgs.lib.licenses.bsdOriginal ];
1307 };
1307 };
1308 };
1308 };
1309 "pycrypto" = super.buildPythonPackage {
1309 "pycrypto" = super.buildPythonPackage {
1310 name = "pycrypto-2.6.1";
1310 name = "pycrypto-2.6.1";
1311 doCheck = false;
1311 doCheck = false;
1312 src = fetchurl {
1312 src = fetchurl {
1313 url = "https://files.pythonhosted.org/packages/60/db/645aa9af249f059cc3a368b118de33889219e0362141e75d4eaf6f80f163/pycrypto-2.6.1.tar.gz";
1313 url = "https://files.pythonhosted.org/packages/60/db/645aa9af249f059cc3a368b118de33889219e0362141e75d4eaf6f80f163/pycrypto-2.6.1.tar.gz";
1314 sha256 = "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj";
1314 sha256 = "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj";
1315 };
1315 };
1316 meta = {
1316 meta = {
1317 license = [ pkgs.lib.licenses.publicDomain ];
1317 license = [ pkgs.lib.licenses.publicDomain ];
1318 };
1318 };
1319 };
1319 };
1320 "pycurl" = super.buildPythonPackage {
1320 "pycurl" = super.buildPythonPackage {
1321 name = "pycurl-7.43.0.2";
1321 name = "pycurl-7.43.0.2";
1322 doCheck = false;
1322 doCheck = false;
1323 src = fetchurl {
1323 src = fetchurl {
1324 url = "https://files.pythonhosted.org/packages/e8/e4/0dbb8735407189f00b33d84122b9be52c790c7c3b25286826f4e1bdb7bde/pycurl-7.43.0.2.tar.gz";
1324 url = "https://files.pythonhosted.org/packages/e8/e4/0dbb8735407189f00b33d84122b9be52c790c7c3b25286826f4e1bdb7bde/pycurl-7.43.0.2.tar.gz";
1325 sha256 = "1915kb04k1j4y6k1dx1sgnbddxrl9r1n4q928if2lkrdm73xy30g";
1325 sha256 = "1915kb04k1j4y6k1dx1sgnbddxrl9r1n4q928if2lkrdm73xy30g";
1326 };
1326 };
1327 meta = {
1327 meta = {
1328 license = [ pkgs.lib.licenses.mit { fullName = "LGPL/MIT"; } { fullName = "GNU Library or Lesser General Public License (LGPL)"; } ];
1328 license = [ pkgs.lib.licenses.mit { fullName = "LGPL/MIT"; } { fullName = "GNU Library or Lesser General Public License (LGPL)"; } ];
1329 };
1329 };
1330 };
1330 };
1331 "pygments" = super.buildPythonPackage {
1331 "pygments" = super.buildPythonPackage {
1332 name = "pygments-2.4.2";
1332 name = "pygments-2.4.2";
1333 doCheck = false;
1333 doCheck = false;
1334 src = fetchurl {
1334 src = fetchurl {
1335 url = "https://files.pythonhosted.org/packages/7e/ae/26808275fc76bf2832deb10d3a3ed3107bc4de01b85dcccbe525f2cd6d1e/Pygments-2.4.2.tar.gz";
1335 url = "https://files.pythonhosted.org/packages/7e/ae/26808275fc76bf2832deb10d3a3ed3107bc4de01b85dcccbe525f2cd6d1e/Pygments-2.4.2.tar.gz";
1336 sha256 = "15v2sqm5g12bqa0c7wikfh9ck2nl97ayizy1hpqhmws5gqalq748";
1336 sha256 = "15v2sqm5g12bqa0c7wikfh9ck2nl97ayizy1hpqhmws5gqalq748";
1337 };
1337 };
1338 meta = {
1338 meta = {
1339 license = [ pkgs.lib.licenses.bsdOriginal ];
1339 license = [ pkgs.lib.licenses.bsdOriginal ];
1340 };
1340 };
1341 };
1341 };
1342 "pymysql" = super.buildPythonPackage {
1342 "pymysql" = super.buildPythonPackage {
1343 name = "pymysql-0.8.1";
1343 name = "pymysql-0.8.1";
1344 doCheck = false;
1344 doCheck = false;
1345 src = fetchurl {
1345 src = fetchurl {
1346 url = "https://files.pythonhosted.org/packages/44/39/6bcb83cae0095a31b6be4511707fdf2009d3e29903a55a0494d3a9a2fac0/PyMySQL-0.8.1.tar.gz";
1346 url = "https://files.pythonhosted.org/packages/44/39/6bcb83cae0095a31b6be4511707fdf2009d3e29903a55a0494d3a9a2fac0/PyMySQL-0.8.1.tar.gz";
1347 sha256 = "0a96crz55bw4h6myh833skrli7b0ck89m3x673y2z2ryy7zrpq9l";
1347 sha256 = "0a96crz55bw4h6myh833skrli7b0ck89m3x673y2z2ryy7zrpq9l";
1348 };
1348 };
1349 meta = {
1349 meta = {
1350 license = [ pkgs.lib.licenses.mit ];
1350 license = [ pkgs.lib.licenses.mit ];
1351 };
1351 };
1352 };
1352 };
1353 "pyotp" = super.buildPythonPackage {
1353 "pyotp" = super.buildPythonPackage {
1354 name = "pyotp-2.2.7";
1354 name = "pyotp-2.2.7";
1355 doCheck = false;
1355 doCheck = false;
1356 src = fetchurl {
1356 src = fetchurl {
1357 url = "https://files.pythonhosted.org/packages/b1/ab/477cda97b6ca7baced5106471cb1ac1fe698d1b035983b9f8ee3422989eb/pyotp-2.2.7.tar.gz";
1357 url = "https://files.pythonhosted.org/packages/b1/ab/477cda97b6ca7baced5106471cb1ac1fe698d1b035983b9f8ee3422989eb/pyotp-2.2.7.tar.gz";
1358 sha256 = "00p69nw431f0s2ilg0hnd77p1l22m06p9rq4f8zfapmavnmzw3xy";
1358 sha256 = "00p69nw431f0s2ilg0hnd77p1l22m06p9rq4f8zfapmavnmzw3xy";
1359 };
1359 };
1360 meta = {
1360 meta = {
1361 license = [ pkgs.lib.licenses.mit ];
1361 license = [ pkgs.lib.licenses.mit ];
1362 };
1362 };
1363 };
1363 };
1364 "pyparsing" = super.buildPythonPackage {
1364 "pyparsing" = super.buildPythonPackage {
1365 name = "pyparsing-2.3.0";
1365 name = "pyparsing-2.3.0";
1366 doCheck = false;
1366 doCheck = false;
1367 src = fetchurl {
1367 src = fetchurl {
1368 url = "https://files.pythonhosted.org/packages/d0/09/3e6a5eeb6e04467b737d55f8bba15247ac0876f98fae659e58cd744430c6/pyparsing-2.3.0.tar.gz";
1368 url = "https://files.pythonhosted.org/packages/d0/09/3e6a5eeb6e04467b737d55f8bba15247ac0876f98fae659e58cd744430c6/pyparsing-2.3.0.tar.gz";
1369 sha256 = "14k5v7n3xqw8kzf42x06bzp184spnlkya2dpjyflax6l3yrallzk";
1369 sha256 = "14k5v7n3xqw8kzf42x06bzp184spnlkya2dpjyflax6l3yrallzk";
1370 };
1370 };
1371 meta = {
1371 meta = {
1372 license = [ pkgs.lib.licenses.mit ];
1372 license = [ pkgs.lib.licenses.mit ];
1373 };
1373 };
1374 };
1374 };
1375 "pyramid" = super.buildPythonPackage {
1375 "pyramid" = super.buildPythonPackage {
1376 name = "pyramid-1.10.4";
1376 name = "pyramid-1.10.4";
1377 doCheck = false;
1377 doCheck = false;
1378 propagatedBuildInputs = [
1378 propagatedBuildInputs = [
1379 self."hupper"
1379 self."hupper"
1380 self."plaster"
1380 self."plaster"
1381 self."plaster-pastedeploy"
1381 self."plaster-pastedeploy"
1382 self."setuptools"
1382 self."setuptools"
1383 self."translationstring"
1383 self."translationstring"
1384 self."venusian"
1384 self."venusian"
1385 self."webob"
1385 self."webob"
1386 self."zope.deprecation"
1386 self."zope.deprecation"
1387 self."zope.interface"
1387 self."zope.interface"
1388 self."repoze.lru"
1388 self."repoze.lru"
1389 ];
1389 ];
1390 src = fetchurl {
1390 src = fetchurl {
1391 url = "https://files.pythonhosted.org/packages/c2/43/1ae701c9c6bb3a434358e678a5e72c96e8aa55cf4cb1d2fa2041b5dd38b7/pyramid-1.10.4.tar.gz";
1391 url = "https://files.pythonhosted.org/packages/c2/43/1ae701c9c6bb3a434358e678a5e72c96e8aa55cf4cb1d2fa2041b5dd38b7/pyramid-1.10.4.tar.gz";
1392 sha256 = "0rkxs1ajycg2zh1c94xlmls56mx5m161sn8112skj0amza6cn36q";
1392 sha256 = "0rkxs1ajycg2zh1c94xlmls56mx5m161sn8112skj0amza6cn36q";
1393 };
1393 };
1394 meta = {
1394 meta = {
1395 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1395 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1396 };
1396 };
1397 };
1397 };
1398 "pyramid-beaker" = super.buildPythonPackage {
1399 name = "pyramid-beaker-0.8";
1400 doCheck = false;
1401 propagatedBuildInputs = [
1402 self."pyramid"
1403 self."beaker"
1404 ];
1405 src = fetchurl {
1406 url = "https://files.pythonhosted.org/packages/d9/6e/b85426e00fd3d57f4545f74e1c3828552d8700f13ededeef9233f7bca8be/pyramid_beaker-0.8.tar.gz";
1407 sha256 = "0hflx3qkcdml1mwpq53sz46s7jickpfn0zy0ns2c7j445j66bp3p";
1408 };
1409 meta = {
1410 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1411 };
1412 };
1413 "pyramid-debugtoolbar" = super.buildPythonPackage {
1398 "pyramid-debugtoolbar" = super.buildPythonPackage {
1414 name = "pyramid-debugtoolbar-4.5";
1399 name = "pyramid-debugtoolbar-4.5";
1415 doCheck = false;
1400 doCheck = false;
1416 propagatedBuildInputs = [
1401 propagatedBuildInputs = [
1417 self."pyramid"
1402 self."pyramid"
1418 self."pyramid-mako"
1403 self."pyramid-mako"
1419 self."repoze.lru"
1404 self."repoze.lru"
1420 self."pygments"
1405 self."pygments"
1421 self."ipaddress"
1406 self."ipaddress"
1422 ];
1407 ];
1423 src = fetchurl {
1408 src = fetchurl {
1424 url = "https://files.pythonhosted.org/packages/14/28/1f240239af340d19ee271ac62958158c79edb01a44ad8c9885508dd003d2/pyramid_debugtoolbar-4.5.tar.gz";
1409 url = "https://files.pythonhosted.org/packages/14/28/1f240239af340d19ee271ac62958158c79edb01a44ad8c9885508dd003d2/pyramid_debugtoolbar-4.5.tar.gz";
1425 sha256 = "0x2p3409pnx66n6dx5vc0mk2r1cp1ydr8mp120w44r9pwcngbibl";
1410 sha256 = "0x2p3409pnx66n6dx5vc0mk2r1cp1ydr8mp120w44r9pwcngbibl";
1426 };
1411 };
1427 meta = {
1412 meta = {
1428 license = [ { fullName = "Repoze Public License"; } pkgs.lib.licenses.bsdOriginal ];
1413 license = [ { fullName = "Repoze Public License"; } pkgs.lib.licenses.bsdOriginal ];
1429 };
1414 };
1430 };
1415 };
1431 "pyramid-jinja2" = super.buildPythonPackage {
1416 "pyramid-jinja2" = super.buildPythonPackage {
1432 name = "pyramid-jinja2-2.7";
1417 name = "pyramid-jinja2-2.7";
1433 doCheck = false;
1418 doCheck = false;
1434 propagatedBuildInputs = [
1419 propagatedBuildInputs = [
1435 self."pyramid"
1420 self."pyramid"
1436 self."zope.deprecation"
1421 self."zope.deprecation"
1437 self."jinja2"
1422 self."jinja2"
1438 self."markupsafe"
1423 self."markupsafe"
1439 ];
1424 ];
1440 src = fetchurl {
1425 src = fetchurl {
1441 url = "https://files.pythonhosted.org/packages/d8/80/d60a7233823de22ce77bd864a8a83736a1fe8b49884b08303a2e68b2c853/pyramid_jinja2-2.7.tar.gz";
1426 url = "https://files.pythonhosted.org/packages/d8/80/d60a7233823de22ce77bd864a8a83736a1fe8b49884b08303a2e68b2c853/pyramid_jinja2-2.7.tar.gz";
1442 sha256 = "1sz5s0pp5jqhf4w22w9527yz8hgdi4mhr6apd6vw1gm5clghh8aw";
1427 sha256 = "1sz5s0pp5jqhf4w22w9527yz8hgdi4mhr6apd6vw1gm5clghh8aw";
1443 };
1428 };
1444 meta = {
1429 meta = {
1445 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1430 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1446 };
1431 };
1447 };
1432 };
1448 "pyramid-mailer" = super.buildPythonPackage {
1433 "pyramid-mailer" = super.buildPythonPackage {
1449 name = "pyramid-mailer-0.15.1";
1434 name = "pyramid-mailer-0.15.1";
1450 doCheck = false;
1435 doCheck = false;
1451 propagatedBuildInputs = [
1436 propagatedBuildInputs = [
1452 self."pyramid"
1437 self."pyramid"
1453 self."repoze.sendmail"
1438 self."repoze.sendmail"
1454 self."transaction"
1439 self."transaction"
1455 ];
1440 ];
1456 src = fetchurl {
1441 src = fetchurl {
1457 url = "https://files.pythonhosted.org/packages/a0/f2/6febf5459dff4d7e653314d575469ad2e11b9d2af2c3606360e1c67202f2/pyramid_mailer-0.15.1.tar.gz";
1442 url = "https://files.pythonhosted.org/packages/a0/f2/6febf5459dff4d7e653314d575469ad2e11b9d2af2c3606360e1c67202f2/pyramid_mailer-0.15.1.tar.gz";
1458 sha256 = "16vg8jb203jgb7b0hd6wllfqvp542qh2ry1gjai2m6qpv5agy2pc";
1443 sha256 = "16vg8jb203jgb7b0hd6wllfqvp542qh2ry1gjai2m6qpv5agy2pc";
1459 };
1444 };
1460 meta = {
1445 meta = {
1461 license = [ pkgs.lib.licenses.bsdOriginal ];
1446 license = [ pkgs.lib.licenses.bsdOriginal ];
1462 };
1447 };
1463 };
1448 };
1464 "pyramid-mako" = super.buildPythonPackage {
1449 "pyramid-mako" = super.buildPythonPackage {
1465 name = "pyramid-mako-1.0.2";
1450 name = "pyramid-mako-1.0.2";
1466 doCheck = false;
1451 doCheck = false;
1467 propagatedBuildInputs = [
1452 propagatedBuildInputs = [
1468 self."pyramid"
1453 self."pyramid"
1469 self."mako"
1454 self."mako"
1470 ];
1455 ];
1471 src = fetchurl {
1456 src = fetchurl {
1472 url = "https://files.pythonhosted.org/packages/f1/92/7e69bcf09676d286a71cb3bbb887b16595b96f9ba7adbdc239ffdd4b1eb9/pyramid_mako-1.0.2.tar.gz";
1457 url = "https://files.pythonhosted.org/packages/f1/92/7e69bcf09676d286a71cb3bbb887b16595b96f9ba7adbdc239ffdd4b1eb9/pyramid_mako-1.0.2.tar.gz";
1473 sha256 = "18gk2vliq8z4acblsl6yzgbvnr9rlxjlcqir47km7kvlk1xri83d";
1458 sha256 = "18gk2vliq8z4acblsl6yzgbvnr9rlxjlcqir47km7kvlk1xri83d";
1474 };
1459 };
1475 meta = {
1460 meta = {
1476 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1461 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1477 };
1462 };
1478 };
1463 };
1479 "pysqlite" = super.buildPythonPackage {
1464 "pysqlite" = super.buildPythonPackage {
1480 name = "pysqlite-2.8.3";
1465 name = "pysqlite-2.8.3";
1481 doCheck = false;
1466 doCheck = false;
1482 src = fetchurl {
1467 src = fetchurl {
1483 url = "https://files.pythonhosted.org/packages/42/02/981b6703e3c83c5b25a829c6e77aad059f9481b0bbacb47e6e8ca12bd731/pysqlite-2.8.3.tar.gz";
1468 url = "https://files.pythonhosted.org/packages/42/02/981b6703e3c83c5b25a829c6e77aad059f9481b0bbacb47e6e8ca12bd731/pysqlite-2.8.3.tar.gz";
1484 sha256 = "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp";
1469 sha256 = "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp";
1485 };
1470 };
1486 meta = {
1471 meta = {
1487 license = [ { fullName = "zlib/libpng License"; } { fullName = "zlib/libpng license"; } ];
1472 license = [ { fullName = "zlib/libpng License"; } { fullName = "zlib/libpng license"; } ];
1488 };
1473 };
1489 };
1474 };
1490 "pytest" = super.buildPythonPackage {
1475 "pytest" = super.buildPythonPackage {
1491 name = "pytest-3.8.2";
1476 name = "pytest-3.8.2";
1492 doCheck = false;
1477 doCheck = false;
1493 propagatedBuildInputs = [
1478 propagatedBuildInputs = [
1494 self."py"
1479 self."py"
1495 self."six"
1480 self."six"
1496 self."setuptools"
1481 self."setuptools"
1497 self."attrs"
1482 self."attrs"
1498 self."more-itertools"
1483 self."more-itertools"
1499 self."atomicwrites"
1484 self."atomicwrites"
1500 self."pluggy"
1485 self."pluggy"
1501 self."funcsigs"
1486 self."funcsigs"
1502 self."pathlib2"
1487 self."pathlib2"
1503 ];
1488 ];
1504 src = fetchurl {
1489 src = fetchurl {
1505 url = "https://files.pythonhosted.org/packages/5f/d2/7f77f406ac505abda02ab4afb50d06ebf304f6ea42fca34f8f37529106b2/pytest-3.8.2.tar.gz";
1490 url = "https://files.pythonhosted.org/packages/5f/d2/7f77f406ac505abda02ab4afb50d06ebf304f6ea42fca34f8f37529106b2/pytest-3.8.2.tar.gz";
1506 sha256 = "18nrwzn61kph2y6gxwfz9ms68rfvr9d4vcffsxng9p7jk9z18clk";
1491 sha256 = "18nrwzn61kph2y6gxwfz9ms68rfvr9d4vcffsxng9p7jk9z18clk";
1507 };
1492 };
1508 meta = {
1493 meta = {
1509 license = [ pkgs.lib.licenses.mit ];
1494 license = [ pkgs.lib.licenses.mit ];
1510 };
1495 };
1511 };
1496 };
1512 "pytest-cov" = super.buildPythonPackage {
1497 "pytest-cov" = super.buildPythonPackage {
1513 name = "pytest-cov-2.6.0";
1498 name = "pytest-cov-2.6.0";
1514 doCheck = false;
1499 doCheck = false;
1515 propagatedBuildInputs = [
1500 propagatedBuildInputs = [
1516 self."pytest"
1501 self."pytest"
1517 self."coverage"
1502 self."coverage"
1518 ];
1503 ];
1519 src = fetchurl {
1504 src = fetchurl {
1520 url = "https://files.pythonhosted.org/packages/d9/e2/58f90a316fbd94dd50bf5c826a23f3f5d079fb3cc448c1e9f0e3c33a3d2a/pytest-cov-2.6.0.tar.gz";
1505 url = "https://files.pythonhosted.org/packages/d9/e2/58f90a316fbd94dd50bf5c826a23f3f5d079fb3cc448c1e9f0e3c33a3d2a/pytest-cov-2.6.0.tar.gz";
1521 sha256 = "0qnpp9y3ygx4jk4pf5ad71fh2skbvnr6gl54m7rg5qysnx4g0q73";
1506 sha256 = "0qnpp9y3ygx4jk4pf5ad71fh2skbvnr6gl54m7rg5qysnx4g0q73";
1522 };
1507 };
1523 meta = {
1508 meta = {
1524 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.mit ];
1509 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.mit ];
1525 };
1510 };
1526 };
1511 };
1527 "pytest-profiling" = super.buildPythonPackage {
1512 "pytest-profiling" = super.buildPythonPackage {
1528 name = "pytest-profiling-1.3.0";
1513 name = "pytest-profiling-1.3.0";
1529 doCheck = false;
1514 doCheck = false;
1530 propagatedBuildInputs = [
1515 propagatedBuildInputs = [
1531 self."six"
1516 self."six"
1532 self."pytest"
1517 self."pytest"
1533 self."gprof2dot"
1518 self."gprof2dot"
1534 ];
1519 ];
1535 src = fetchurl {
1520 src = fetchurl {
1536 url = "https://files.pythonhosted.org/packages/f5/34/4626126e041a51ef50a80d0619519b18d20aef249aac25b0d0fdd47e57ee/pytest-profiling-1.3.0.tar.gz";
1521 url = "https://files.pythonhosted.org/packages/f5/34/4626126e041a51ef50a80d0619519b18d20aef249aac25b0d0fdd47e57ee/pytest-profiling-1.3.0.tar.gz";
1537 sha256 = "08r5afx5z22yvpmsnl91l4amsy1yxn8qsmm61mhp06mz8zjs51kb";
1522 sha256 = "08r5afx5z22yvpmsnl91l4amsy1yxn8qsmm61mhp06mz8zjs51kb";
1538 };
1523 };
1539 meta = {
1524 meta = {
1540 license = [ pkgs.lib.licenses.mit ];
1525 license = [ pkgs.lib.licenses.mit ];
1541 };
1526 };
1542 };
1527 };
1543 "pytest-runner" = super.buildPythonPackage {
1528 "pytest-runner" = super.buildPythonPackage {
1544 name = "pytest-runner-4.2";
1529 name = "pytest-runner-4.2";
1545 doCheck = false;
1530 doCheck = false;
1546 src = fetchurl {
1531 src = fetchurl {
1547 url = "https://files.pythonhosted.org/packages/9e/b7/fe6e8f87f9a756fd06722216f1b6698ccba4d269eac6329d9f0c441d0f93/pytest-runner-4.2.tar.gz";
1532 url = "https://files.pythonhosted.org/packages/9e/b7/fe6e8f87f9a756fd06722216f1b6698ccba4d269eac6329d9f0c441d0f93/pytest-runner-4.2.tar.gz";
1548 sha256 = "1gkpyphawxz38ni1gdq1fmwyqcg02m7ypzqvv46z06crwdxi2gyj";
1533 sha256 = "1gkpyphawxz38ni1gdq1fmwyqcg02m7ypzqvv46z06crwdxi2gyj";
1549 };
1534 };
1550 meta = {
1535 meta = {
1551 license = [ pkgs.lib.licenses.mit ];
1536 license = [ pkgs.lib.licenses.mit ];
1552 };
1537 };
1553 };
1538 };
1554 "pytest-sugar" = super.buildPythonPackage {
1539 "pytest-sugar" = super.buildPythonPackage {
1555 name = "pytest-sugar-0.9.1";
1540 name = "pytest-sugar-0.9.1";
1556 doCheck = false;
1541 doCheck = false;
1557 propagatedBuildInputs = [
1542 propagatedBuildInputs = [
1558 self."pytest"
1543 self."pytest"
1559 self."termcolor"
1544 self."termcolor"
1560 ];
1545 ];
1561 src = fetchurl {
1546 src = fetchurl {
1562 url = "https://files.pythonhosted.org/packages/3e/6a/a3f909083079d03bde11d06ab23088886bbe25f2c97fbe4bb865e2bf05bc/pytest-sugar-0.9.1.tar.gz";
1547 url = "https://files.pythonhosted.org/packages/3e/6a/a3f909083079d03bde11d06ab23088886bbe25f2c97fbe4bb865e2bf05bc/pytest-sugar-0.9.1.tar.gz";
1563 sha256 = "0b4av40dv30727m54v211r0nzwjp2ajkjgxix6j484qjmwpw935b";
1548 sha256 = "0b4av40dv30727m54v211r0nzwjp2ajkjgxix6j484qjmwpw935b";
1564 };
1549 };
1565 meta = {
1550 meta = {
1566 license = [ pkgs.lib.licenses.bsdOriginal ];
1551 license = [ pkgs.lib.licenses.bsdOriginal ];
1567 };
1552 };
1568 };
1553 };
1569 "pytest-timeout" = super.buildPythonPackage {
1554 "pytest-timeout" = super.buildPythonPackage {
1570 name = "pytest-timeout-1.3.2";
1555 name = "pytest-timeout-1.3.2";
1571 doCheck = false;
1556 doCheck = false;
1572 propagatedBuildInputs = [
1557 propagatedBuildInputs = [
1573 self."pytest"
1558 self."pytest"
1574 ];
1559 ];
1575 src = fetchurl {
1560 src = fetchurl {
1576 url = "https://files.pythonhosted.org/packages/8c/3e/1b6a319d12ae7baa3acb7c18ff2c8630a09471a0319d43535c683b4d03eb/pytest-timeout-1.3.2.tar.gz";
1561 url = "https://files.pythonhosted.org/packages/8c/3e/1b6a319d12ae7baa3acb7c18ff2c8630a09471a0319d43535c683b4d03eb/pytest-timeout-1.3.2.tar.gz";
1577 sha256 = "09wnmzvnls2mnsdz7x3c3sk2zdp6jl4dryvyj5i8hqz16q2zq5qi";
1562 sha256 = "09wnmzvnls2mnsdz7x3c3sk2zdp6jl4dryvyj5i8hqz16q2zq5qi";
1578 };
1563 };
1579 meta = {
1564 meta = {
1580 license = [ pkgs.lib.licenses.mit { fullName = "DFSG approved"; } ];
1565 license = [ pkgs.lib.licenses.mit { fullName = "DFSG approved"; } ];
1581 };
1566 };
1582 };
1567 };
1583 "python-dateutil" = super.buildPythonPackage {
1568 "python-dateutil" = super.buildPythonPackage {
1584 name = "python-dateutil-2.8.0";
1569 name = "python-dateutil-2.8.0";
1585 doCheck = false;
1570 doCheck = false;
1586 propagatedBuildInputs = [
1571 propagatedBuildInputs = [
1587 self."six"
1572 self."six"
1588 ];
1573 ];
1589 src = fetchurl {
1574 src = fetchurl {
1590 url = "https://files.pythonhosted.org/packages/ad/99/5b2e99737edeb28c71bcbec5b5dda19d0d9ef3ca3e92e3e925e7c0bb364c/python-dateutil-2.8.0.tar.gz";
1575 url = "https://files.pythonhosted.org/packages/ad/99/5b2e99737edeb28c71bcbec5b5dda19d0d9ef3ca3e92e3e925e7c0bb364c/python-dateutil-2.8.0.tar.gz";
1591 sha256 = "17nsfhy4xdz1khrfxa61vd7pmvd5z0wa3zb6v4gb4kfnykv0b668";
1576 sha256 = "17nsfhy4xdz1khrfxa61vd7pmvd5z0wa3zb6v4gb4kfnykv0b668";
1592 };
1577 };
1593 meta = {
1578 meta = {
1594 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.asl20 { fullName = "Dual License"; } ];
1579 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.asl20 { fullName = "Dual License"; } ];
1595 };
1580 };
1596 };
1581 };
1597 "python-editor" = super.buildPythonPackage {
1582 "python-editor" = super.buildPythonPackage {
1598 name = "python-editor-1.0.4";
1583 name = "python-editor-1.0.4";
1599 doCheck = false;
1584 doCheck = false;
1600 src = fetchurl {
1585 src = fetchurl {
1601 url = "https://files.pythonhosted.org/packages/0a/85/78f4a216d28343a67b7397c99825cff336330893f00601443f7c7b2f2234/python-editor-1.0.4.tar.gz";
1586 url = "https://files.pythonhosted.org/packages/0a/85/78f4a216d28343a67b7397c99825cff336330893f00601443f7c7b2f2234/python-editor-1.0.4.tar.gz";
1602 sha256 = "0yrjh8w72ivqxi4i7xsg5b1vz15x8fg51xra7c3bgfyxqnyadzai";
1587 sha256 = "0yrjh8w72ivqxi4i7xsg5b1vz15x8fg51xra7c3bgfyxqnyadzai";
1603 };
1588 };
1604 meta = {
1589 meta = {
1605 license = [ pkgs.lib.licenses.asl20 { fullName = "Apache"; } ];
1590 license = [ pkgs.lib.licenses.asl20 { fullName = "Apache"; } ];
1606 };
1591 };
1607 };
1592 };
1608 "python-ldap" = super.buildPythonPackage {
1593 "python-ldap" = super.buildPythonPackage {
1609 name = "python-ldap-3.1.0";
1594 name = "python-ldap-3.1.0";
1610 doCheck = false;
1595 doCheck = false;
1611 propagatedBuildInputs = [
1596 propagatedBuildInputs = [
1612 self."pyasn1"
1597 self."pyasn1"
1613 self."pyasn1-modules"
1598 self."pyasn1-modules"
1614 ];
1599 ];
1615 src = fetchurl {
1600 src = fetchurl {
1616 url = "https://files.pythonhosted.org/packages/7f/1c/28d721dff2fcd2fef9d55b40df63a00be26ec8a11e8c6fc612ae642f9cfd/python-ldap-3.1.0.tar.gz";
1601 url = "https://files.pythonhosted.org/packages/7f/1c/28d721dff2fcd2fef9d55b40df63a00be26ec8a11e8c6fc612ae642f9cfd/python-ldap-3.1.0.tar.gz";
1617 sha256 = "1i97nwfnraylyn0myxlf3vciicrf5h6fymrcff9c00k581wmx5s1";
1602 sha256 = "1i97nwfnraylyn0myxlf3vciicrf5h6fymrcff9c00k581wmx5s1";
1618 };
1603 };
1619 meta = {
1604 meta = {
1620 license = [ pkgs.lib.licenses.psfl ];
1605 license = [ pkgs.lib.licenses.psfl ];
1621 };
1606 };
1622 };
1607 };
1623 "python-memcached" = super.buildPythonPackage {
1608 "python-memcached" = super.buildPythonPackage {
1624 name = "python-memcached-1.59";
1609 name = "python-memcached-1.59";
1625 doCheck = false;
1610 doCheck = false;
1626 propagatedBuildInputs = [
1611 propagatedBuildInputs = [
1627 self."six"
1612 self."six"
1628 ];
1613 ];
1629 src = fetchurl {
1614 src = fetchurl {
1630 url = "https://files.pythonhosted.org/packages/90/59/5faf6e3cd8a568dd4f737ddae4f2e54204fd8c51f90bf8df99aca6c22318/python-memcached-1.59.tar.gz";
1615 url = "https://files.pythonhosted.org/packages/90/59/5faf6e3cd8a568dd4f737ddae4f2e54204fd8c51f90bf8df99aca6c22318/python-memcached-1.59.tar.gz";
1631 sha256 = "0kvyapavbirk2x3n1jx4yb9nyigrj1s3x15nm3qhpvhkpqvqdqm2";
1616 sha256 = "0kvyapavbirk2x3n1jx4yb9nyigrj1s3x15nm3qhpvhkpqvqdqm2";
1632 };
1617 };
1633 meta = {
1618 meta = {
1634 license = [ pkgs.lib.licenses.psfl ];
1619 license = [ pkgs.lib.licenses.psfl ];
1635 };
1620 };
1636 };
1621 };
1637 "python-pam" = super.buildPythonPackage {
1622 "python-pam" = super.buildPythonPackage {
1638 name = "python-pam-1.8.4";
1623 name = "python-pam-1.8.4";
1639 doCheck = false;
1624 doCheck = false;
1640 src = fetchurl {
1625 src = fetchurl {
1641 url = "https://files.pythonhosted.org/packages/01/16/544d01cae9f28e0292dbd092b6b8b0bf222b528f362ee768a5bed2140111/python-pam-1.8.4.tar.gz";
1626 url = "https://files.pythonhosted.org/packages/01/16/544d01cae9f28e0292dbd092b6b8b0bf222b528f362ee768a5bed2140111/python-pam-1.8.4.tar.gz";
1642 sha256 = "16whhc0vr7gxsbzvsnq65nq8fs3wwmx755cavm8kkczdkz4djmn8";
1627 sha256 = "16whhc0vr7gxsbzvsnq65nq8fs3wwmx755cavm8kkczdkz4djmn8";
1643 };
1628 };
1644 meta = {
1629 meta = {
1645 license = [ { fullName = "License :: OSI Approved :: MIT License"; } pkgs.lib.licenses.mit ];
1630 license = [ { fullName = "License :: OSI Approved :: MIT License"; } pkgs.lib.licenses.mit ];
1646 };
1631 };
1647 };
1632 };
1648 "python-saml" = super.buildPythonPackage {
1633 "python-saml" = super.buildPythonPackage {
1649 name = "python-saml-2.4.2";
1634 name = "python-saml-2.4.2";
1650 doCheck = false;
1635 doCheck = false;
1651 propagatedBuildInputs = [
1636 propagatedBuildInputs = [
1652 self."dm.xmlsec.binding"
1637 self."dm.xmlsec.binding"
1653 self."isodate"
1638 self."isodate"
1654 self."defusedxml"
1639 self."defusedxml"
1655 ];
1640 ];
1656 src = fetchurl {
1641 src = fetchurl {
1657 url = "https://files.pythonhosted.org/packages/79/a8/a6611017e0883102fd5e2b73c9d90691b8134e38247c04ee1531d3dc647c/python-saml-2.4.2.tar.gz";
1642 url = "https://files.pythonhosted.org/packages/79/a8/a6611017e0883102fd5e2b73c9d90691b8134e38247c04ee1531d3dc647c/python-saml-2.4.2.tar.gz";
1658 sha256 = "0dls4hwvf13yg7x5yfjrghbywg8g38vn5vr0rsf70hli3ydbfm43";
1643 sha256 = "0dls4hwvf13yg7x5yfjrghbywg8g38vn5vr0rsf70hli3ydbfm43";
1659 };
1644 };
1660 meta = {
1645 meta = {
1661 license = [ pkgs.lib.licenses.mit ];
1646 license = [ pkgs.lib.licenses.mit ];
1662 };
1647 };
1663 };
1648 };
1664 "pytz" = super.buildPythonPackage {
1649 "pytz" = super.buildPythonPackage {
1665 name = "pytz-2018.4";
1650 name = "pytz-2018.4";
1666 doCheck = false;
1651 doCheck = false;
1667 src = fetchurl {
1652 src = fetchurl {
1668 url = "https://files.pythonhosted.org/packages/10/76/52efda4ef98e7544321fd8d5d512e11739c1df18b0649551aeccfb1c8376/pytz-2018.4.tar.gz";
1653 url = "https://files.pythonhosted.org/packages/10/76/52efda4ef98e7544321fd8d5d512e11739c1df18b0649551aeccfb1c8376/pytz-2018.4.tar.gz";
1669 sha256 = "0jgpqx3kk2rhv81j1izjxvmx8d0x7hzs1857pgqnixic5wq2ar60";
1654 sha256 = "0jgpqx3kk2rhv81j1izjxvmx8d0x7hzs1857pgqnixic5wq2ar60";
1670 };
1655 };
1671 meta = {
1656 meta = {
1672 license = [ pkgs.lib.licenses.mit ];
1657 license = [ pkgs.lib.licenses.mit ];
1673 };
1658 };
1674 };
1659 };
1675 "pyzmq" = super.buildPythonPackage {
1660 "pyzmq" = super.buildPythonPackage {
1676 name = "pyzmq-14.6.0";
1661 name = "pyzmq-14.6.0";
1677 doCheck = false;
1662 doCheck = false;
1678 src = fetchurl {
1663 src = fetchurl {
1679 url = "https://files.pythonhosted.org/packages/8a/3b/5463d5a9d712cd8bbdac335daece0d69f6a6792da4e3dd89956c0db4e4e6/pyzmq-14.6.0.tar.gz";
1664 url = "https://files.pythonhosted.org/packages/8a/3b/5463d5a9d712cd8bbdac335daece0d69f6a6792da4e3dd89956c0db4e4e6/pyzmq-14.6.0.tar.gz";
1680 sha256 = "1frmbjykvhmdg64g7sn20c9fpamrsfxwci1nhhg8q7jgz5pq0ikp";
1665 sha256 = "1frmbjykvhmdg64g7sn20c9fpamrsfxwci1nhhg8q7jgz5pq0ikp";
1681 };
1666 };
1682 meta = {
1667 meta = {
1683 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "LGPL+BSD"; } { fullName = "GNU Library or Lesser General Public License (LGPL)"; } ];
1668 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "LGPL+BSD"; } { fullName = "GNU Library or Lesser General Public License (LGPL)"; } ];
1684 };
1669 };
1685 };
1670 };
1686 "redis" = super.buildPythonPackage {
1671 "redis" = super.buildPythonPackage {
1687 name = "redis-2.10.6";
1672 name = "redis-2.10.6";
1688 doCheck = false;
1673 doCheck = false;
1689 src = fetchurl {
1674 src = fetchurl {
1690 url = "https://files.pythonhosted.org/packages/09/8d/6d34b75326bf96d4139a2ddd8e74b80840f800a0a79f9294399e212cb9a7/redis-2.10.6.tar.gz";
1675 url = "https://files.pythonhosted.org/packages/09/8d/6d34b75326bf96d4139a2ddd8e74b80840f800a0a79f9294399e212cb9a7/redis-2.10.6.tar.gz";
1691 sha256 = "03vcgklykny0g0wpvqmy8p6azi2s078317wgb2xjv5m2rs9sjb52";
1676 sha256 = "03vcgklykny0g0wpvqmy8p6azi2s078317wgb2xjv5m2rs9sjb52";
1692 };
1677 };
1693 meta = {
1678 meta = {
1694 license = [ pkgs.lib.licenses.mit ];
1679 license = [ pkgs.lib.licenses.mit ];
1695 };
1680 };
1696 };
1681 };
1697 "repoze.lru" = super.buildPythonPackage {
1682 "repoze.lru" = super.buildPythonPackage {
1698 name = "repoze.lru-0.7";
1683 name = "repoze.lru-0.7";
1699 doCheck = false;
1684 doCheck = false;
1700 src = fetchurl {
1685 src = fetchurl {
1701 url = "https://files.pythonhosted.org/packages/12/bc/595a77c4b5e204847fdf19268314ef59c85193a9dc9f83630fc459c0fee5/repoze.lru-0.7.tar.gz";
1686 url = "https://files.pythonhosted.org/packages/12/bc/595a77c4b5e204847fdf19268314ef59c85193a9dc9f83630fc459c0fee5/repoze.lru-0.7.tar.gz";
1702 sha256 = "0xzz1aw2smy8hdszrq8yhnklx6w1r1mf55061kalw3iq35gafa84";
1687 sha256 = "0xzz1aw2smy8hdszrq8yhnklx6w1r1mf55061kalw3iq35gafa84";
1703 };
1688 };
1704 meta = {
1689 meta = {
1705 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1690 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1706 };
1691 };
1707 };
1692 };
1708 "repoze.sendmail" = super.buildPythonPackage {
1693 "repoze.sendmail" = super.buildPythonPackage {
1709 name = "repoze.sendmail-4.4.1";
1694 name = "repoze.sendmail-4.4.1";
1710 doCheck = false;
1695 doCheck = false;
1711 propagatedBuildInputs = [
1696 propagatedBuildInputs = [
1712 self."setuptools"
1697 self."setuptools"
1713 self."zope.interface"
1698 self."zope.interface"
1714 self."transaction"
1699 self."transaction"
1715 ];
1700 ];
1716 src = fetchurl {
1701 src = fetchurl {
1717 url = "https://files.pythonhosted.org/packages/12/4e/8ef1fd5c42765d712427b9c391419a77bd48877886d2cbc5e9f23c8cad9b/repoze.sendmail-4.4.1.tar.gz";
1702 url = "https://files.pythonhosted.org/packages/12/4e/8ef1fd5c42765d712427b9c391419a77bd48877886d2cbc5e9f23c8cad9b/repoze.sendmail-4.4.1.tar.gz";
1718 sha256 = "096ln02jr2afk7ab9j2czxqv2ryqq7m86ah572nqplx52iws73ks";
1703 sha256 = "096ln02jr2afk7ab9j2czxqv2ryqq7m86ah572nqplx52iws73ks";
1719 };
1704 };
1720 meta = {
1705 meta = {
1721 license = [ pkgs.lib.licenses.zpl21 ];
1706 license = [ pkgs.lib.licenses.zpl21 ];
1722 };
1707 };
1723 };
1708 };
1724 "requests" = super.buildPythonPackage {
1709 "requests" = super.buildPythonPackage {
1725 name = "requests-2.9.1";
1710 name = "requests-2.9.1";
1726 doCheck = false;
1711 doCheck = false;
1727 src = fetchurl {
1712 src = fetchurl {
1728 url = "https://files.pythonhosted.org/packages/f9/6d/07c44fb1ebe04d069459a189e7dab9e4abfe9432adcd4477367c25332748/requests-2.9.1.tar.gz";
1713 url = "https://files.pythonhosted.org/packages/f9/6d/07c44fb1ebe04d069459a189e7dab9e4abfe9432adcd4477367c25332748/requests-2.9.1.tar.gz";
1729 sha256 = "0zsqrzlybf25xscgi7ja4s48y2abf9wvjkn47wh984qgs1fq2xy5";
1714 sha256 = "0zsqrzlybf25xscgi7ja4s48y2abf9wvjkn47wh984qgs1fq2xy5";
1730 };
1715 };
1731 meta = {
1716 meta = {
1732 license = [ pkgs.lib.licenses.asl20 ];
1717 license = [ pkgs.lib.licenses.asl20 ];
1733 };
1718 };
1734 };
1719 };
1735 "rhodecode-enterprise-ce" = super.buildPythonPackage {
1720 "rhodecode-enterprise-ce" = super.buildPythonPackage {
1736 name = "rhodecode-enterprise-ce-4.17.0";
1721 name = "rhodecode-enterprise-ce-4.17.0";
1737 buildInputs = [
1722 buildInputs = [
1738 self."pytest"
1723 self."pytest"
1739 self."py"
1724 self."py"
1740 self."pytest-cov"
1725 self."pytest-cov"
1741 self."pytest-sugar"
1726 self."pytest-sugar"
1742 self."pytest-runner"
1727 self."pytest-runner"
1743 self."pytest-profiling"
1728 self."pytest-profiling"
1744 self."pytest-timeout"
1729 self."pytest-timeout"
1745 self."gprof2dot"
1730 self."gprof2dot"
1746 self."mock"
1731 self."mock"
1747 self."cov-core"
1732 self."cov-core"
1748 self."coverage"
1733 self."coverage"
1749 self."webtest"
1734 self."webtest"
1750 self."beautifulsoup4"
1735 self."beautifulsoup4"
1751 self."configobj"
1736 self."configobj"
1752 ];
1737 ];
1753 doCheck = true;
1738 doCheck = true;
1754 propagatedBuildInputs = [
1739 propagatedBuildInputs = [
1755 self."amqp"
1740 self."amqp"
1756 self."authomatic"
1741 self."authomatic"
1757 self."babel"
1742 self."babel"
1758 self."beaker"
1743 self."beaker"
1759 self."bleach"
1744 self."bleach"
1760 self."celery"
1745 self."celery"
1761 self."channelstream"
1746 self."channelstream"
1762 self."click"
1747 self."click"
1763 self."colander"
1748 self."colander"
1764 self."configobj"
1749 self."configobj"
1765 self."cssselect"
1750 self."cssselect"
1766 self."cryptography"
1751 self."cryptography"
1767 self."decorator"
1752 self."decorator"
1768 self."deform"
1753 self."deform"
1769 self."docutils"
1754 self."docutils"
1770 self."dogpile.cache"
1755 self."dogpile.cache"
1771 self."dogpile.core"
1756 self."dogpile.core"
1772 self."formencode"
1757 self."formencode"
1773 self."future"
1758 self."future"
1774 self."futures"
1759 self."futures"
1775 self."infrae.cache"
1760 self."infrae.cache"
1776 self."iso8601"
1761 self."iso8601"
1777 self."itsdangerous"
1762 self."itsdangerous"
1778 self."kombu"
1763 self."kombu"
1779 self."lxml"
1764 self."lxml"
1780 self."mako"
1765 self."mako"
1781 self."markdown"
1766 self."markdown"
1782 self."markupsafe"
1767 self."markupsafe"
1783 self."msgpack-python"
1768 self."msgpack-python"
1784 self."pyotp"
1769 self."pyotp"
1785 self."packaging"
1770 self."packaging"
1786 self."paste"
1771 self."paste"
1787 self."pastedeploy"
1772 self."pastedeploy"
1788 self."pastescript"
1773 self."pastescript"
1789 self."peppercorn"
1774 self."peppercorn"
1790 self."psutil"
1775 self."psutil"
1791 self."py-bcrypt"
1776 self."py-bcrypt"
1792 self."pycurl"
1777 self."pycurl"
1793 self."pycrypto"
1778 self."pycrypto"
1794 self."pygments"
1779 self."pygments"
1795 self."pyparsing"
1780 self."pyparsing"
1796 self."pyramid-beaker"
1797 self."pyramid-debugtoolbar"
1781 self."pyramid-debugtoolbar"
1798 self."pyramid-mako"
1782 self."pyramid-mako"
1799 self."pyramid"
1783 self."pyramid"
1800 self."pyramid-mailer"
1784 self."pyramid-mailer"
1801 self."python-dateutil"
1785 self."python-dateutil"
1802 self."python-ldap"
1786 self."python-ldap"
1803 self."python-memcached"
1787 self."python-memcached"
1804 self."python-pam"
1788 self."python-pam"
1805 self."python-saml"
1789 self."python-saml"
1806 self."pytz"
1790 self."pytz"
1807 self."tzlocal"
1791 self."tzlocal"
1808 self."pyzmq"
1792 self."pyzmq"
1809 self."py-gfm"
1793 self."py-gfm"
1810 self."redis"
1794 self."redis"
1811 self."repoze.lru"
1795 self."repoze.lru"
1812 self."requests"
1796 self."requests"
1813 self."routes"
1797 self."routes"
1814 self."simplejson"
1798 self."simplejson"
1815 self."six"
1799 self."six"
1816 self."sqlalchemy"
1800 self."sqlalchemy"
1817 self."sshpubkeys"
1801 self."sshpubkeys"
1818 self."subprocess32"
1802 self."subprocess32"
1819 self."supervisor"
1803 self."supervisor"
1820 self."translationstring"
1804 self."translationstring"
1821 self."urllib3"
1805 self."urllib3"
1822 self."urlobject"
1806 self."urlobject"
1823 self."venusian"
1807 self."venusian"
1824 self."weberror"
1808 self."weberror"
1825 self."webhelpers2"
1809 self."webhelpers2"
1826 self."webhelpers"
1810 self."webhelpers"
1827 self."webob"
1811 self."webob"
1828 self."whoosh"
1812 self."whoosh"
1829 self."wsgiref"
1813 self."wsgiref"
1830 self."zope.cachedescriptors"
1814 self."zope.cachedescriptors"
1831 self."zope.deprecation"
1815 self."zope.deprecation"
1832 self."zope.event"
1816 self."zope.event"
1833 self."zope.interface"
1817 self."zope.interface"
1834 self."mysql-python"
1818 self."mysql-python"
1835 self."pymysql"
1819 self."pymysql"
1836 self."pysqlite"
1820 self."pysqlite"
1837 self."psycopg2"
1821 self."psycopg2"
1838 self."nbconvert"
1822 self."nbconvert"
1839 self."nbformat"
1823 self."nbformat"
1840 self."jupyter-client"
1824 self."jupyter-client"
1841 self."alembic"
1825 self."alembic"
1842 self."invoke"
1826 self."invoke"
1843 self."bumpversion"
1827 self."bumpversion"
1844 self."gevent"
1828 self."gevent"
1845 self."greenlet"
1829 self."greenlet"
1846 self."gunicorn"
1830 self."gunicorn"
1847 self."waitress"
1831 self."waitress"
1848 self."ipdb"
1832 self."ipdb"
1849 self."ipython"
1833 self."ipython"
1850 self."rhodecode-tools"
1834 self."rhodecode-tools"
1851 self."appenlight-client"
1835 self."appenlight-client"
1852 self."pytest"
1836 self."pytest"
1853 self."py"
1837 self."py"
1854 self."pytest-cov"
1838 self."pytest-cov"
1855 self."pytest-sugar"
1839 self."pytest-sugar"
1856 self."pytest-runner"
1840 self."pytest-runner"
1857 self."pytest-profiling"
1841 self."pytest-profiling"
1858 self."pytest-timeout"
1842 self."pytest-timeout"
1859 self."gprof2dot"
1843 self."gprof2dot"
1860 self."mock"
1844 self."mock"
1861 self."cov-core"
1845 self."cov-core"
1862 self."coverage"
1846 self."coverage"
1863 self."webtest"
1847 self."webtest"
1864 self."beautifulsoup4"
1848 self."beautifulsoup4"
1865 ];
1849 ];
1866 src = ./.;
1850 src = ./.;
1867 meta = {
1851 meta = {
1868 license = [ { fullName = "Affero GNU General Public License v3 or later (AGPLv3+)"; } { fullName = "AGPLv3, and Commercial License"; } ];
1852 license = [ { fullName = "Affero GNU General Public License v3 or later (AGPLv3+)"; } { fullName = "AGPLv3, and Commercial License"; } ];
1869 };
1853 };
1870 };
1854 };
1871 "rhodecode-tools" = super.buildPythonPackage {
1855 "rhodecode-tools" = super.buildPythonPackage {
1872 name = "rhodecode-tools-1.2.1";
1856 name = "rhodecode-tools-1.2.1";
1873 doCheck = false;
1857 doCheck = false;
1874 propagatedBuildInputs = [
1858 propagatedBuildInputs = [
1875 self."click"
1859 self."click"
1876 self."future"
1860 self."future"
1877 self."six"
1861 self."six"
1878 self."mako"
1862 self."mako"
1879 self."markupsafe"
1863 self."markupsafe"
1880 self."requests"
1864 self."requests"
1881 self."urllib3"
1865 self."urllib3"
1882 self."whoosh"
1866 self."whoosh"
1883 self."elasticsearch"
1867 self."elasticsearch"
1884 self."elasticsearch-dsl"
1868 self."elasticsearch-dsl"
1885 self."elasticsearch2"
1869 self."elasticsearch2"
1886 self."elasticsearch1-dsl"
1870 self."elasticsearch1-dsl"
1887 ];
1871 ];
1888 src = fetchurl {
1872 src = fetchurl {
1889 url = "https://code.rhodecode.com/rhodecode-tools-ce/artifacts/download/0-10ac93f4-bb7d-4b97-baea-68110743dd5a.tar.gz?md5=962dc77c06aceee62282b98d33149661";
1873 url = "https://code.rhodecode.com/rhodecode-tools-ce/artifacts/download/0-10ac93f4-bb7d-4b97-baea-68110743dd5a.tar.gz?md5=962dc77c06aceee62282b98d33149661";
1890 sha256 = "1vfhgf46inbx7jvlfx4fdzh3vz7lh37r291gzb5hx447pfm3qllg";
1874 sha256 = "1vfhgf46inbx7jvlfx4fdzh3vz7lh37r291gzb5hx447pfm3qllg";
1891 };
1875 };
1892 meta = {
1876 meta = {
1893 license = [ { fullName = "Apache 2.0 and Proprietary"; } ];
1877 license = [ { fullName = "Apache 2.0 and Proprietary"; } ];
1894 };
1878 };
1895 };
1879 };
1896 "routes" = super.buildPythonPackage {
1880 "routes" = super.buildPythonPackage {
1897 name = "routes-2.4.1";
1881 name = "routes-2.4.1";
1898 doCheck = false;
1882 doCheck = false;
1899 propagatedBuildInputs = [
1883 propagatedBuildInputs = [
1900 self."six"
1884 self."six"
1901 self."repoze.lru"
1885 self."repoze.lru"
1902 ];
1886 ];
1903 src = fetchurl {
1887 src = fetchurl {
1904 url = "https://files.pythonhosted.org/packages/33/38/ea827837e68d9c7dde4cff7ec122a93c319f0effc08ce92a17095576603f/Routes-2.4.1.tar.gz";
1888 url = "https://files.pythonhosted.org/packages/33/38/ea827837e68d9c7dde4cff7ec122a93c319f0effc08ce92a17095576603f/Routes-2.4.1.tar.gz";
1905 sha256 = "1zamff3m0kc4vyfniyhxpkkcqv1rrgnmh37ykxv34nna1ws47vi6";
1889 sha256 = "1zamff3m0kc4vyfniyhxpkkcqv1rrgnmh37ykxv34nna1ws47vi6";
1906 };
1890 };
1907 meta = {
1891 meta = {
1908 license = [ pkgs.lib.licenses.mit ];
1892 license = [ pkgs.lib.licenses.mit ];
1909 };
1893 };
1910 };
1894 };
1911 "scandir" = super.buildPythonPackage {
1895 "scandir" = super.buildPythonPackage {
1912 name = "scandir-1.10.0";
1896 name = "scandir-1.10.0";
1913 doCheck = false;
1897 doCheck = false;
1914 src = fetchurl {
1898 src = fetchurl {
1915 url = "https://files.pythonhosted.org/packages/df/f5/9c052db7bd54d0cbf1bc0bb6554362bba1012d03e5888950a4f5c5dadc4e/scandir-1.10.0.tar.gz";
1899 url = "https://files.pythonhosted.org/packages/df/f5/9c052db7bd54d0cbf1bc0bb6554362bba1012d03e5888950a4f5c5dadc4e/scandir-1.10.0.tar.gz";
1916 sha256 = "1bkqwmf056pkchf05ywbnf659wqlp6lljcdb0y88wr9f0vv32ijd";
1900 sha256 = "1bkqwmf056pkchf05ywbnf659wqlp6lljcdb0y88wr9f0vv32ijd";
1917 };
1901 };
1918 meta = {
1902 meta = {
1919 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "New BSD License"; } ];
1903 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "New BSD License"; } ];
1920 };
1904 };
1921 };
1905 };
1922 "setproctitle" = super.buildPythonPackage {
1906 "setproctitle" = super.buildPythonPackage {
1923 name = "setproctitle-1.1.10";
1907 name = "setproctitle-1.1.10";
1924 doCheck = false;
1908 doCheck = false;
1925 src = fetchurl {
1909 src = fetchurl {
1926 url = "https://files.pythonhosted.org/packages/5a/0d/dc0d2234aacba6cf1a729964383e3452c52096dc695581248b548786f2b3/setproctitle-1.1.10.tar.gz";
1910 url = "https://files.pythonhosted.org/packages/5a/0d/dc0d2234aacba6cf1a729964383e3452c52096dc695581248b548786f2b3/setproctitle-1.1.10.tar.gz";
1927 sha256 = "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2";
1911 sha256 = "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2";
1928 };
1912 };
1929 meta = {
1913 meta = {
1930 license = [ pkgs.lib.licenses.bsdOriginal ];
1914 license = [ pkgs.lib.licenses.bsdOriginal ];
1931 };
1915 };
1932 };
1916 };
1933 "setuptools" = super.buildPythonPackage {
1917 "setuptools" = super.buildPythonPackage {
1934 name = "setuptools-41.0.1";
1918 name = "setuptools-41.0.1";
1935 doCheck = false;
1919 doCheck = false;
1936 src = fetchurl {
1920 src = fetchurl {
1937 url = "https://files.pythonhosted.org/packages/1d/64/a18a487b4391a05b9c7f938b94a16d80305bf0369c6b0b9509e86165e1d3/setuptools-41.0.1.zip";
1921 url = "https://files.pythonhosted.org/packages/1d/64/a18a487b4391a05b9c7f938b94a16d80305bf0369c6b0b9509e86165e1d3/setuptools-41.0.1.zip";
1938 sha256 = "04sns22y2hhsrwfy1mha2lgslvpjsjsz8xws7h2rh5a7ylkd28m2";
1922 sha256 = "04sns22y2hhsrwfy1mha2lgslvpjsjsz8xws7h2rh5a7ylkd28m2";
1939 };
1923 };
1940 meta = {
1924 meta = {
1941 license = [ pkgs.lib.licenses.mit ];
1925 license = [ pkgs.lib.licenses.mit ];
1942 };
1926 };
1943 };
1927 };
1944 "simplegeneric" = super.buildPythonPackage {
1928 "simplegeneric" = super.buildPythonPackage {
1945 name = "simplegeneric-0.8.1";
1929 name = "simplegeneric-0.8.1";
1946 doCheck = false;
1930 doCheck = false;
1947 src = fetchurl {
1931 src = fetchurl {
1948 url = "https://files.pythonhosted.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b/simplegeneric-0.8.1.zip";
1932 url = "https://files.pythonhosted.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b/simplegeneric-0.8.1.zip";
1949 sha256 = "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw";
1933 sha256 = "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw";
1950 };
1934 };
1951 meta = {
1935 meta = {
1952 license = [ pkgs.lib.licenses.zpl21 ];
1936 license = [ pkgs.lib.licenses.zpl21 ];
1953 };
1937 };
1954 };
1938 };
1955 "simplejson" = super.buildPythonPackage {
1939 "simplejson" = super.buildPythonPackage {
1956 name = "simplejson-3.16.0";
1940 name = "simplejson-3.16.0";
1957 doCheck = false;
1941 doCheck = false;
1958 src = fetchurl {
1942 src = fetchurl {
1959 url = "https://files.pythonhosted.org/packages/e3/24/c35fb1c1c315fc0fffe61ea00d3f88e85469004713dab488dee4f35b0aff/simplejson-3.16.0.tar.gz";
1943 url = "https://files.pythonhosted.org/packages/e3/24/c35fb1c1c315fc0fffe61ea00d3f88e85469004713dab488dee4f35b0aff/simplejson-3.16.0.tar.gz";
1960 sha256 = "19cws1syk8jzq2pw43878dv6fjkb0ifvjpx0i9aajix6kc9jkwxi";
1944 sha256 = "19cws1syk8jzq2pw43878dv6fjkb0ifvjpx0i9aajix6kc9jkwxi";
1961 };
1945 };
1962 meta = {
1946 meta = {
1963 license = [ { fullName = "Academic Free License (AFL)"; } pkgs.lib.licenses.mit ];
1947 license = [ { fullName = "Academic Free License (AFL)"; } pkgs.lib.licenses.mit ];
1964 };
1948 };
1965 };
1949 };
1966 "six" = super.buildPythonPackage {
1950 "six" = super.buildPythonPackage {
1967 name = "six-1.11.0";
1951 name = "six-1.11.0";
1968 doCheck = false;
1952 doCheck = false;
1969 src = fetchurl {
1953 src = fetchurl {
1970 url = "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
1954 url = "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
1971 sha256 = "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h";
1955 sha256 = "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h";
1972 };
1956 };
1973 meta = {
1957 meta = {
1974 license = [ pkgs.lib.licenses.mit ];
1958 license = [ pkgs.lib.licenses.mit ];
1975 };
1959 };
1976 };
1960 };
1977 "sqlalchemy" = super.buildPythonPackage {
1961 "sqlalchemy" = super.buildPythonPackage {
1978 name = "sqlalchemy-1.1.18";
1962 name = "sqlalchemy-1.1.18";
1979 doCheck = false;
1963 doCheck = false;
1980 src = fetchurl {
1964 src = fetchurl {
1981 url = "https://files.pythonhosted.org/packages/cc/4d/96d93ff77cd67aca7618e402191eee3490d8f5f245d6ab7622d35fe504f4/SQLAlchemy-1.1.18.tar.gz";
1965 url = "https://files.pythonhosted.org/packages/cc/4d/96d93ff77cd67aca7618e402191eee3490d8f5f245d6ab7622d35fe504f4/SQLAlchemy-1.1.18.tar.gz";
1982 sha256 = "1ab4ysip6irajfbxl9wy27kv76miaz8h6759hfx92499z4dcf3lb";
1966 sha256 = "1ab4ysip6irajfbxl9wy27kv76miaz8h6759hfx92499z4dcf3lb";
1983 };
1967 };
1984 meta = {
1968 meta = {
1985 license = [ pkgs.lib.licenses.mit ];
1969 license = [ pkgs.lib.licenses.mit ];
1986 };
1970 };
1987 };
1971 };
1988 "sshpubkeys" = super.buildPythonPackage {
1972 "sshpubkeys" = super.buildPythonPackage {
1989 name = "sshpubkeys-3.1.0";
1973 name = "sshpubkeys-3.1.0";
1990 doCheck = false;
1974 doCheck = false;
1991 propagatedBuildInputs = [
1975 propagatedBuildInputs = [
1992 self."cryptography"
1976 self."cryptography"
1993 self."ecdsa"
1977 self."ecdsa"
1994 ];
1978 ];
1995 src = fetchurl {
1979 src = fetchurl {
1996 url = "https://files.pythonhosted.org/packages/00/23/f7508a12007c96861c3da811992f14283d79c819d71a217b3e12d5196649/sshpubkeys-3.1.0.tar.gz";
1980 url = "https://files.pythonhosted.org/packages/00/23/f7508a12007c96861c3da811992f14283d79c819d71a217b3e12d5196649/sshpubkeys-3.1.0.tar.gz";
1997 sha256 = "105g2li04nm1hb15a2y6hm9m9k7fbrkd5l3gy12w3kgcmsf3k25k";
1981 sha256 = "105g2li04nm1hb15a2y6hm9m9k7fbrkd5l3gy12w3kgcmsf3k25k";
1998 };
1982 };
1999 meta = {
1983 meta = {
2000 license = [ pkgs.lib.licenses.bsdOriginal ];
1984 license = [ pkgs.lib.licenses.bsdOriginal ];
2001 };
1985 };
2002 };
1986 };
2003 "subprocess32" = super.buildPythonPackage {
1987 "subprocess32" = super.buildPythonPackage {
2004 name = "subprocess32-3.5.4";
1988 name = "subprocess32-3.5.4";
2005 doCheck = false;
1989 doCheck = false;
2006 src = fetchurl {
1990 src = fetchurl {
2007 url = "https://files.pythonhosted.org/packages/32/c8/564be4d12629b912ea431f1a50eb8b3b9d00f1a0b1ceff17f266be190007/subprocess32-3.5.4.tar.gz";
1991 url = "https://files.pythonhosted.org/packages/32/c8/564be4d12629b912ea431f1a50eb8b3b9d00f1a0b1ceff17f266be190007/subprocess32-3.5.4.tar.gz";
2008 sha256 = "17f7mvwx2271s1wrl0qac3wjqqnrqag866zs3qc8v5wp0k43fagb";
1992 sha256 = "17f7mvwx2271s1wrl0qac3wjqqnrqag866zs3qc8v5wp0k43fagb";
2009 };
1993 };
2010 meta = {
1994 meta = {
2011 license = [ pkgs.lib.licenses.psfl ];
1995 license = [ pkgs.lib.licenses.psfl ];
2012 };
1996 };
2013 };
1997 };
2014 "supervisor" = super.buildPythonPackage {
1998 "supervisor" = super.buildPythonPackage {
2015 name = "supervisor-4.0.3";
1999 name = "supervisor-4.0.3";
2016 doCheck = false;
2000 doCheck = false;
2017 propagatedBuildInputs = [
2001 propagatedBuildInputs = [
2018 self."meld3"
2002 self."meld3"
2019 ];
2003 ];
2020 src = fetchurl {
2004 src = fetchurl {
2021 url = "https://files.pythonhosted.org/packages/97/48/f38bf70bd9282d1a18d591616557cc1a77a1c627d57dff66ead65c891dc8/supervisor-4.0.3.tar.gz";
2005 url = "https://files.pythonhosted.org/packages/97/48/f38bf70bd9282d1a18d591616557cc1a77a1c627d57dff66ead65c891dc8/supervisor-4.0.3.tar.gz";
2022 sha256 = "17hla7mx6w5m5jzkkjxgqa8wpswqmfhbhf49f692hw78fg0ans7p";
2006 sha256 = "17hla7mx6w5m5jzkkjxgqa8wpswqmfhbhf49f692hw78fg0ans7p";
2023 };
2007 };
2024 meta = {
2008 meta = {
2025 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
2009 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
2026 };
2010 };
2027 };
2011 };
2028 "tempita" = super.buildPythonPackage {
2012 "tempita" = super.buildPythonPackage {
2029 name = "tempita-0.5.2";
2013 name = "tempita-0.5.2";
2030 doCheck = false;
2014 doCheck = false;
2031 src = fetchurl {
2015 src = fetchurl {
2032 url = "https://files.pythonhosted.org/packages/56/c8/8ed6eee83dbddf7b0fc64dd5d4454bc05e6ccaafff47991f73f2894d9ff4/Tempita-0.5.2.tar.gz";
2016 url = "https://files.pythonhosted.org/packages/56/c8/8ed6eee83dbddf7b0fc64dd5d4454bc05e6ccaafff47991f73f2894d9ff4/Tempita-0.5.2.tar.gz";
2033 sha256 = "177wwq45slfyajd8csy477bmdmzipyw0dm7i85k3akb7m85wzkna";
2017 sha256 = "177wwq45slfyajd8csy477bmdmzipyw0dm7i85k3akb7m85wzkna";
2034 };
2018 };
2035 meta = {
2019 meta = {
2036 license = [ pkgs.lib.licenses.mit ];
2020 license = [ pkgs.lib.licenses.mit ];
2037 };
2021 };
2038 };
2022 };
2039 "termcolor" = super.buildPythonPackage {
2023 "termcolor" = super.buildPythonPackage {
2040 name = "termcolor-1.1.0";
2024 name = "termcolor-1.1.0";
2041 doCheck = false;
2025 doCheck = false;
2042 src = fetchurl {
2026 src = fetchurl {
2043 url = "https://files.pythonhosted.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz";
2027 url = "https://files.pythonhosted.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz";
2044 sha256 = "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x";
2028 sha256 = "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x";
2045 };
2029 };
2046 meta = {
2030 meta = {
2047 license = [ pkgs.lib.licenses.mit ];
2031 license = [ pkgs.lib.licenses.mit ];
2048 };
2032 };
2049 };
2033 };
2050 "testpath" = super.buildPythonPackage {
2034 "testpath" = super.buildPythonPackage {
2051 name = "testpath-0.4.2";
2035 name = "testpath-0.4.2";
2052 doCheck = false;
2036 doCheck = false;
2053 src = fetchurl {
2037 src = fetchurl {
2054 url = "https://files.pythonhosted.org/packages/06/30/9a7e917066d851d8b4117e85794b5f14516419ea714a8a2681ec6aa8a981/testpath-0.4.2.tar.gz";
2038 url = "https://files.pythonhosted.org/packages/06/30/9a7e917066d851d8b4117e85794b5f14516419ea714a8a2681ec6aa8a981/testpath-0.4.2.tar.gz";
2055 sha256 = "1y40hywscnnyb734pnzm55nd8r8kp1072bjxbil83gcd53cv755n";
2039 sha256 = "1y40hywscnnyb734pnzm55nd8r8kp1072bjxbil83gcd53cv755n";
2056 };
2040 };
2057 meta = {
2041 meta = {
2058 license = [ ];
2042 license = [ ];
2059 };
2043 };
2060 };
2044 };
2061 "traitlets" = super.buildPythonPackage {
2045 "traitlets" = super.buildPythonPackage {
2062 name = "traitlets-4.3.2";
2046 name = "traitlets-4.3.2";
2063 doCheck = false;
2047 doCheck = false;
2064 propagatedBuildInputs = [
2048 propagatedBuildInputs = [
2065 self."ipython-genutils"
2049 self."ipython-genutils"
2066 self."six"
2050 self."six"
2067 self."decorator"
2051 self."decorator"
2068 self."enum34"
2052 self."enum34"
2069 ];
2053 ];
2070 src = fetchurl {
2054 src = fetchurl {
2071 url = "https://files.pythonhosted.org/packages/a5/98/7f5ef2fe9e9e071813aaf9cb91d1a732e0a68b6c44a32b38cb8e14c3f069/traitlets-4.3.2.tar.gz";
2055 url = "https://files.pythonhosted.org/packages/a5/98/7f5ef2fe9e9e071813aaf9cb91d1a732e0a68b6c44a32b38cb8e14c3f069/traitlets-4.3.2.tar.gz";
2072 sha256 = "0dbq7sx26xqz5ixs711k5nc88p8a0nqyz6162pwks5dpcz9d4jww";
2056 sha256 = "0dbq7sx26xqz5ixs711k5nc88p8a0nqyz6162pwks5dpcz9d4jww";
2073 };
2057 };
2074 meta = {
2058 meta = {
2075 license = [ pkgs.lib.licenses.bsdOriginal ];
2059 license = [ pkgs.lib.licenses.bsdOriginal ];
2076 };
2060 };
2077 };
2061 };
2078 "transaction" = super.buildPythonPackage {
2062 "transaction" = super.buildPythonPackage {
2079 name = "transaction-2.4.0";
2063 name = "transaction-2.4.0";
2080 doCheck = false;
2064 doCheck = false;
2081 propagatedBuildInputs = [
2065 propagatedBuildInputs = [
2082 self."zope.interface"
2066 self."zope.interface"
2083 ];
2067 ];
2084 src = fetchurl {
2068 src = fetchurl {
2085 url = "https://files.pythonhosted.org/packages/9d/7d/0e8af0d059e052b9dcf2bb5a08aad20ae3e238746bdd3f8701a60969b363/transaction-2.4.0.tar.gz";
2069 url = "https://files.pythonhosted.org/packages/9d/7d/0e8af0d059e052b9dcf2bb5a08aad20ae3e238746bdd3f8701a60969b363/transaction-2.4.0.tar.gz";
2086 sha256 = "17wz1y524ca07vr03yddy8dv0gbscs06dbdywmllxv5rc725jq3j";
2070 sha256 = "17wz1y524ca07vr03yddy8dv0gbscs06dbdywmllxv5rc725jq3j";
2087 };
2071 };
2088 meta = {
2072 meta = {
2089 license = [ pkgs.lib.licenses.zpl21 ];
2073 license = [ pkgs.lib.licenses.zpl21 ];
2090 };
2074 };
2091 };
2075 };
2092 "translationstring" = super.buildPythonPackage {
2076 "translationstring" = super.buildPythonPackage {
2093 name = "translationstring-1.3";
2077 name = "translationstring-1.3";
2094 doCheck = false;
2078 doCheck = false;
2095 src = fetchurl {
2079 src = fetchurl {
2096 url = "https://files.pythonhosted.org/packages/5e/eb/bee578cc150b44c653b63f5ebe258b5d0d812ddac12497e5f80fcad5d0b4/translationstring-1.3.tar.gz";
2080 url = "https://files.pythonhosted.org/packages/5e/eb/bee578cc150b44c653b63f5ebe258b5d0d812ddac12497e5f80fcad5d0b4/translationstring-1.3.tar.gz";
2097 sha256 = "0bdpcnd9pv0131dl08h4zbcwmgc45lyvq3pa224xwan5b3x4rr2f";
2081 sha256 = "0bdpcnd9pv0131dl08h4zbcwmgc45lyvq3pa224xwan5b3x4rr2f";
2098 };
2082 };
2099 meta = {
2083 meta = {
2100 license = [ { fullName = "BSD-like (http://repoze.org/license.html)"; } ];
2084 license = [ { fullName = "BSD-like (http://repoze.org/license.html)"; } ];
2101 };
2085 };
2102 };
2086 };
2103 "tzlocal" = super.buildPythonPackage {
2087 "tzlocal" = super.buildPythonPackage {
2104 name = "tzlocal-1.5.1";
2088 name = "tzlocal-1.5.1";
2105 doCheck = false;
2089 doCheck = false;
2106 propagatedBuildInputs = [
2090 propagatedBuildInputs = [
2107 self."pytz"
2091 self."pytz"
2108 ];
2092 ];
2109 src = fetchurl {
2093 src = fetchurl {
2110 url = "https://files.pythonhosted.org/packages/cb/89/e3687d3ed99bc882793f82634e9824e62499fdfdc4b1ae39e211c5b05017/tzlocal-1.5.1.tar.gz";
2094 url = "https://files.pythonhosted.org/packages/cb/89/e3687d3ed99bc882793f82634e9824e62499fdfdc4b1ae39e211c5b05017/tzlocal-1.5.1.tar.gz";
2111 sha256 = "0kiciwiqx0bv0fbc913idxibc4ygg4cb7f8rcpd9ij2shi4bigjf";
2095 sha256 = "0kiciwiqx0bv0fbc913idxibc4ygg4cb7f8rcpd9ij2shi4bigjf";
2112 };
2096 };
2113 meta = {
2097 meta = {
2114 license = [ pkgs.lib.licenses.mit ];
2098 license = [ pkgs.lib.licenses.mit ];
2115 };
2099 };
2116 };
2100 };
2117 "urllib3" = super.buildPythonPackage {
2101 "urllib3" = super.buildPythonPackage {
2118 name = "urllib3-1.24.1";
2102 name = "urllib3-1.24.1";
2119 doCheck = false;
2103 doCheck = false;
2120 src = fetchurl {
2104 src = fetchurl {
2121 url = "https://files.pythonhosted.org/packages/b1/53/37d82ab391393565f2f831b8eedbffd57db5a718216f82f1a8b4d381a1c1/urllib3-1.24.1.tar.gz";
2105 url = "https://files.pythonhosted.org/packages/b1/53/37d82ab391393565f2f831b8eedbffd57db5a718216f82f1a8b4d381a1c1/urllib3-1.24.1.tar.gz";
2122 sha256 = "08lwd9f3hqznyf32vnzwvp87pchx062nkbgyrf67rwlkgj0jk5fy";
2106 sha256 = "08lwd9f3hqznyf32vnzwvp87pchx062nkbgyrf67rwlkgj0jk5fy";
2123 };
2107 };
2124 meta = {
2108 meta = {
2125 license = [ pkgs.lib.licenses.mit ];
2109 license = [ pkgs.lib.licenses.mit ];
2126 };
2110 };
2127 };
2111 };
2128 "urlobject" = super.buildPythonPackage {
2112 "urlobject" = super.buildPythonPackage {
2129 name = "urlobject-2.4.3";
2113 name = "urlobject-2.4.3";
2130 doCheck = false;
2114 doCheck = false;
2131 src = fetchurl {
2115 src = fetchurl {
2132 url = "https://files.pythonhosted.org/packages/e2/b8/1d0a916f4b34c4618846e6da0e4eeaa8fcb4a2f39e006434fe38acb74b34/URLObject-2.4.3.tar.gz";
2116 url = "https://files.pythonhosted.org/packages/e2/b8/1d0a916f4b34c4618846e6da0e4eeaa8fcb4a2f39e006434fe38acb74b34/URLObject-2.4.3.tar.gz";
2133 sha256 = "1ahc8ficzfvr2avln71immfh4ls0zyv6cdaa5xmkdj5rd87f5cj7";
2117 sha256 = "1ahc8ficzfvr2avln71immfh4ls0zyv6cdaa5xmkdj5rd87f5cj7";
2134 };
2118 };
2135 meta = {
2119 meta = {
2136 license = [ pkgs.lib.licenses.publicDomain ];
2120 license = [ pkgs.lib.licenses.publicDomain ];
2137 };
2121 };
2138 };
2122 };
2139 "venusian" = super.buildPythonPackage {
2123 "venusian" = super.buildPythonPackage {
2140 name = "venusian-1.2.0";
2124 name = "venusian-1.2.0";
2141 doCheck = false;
2125 doCheck = false;
2142 src = fetchurl {
2126 src = fetchurl {
2143 url = "https://files.pythonhosted.org/packages/7e/6f/40a9d43ac77cb51cb62be5b5662d170f43f8037bdc4eab56336c4ca92bb7/venusian-1.2.0.tar.gz";
2127 url = "https://files.pythonhosted.org/packages/7e/6f/40a9d43ac77cb51cb62be5b5662d170f43f8037bdc4eab56336c4ca92bb7/venusian-1.2.0.tar.gz";
2144 sha256 = "0ghyx66g8ikx9nx1mnwqvdcqm11i1vlq0hnvwl50s48bp22q5v34";
2128 sha256 = "0ghyx66g8ikx9nx1mnwqvdcqm11i1vlq0hnvwl50s48bp22q5v34";
2145 };
2129 };
2146 meta = {
2130 meta = {
2147 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
2131 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
2148 };
2132 };
2149 };
2133 };
2150 "vine" = super.buildPythonPackage {
2134 "vine" = super.buildPythonPackage {
2151 name = "vine-1.3.0";
2135 name = "vine-1.3.0";
2152 doCheck = false;
2136 doCheck = false;
2153 src = fetchurl {
2137 src = fetchurl {
2154 url = "https://files.pythonhosted.org/packages/1c/e1/79fb8046e607dd6c2ad05c9b8ebac9d0bd31d086a08f02699e96fc5b3046/vine-1.3.0.tar.gz";
2138 url = "https://files.pythonhosted.org/packages/1c/e1/79fb8046e607dd6c2ad05c9b8ebac9d0bd31d086a08f02699e96fc5b3046/vine-1.3.0.tar.gz";
2155 sha256 = "11ydsbhl1vabndc2r979dv61s6j2b0giq6dgvryifvq1m7bycghk";
2139 sha256 = "11ydsbhl1vabndc2r979dv61s6j2b0giq6dgvryifvq1m7bycghk";
2156 };
2140 };
2157 meta = {
2141 meta = {
2158 license = [ pkgs.lib.licenses.bsdOriginal ];
2142 license = [ pkgs.lib.licenses.bsdOriginal ];
2159 };
2143 };
2160 };
2144 };
2161 "waitress" = super.buildPythonPackage {
2145 "waitress" = super.buildPythonPackage {
2162 name = "waitress-1.3.0";
2146 name = "waitress-1.3.0";
2163 doCheck = false;
2147 doCheck = false;
2164 src = fetchurl {
2148 src = fetchurl {
2165 url = "https://files.pythonhosted.org/packages/43/50/9890471320d5ad22761ae46661cf745f487b1c8c4ec49352b99e1078b970/waitress-1.3.0.tar.gz";
2149 url = "https://files.pythonhosted.org/packages/43/50/9890471320d5ad22761ae46661cf745f487b1c8c4ec49352b99e1078b970/waitress-1.3.0.tar.gz";
2166 sha256 = "09j5dzbbcxib7vdskhx39s1qsydlr4n2p2png71d7mjnr9pnwajf";
2150 sha256 = "09j5dzbbcxib7vdskhx39s1qsydlr4n2p2png71d7mjnr9pnwajf";
2167 };
2151 };
2168 meta = {
2152 meta = {
2169 license = [ pkgs.lib.licenses.zpl21 ];
2153 license = [ pkgs.lib.licenses.zpl21 ];
2170 };
2154 };
2171 };
2155 };
2172 "wcwidth" = super.buildPythonPackage {
2156 "wcwidth" = super.buildPythonPackage {
2173 name = "wcwidth-0.1.7";
2157 name = "wcwidth-0.1.7";
2174 doCheck = false;
2158 doCheck = false;
2175 src = fetchurl {
2159 src = fetchurl {
2176 url = "https://files.pythonhosted.org/packages/55/11/e4a2bb08bb450fdbd42cc709dd40de4ed2c472cf0ccb9e64af22279c5495/wcwidth-0.1.7.tar.gz";
2160 url = "https://files.pythonhosted.org/packages/55/11/e4a2bb08bb450fdbd42cc709dd40de4ed2c472cf0ccb9e64af22279c5495/wcwidth-0.1.7.tar.gz";
2177 sha256 = "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx";
2161 sha256 = "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx";
2178 };
2162 };
2179 meta = {
2163 meta = {
2180 license = [ pkgs.lib.licenses.mit ];
2164 license = [ pkgs.lib.licenses.mit ];
2181 };
2165 };
2182 };
2166 };
2183 "webencodings" = super.buildPythonPackage {
2167 "webencodings" = super.buildPythonPackage {
2184 name = "webencodings-0.5.1";
2168 name = "webencodings-0.5.1";
2185 doCheck = false;
2169 doCheck = false;
2186 src = fetchurl {
2170 src = fetchurl {
2187 url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz";
2171 url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz";
2188 sha256 = "08qrgrc4hrximb2gqnl69g01s93rhf2842jfxdjljc1dbwj1qsmk";
2172 sha256 = "08qrgrc4hrximb2gqnl69g01s93rhf2842jfxdjljc1dbwj1qsmk";
2189 };
2173 };
2190 meta = {
2174 meta = {
2191 license = [ pkgs.lib.licenses.bsdOriginal ];
2175 license = [ pkgs.lib.licenses.bsdOriginal ];
2192 };
2176 };
2193 };
2177 };
2194 "weberror" = super.buildPythonPackage {
2178 "weberror" = super.buildPythonPackage {
2195 name = "weberror-0.10.3";
2179 name = "weberror-0.10.3";
2196 doCheck = false;
2180 doCheck = false;
2197 propagatedBuildInputs = [
2181 propagatedBuildInputs = [
2198 self."webob"
2182 self."webob"
2199 self."tempita"
2183 self."tempita"
2200 self."pygments"
2184 self."pygments"
2201 self."paste"
2185 self."paste"
2202 ];
2186 ];
2203 src = fetchurl {
2187 src = fetchurl {
2204 url = "https://files.pythonhosted.org/packages/35/76/e7e5c2ce7e9c7f31b54c1ff295a495886d1279a002557d74dd8957346a79/WebError-0.10.3.tar.gz";
2188 url = "https://files.pythonhosted.org/packages/35/76/e7e5c2ce7e9c7f31b54c1ff295a495886d1279a002557d74dd8957346a79/WebError-0.10.3.tar.gz";
2205 sha256 = "0frg4kvycqpj5bi8asfqfs6bxsr2cvjvb6b56c4d1ai1z57kbjx6";
2189 sha256 = "0frg4kvycqpj5bi8asfqfs6bxsr2cvjvb6b56c4d1ai1z57kbjx6";
2206 };
2190 };
2207 meta = {
2191 meta = {
2208 license = [ pkgs.lib.licenses.mit ];
2192 license = [ pkgs.lib.licenses.mit ];
2209 };
2193 };
2210 };
2194 };
2211 "webhelpers" = super.buildPythonPackage {
2195 "webhelpers" = super.buildPythonPackage {
2212 name = "webhelpers-1.3";
2196 name = "webhelpers-1.3";
2213 doCheck = false;
2197 doCheck = false;
2214 propagatedBuildInputs = [
2198 propagatedBuildInputs = [
2215 self."markupsafe"
2199 self."markupsafe"
2216 ];
2200 ];
2217 src = fetchurl {
2201 src = fetchurl {
2218 url = "https://files.pythonhosted.org/packages/ee/68/4d07672821d514184357f1552f2dad923324f597e722de3b016ca4f7844f/WebHelpers-1.3.tar.gz";
2202 url = "https://files.pythonhosted.org/packages/ee/68/4d07672821d514184357f1552f2dad923324f597e722de3b016ca4f7844f/WebHelpers-1.3.tar.gz";
2219 sha256 = "10x5i82qdkrvyw18gsybwggfhfpl869siaab89vnndi9x62g51pa";
2203 sha256 = "10x5i82qdkrvyw18gsybwggfhfpl869siaab89vnndi9x62g51pa";
2220 };
2204 };
2221 meta = {
2205 meta = {
2222 license = [ pkgs.lib.licenses.bsdOriginal ];
2206 license = [ pkgs.lib.licenses.bsdOriginal ];
2223 };
2207 };
2224 };
2208 };
2225 "webhelpers2" = super.buildPythonPackage {
2209 "webhelpers2" = super.buildPythonPackage {
2226 name = "webhelpers2-2.0";
2210 name = "webhelpers2-2.0";
2227 doCheck = false;
2211 doCheck = false;
2228 propagatedBuildInputs = [
2212 propagatedBuildInputs = [
2229 self."markupsafe"
2213 self."markupsafe"
2230 self."six"
2214 self."six"
2231 ];
2215 ];
2232 src = fetchurl {
2216 src = fetchurl {
2233 url = "https://files.pythonhosted.org/packages/ff/30/56342c6ea522439e3662427c8d7b5e5b390dff4ff2dc92d8afcb8ab68b75/WebHelpers2-2.0.tar.gz";
2217 url = "https://files.pythonhosted.org/packages/ff/30/56342c6ea522439e3662427c8d7b5e5b390dff4ff2dc92d8afcb8ab68b75/WebHelpers2-2.0.tar.gz";
2234 sha256 = "0aphva1qmxh83n01p53f5fd43m4srzbnfbz5ajvbx9aj2aipwmcs";
2218 sha256 = "0aphva1qmxh83n01p53f5fd43m4srzbnfbz5ajvbx9aj2aipwmcs";
2235 };
2219 };
2236 meta = {
2220 meta = {
2237 license = [ pkgs.lib.licenses.mit ];
2221 license = [ pkgs.lib.licenses.mit ];
2238 };
2222 };
2239 };
2223 };
2240 "webob" = super.buildPythonPackage {
2224 "webob" = super.buildPythonPackage {
2241 name = "webob-1.8.5";
2225 name = "webob-1.8.5";
2242 doCheck = false;
2226 doCheck = false;
2243 src = fetchurl {
2227 src = fetchurl {
2244 url = "https://files.pythonhosted.org/packages/9d/1a/0c89c070ee2829c934cb6c7082287c822e28236a4fcf90063e6be7c35532/WebOb-1.8.5.tar.gz";
2228 url = "https://files.pythonhosted.org/packages/9d/1a/0c89c070ee2829c934cb6c7082287c822e28236a4fcf90063e6be7c35532/WebOb-1.8.5.tar.gz";
2245 sha256 = "11khpzaxc88q31v25ic330gsf56fwmbdc9b30br8mvp0fmwspah5";
2229 sha256 = "11khpzaxc88q31v25ic330gsf56fwmbdc9b30br8mvp0fmwspah5";
2246 };
2230 };
2247 meta = {
2231 meta = {
2248 license = [ pkgs.lib.licenses.mit ];
2232 license = [ pkgs.lib.licenses.mit ];
2249 };
2233 };
2250 };
2234 };
2251 "webtest" = super.buildPythonPackage {
2235 "webtest" = super.buildPythonPackage {
2252 name = "webtest-2.0.33";
2236 name = "webtest-2.0.33";
2253 doCheck = false;
2237 doCheck = false;
2254 propagatedBuildInputs = [
2238 propagatedBuildInputs = [
2255 self."six"
2239 self."six"
2256 self."webob"
2240 self."webob"
2257 self."waitress"
2241 self."waitress"
2258 self."beautifulsoup4"
2242 self."beautifulsoup4"
2259 ];
2243 ];
2260 src = fetchurl {
2244 src = fetchurl {
2261 url = "https://files.pythonhosted.org/packages/a8/b0/ffc9413b637dbe26e291429bb0f6ed731e518d0cd03da28524a8fe2e8a8f/WebTest-2.0.33.tar.gz";
2245 url = "https://files.pythonhosted.org/packages/a8/b0/ffc9413b637dbe26e291429bb0f6ed731e518d0cd03da28524a8fe2e8a8f/WebTest-2.0.33.tar.gz";
2262 sha256 = "1l3z0cwqslsf4rcrhi2gr8kdfh74wn2dw76376i4g9i38gz8wd21";
2246 sha256 = "1l3z0cwqslsf4rcrhi2gr8kdfh74wn2dw76376i4g9i38gz8wd21";
2263 };
2247 };
2264 meta = {
2248 meta = {
2265 license = [ pkgs.lib.licenses.mit ];
2249 license = [ pkgs.lib.licenses.mit ];
2266 };
2250 };
2267 };
2251 };
2268 "whoosh" = super.buildPythonPackage {
2252 "whoosh" = super.buildPythonPackage {
2269 name = "whoosh-2.7.4";
2253 name = "whoosh-2.7.4";
2270 doCheck = false;
2254 doCheck = false;
2271 src = fetchurl {
2255 src = fetchurl {
2272 url = "https://files.pythonhosted.org/packages/25/2b/6beed2107b148edc1321da0d489afc4617b9ed317ef7b72d4993cad9b684/Whoosh-2.7.4.tar.gz";
2256 url = "https://files.pythonhosted.org/packages/25/2b/6beed2107b148edc1321da0d489afc4617b9ed317ef7b72d4993cad9b684/Whoosh-2.7.4.tar.gz";
2273 sha256 = "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw";
2257 sha256 = "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw";
2274 };
2258 };
2275 meta = {
2259 meta = {
2276 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.bsd2 ];
2260 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.bsd2 ];
2277 };
2261 };
2278 };
2262 };
2279 "ws4py" = super.buildPythonPackage {
2263 "ws4py" = super.buildPythonPackage {
2280 name = "ws4py-0.5.1";
2264 name = "ws4py-0.5.1";
2281 doCheck = false;
2265 doCheck = false;
2282 src = fetchurl {
2266 src = fetchurl {
2283 url = "https://files.pythonhosted.org/packages/53/20/4019a739b2eefe9282d3822ef6a225250af964b117356971bd55e274193c/ws4py-0.5.1.tar.gz";
2267 url = "https://files.pythonhosted.org/packages/53/20/4019a739b2eefe9282d3822ef6a225250af964b117356971bd55e274193c/ws4py-0.5.1.tar.gz";
2284 sha256 = "10slbbf2jm4hpr92jx7kh7mhf48sjl01v2w4d8z3f1p0ybbp7l19";
2268 sha256 = "10slbbf2jm4hpr92jx7kh7mhf48sjl01v2w4d8z3f1p0ybbp7l19";
2285 };
2269 };
2286 meta = {
2270 meta = {
2287 license = [ pkgs.lib.licenses.bsdOriginal ];
2271 license = [ pkgs.lib.licenses.bsdOriginal ];
2288 };
2272 };
2289 };
2273 };
2290 "wsgiref" = super.buildPythonPackage {
2274 "wsgiref" = super.buildPythonPackage {
2291 name = "wsgiref-0.1.2";
2275 name = "wsgiref-0.1.2";
2292 doCheck = false;
2276 doCheck = false;
2293 src = fetchurl {
2277 src = fetchurl {
2294 url = "https://files.pythonhosted.org/packages/41/9e/309259ce8dff8c596e8c26df86dbc4e848b9249fd36797fd60be456f03fc/wsgiref-0.1.2.zip";
2278 url = "https://files.pythonhosted.org/packages/41/9e/309259ce8dff8c596e8c26df86dbc4e848b9249fd36797fd60be456f03fc/wsgiref-0.1.2.zip";
2295 sha256 = "0y8fyjmpq7vwwm4x732w97qbkw78rjwal5409k04cw4m03411rn7";
2279 sha256 = "0y8fyjmpq7vwwm4x732w97qbkw78rjwal5409k04cw4m03411rn7";
2296 };
2280 };
2297 meta = {
2281 meta = {
2298 license = [ { fullName = "PSF or ZPL"; } ];
2282 license = [ { fullName = "PSF or ZPL"; } ];
2299 };
2283 };
2300 };
2284 };
2301 "zope.cachedescriptors" = super.buildPythonPackage {
2285 "zope.cachedescriptors" = super.buildPythonPackage {
2302 name = "zope.cachedescriptors-4.3.1";
2286 name = "zope.cachedescriptors-4.3.1";
2303 doCheck = false;
2287 doCheck = false;
2304 propagatedBuildInputs = [
2288 propagatedBuildInputs = [
2305 self."setuptools"
2289 self."setuptools"
2306 ];
2290 ];
2307 src = fetchurl {
2291 src = fetchurl {
2308 url = "https://files.pythonhosted.org/packages/2f/89/ebe1890cc6d3291ebc935558fa764d5fffe571018dbbee200e9db78762cb/zope.cachedescriptors-4.3.1.tar.gz";
2292 url = "https://files.pythonhosted.org/packages/2f/89/ebe1890cc6d3291ebc935558fa764d5fffe571018dbbee200e9db78762cb/zope.cachedescriptors-4.3.1.tar.gz";
2309 sha256 = "0jhr3m5p74c6r7k8iv0005b8bfsialih9d7zl5vx38rf5xq1lk8z";
2293 sha256 = "0jhr3m5p74c6r7k8iv0005b8bfsialih9d7zl5vx38rf5xq1lk8z";
2310 };
2294 };
2311 meta = {
2295 meta = {
2312 license = [ pkgs.lib.licenses.zpl21 ];
2296 license = [ pkgs.lib.licenses.zpl21 ];
2313 };
2297 };
2314 };
2298 };
2315 "zope.deprecation" = super.buildPythonPackage {
2299 "zope.deprecation" = super.buildPythonPackage {
2316 name = "zope.deprecation-4.4.0";
2300 name = "zope.deprecation-4.4.0";
2317 doCheck = false;
2301 doCheck = false;
2318 propagatedBuildInputs = [
2302 propagatedBuildInputs = [
2319 self."setuptools"
2303 self."setuptools"
2320 ];
2304 ];
2321 src = fetchurl {
2305 src = fetchurl {
2322 url = "https://files.pythonhosted.org/packages/34/da/46e92d32d545dd067b9436279d84c339e8b16de2ca393d7b892bc1e1e9fd/zope.deprecation-4.4.0.tar.gz";
2306 url = "https://files.pythonhosted.org/packages/34/da/46e92d32d545dd067b9436279d84c339e8b16de2ca393d7b892bc1e1e9fd/zope.deprecation-4.4.0.tar.gz";
2323 sha256 = "1pz2cv7gv9y1r3m0bdv7ks1alagmrn5msm5spwdzkb2by0w36i8d";
2307 sha256 = "1pz2cv7gv9y1r3m0bdv7ks1alagmrn5msm5spwdzkb2by0w36i8d";
2324 };
2308 };
2325 meta = {
2309 meta = {
2326 license = [ pkgs.lib.licenses.zpl21 ];
2310 license = [ pkgs.lib.licenses.zpl21 ];
2327 };
2311 };
2328 };
2312 };
2329 "zope.event" = super.buildPythonPackage {
2313 "zope.event" = super.buildPythonPackage {
2330 name = "zope.event-4.4";
2314 name = "zope.event-4.4";
2331 doCheck = false;
2315 doCheck = false;
2332 propagatedBuildInputs = [
2316 propagatedBuildInputs = [
2333 self."setuptools"
2317 self."setuptools"
2334 ];
2318 ];
2335 src = fetchurl {
2319 src = fetchurl {
2336 url = "https://files.pythonhosted.org/packages/4c/b2/51c0369adcf5be2334280eed230192ab3b03f81f8efda9ddea6f65cc7b32/zope.event-4.4.tar.gz";
2320 url = "https://files.pythonhosted.org/packages/4c/b2/51c0369adcf5be2334280eed230192ab3b03f81f8efda9ddea6f65cc7b32/zope.event-4.4.tar.gz";
2337 sha256 = "1ksbc726av9xacml6jhcfyn828hlhb9xlddpx6fcvnlvmpmpvhk9";
2321 sha256 = "1ksbc726av9xacml6jhcfyn828hlhb9xlddpx6fcvnlvmpmpvhk9";
2338 };
2322 };
2339 meta = {
2323 meta = {
2340 license = [ pkgs.lib.licenses.zpl21 ];
2324 license = [ pkgs.lib.licenses.zpl21 ];
2341 };
2325 };
2342 };
2326 };
2343 "zope.interface" = super.buildPythonPackage {
2327 "zope.interface" = super.buildPythonPackage {
2344 name = "zope.interface-4.6.0";
2328 name = "zope.interface-4.6.0";
2345 doCheck = false;
2329 doCheck = false;
2346 propagatedBuildInputs = [
2330 propagatedBuildInputs = [
2347 self."setuptools"
2331 self."setuptools"
2348 ];
2332 ];
2349 src = fetchurl {
2333 src = fetchurl {
2350 url = "https://files.pythonhosted.org/packages/4e/d0/c9d16bd5b38de44a20c6dc5d5ed80a49626fafcb3db9f9efdc2a19026db6/zope.interface-4.6.0.tar.gz";
2334 url = "https://files.pythonhosted.org/packages/4e/d0/c9d16bd5b38de44a20c6dc5d5ed80a49626fafcb3db9f9efdc2a19026db6/zope.interface-4.6.0.tar.gz";
2351 sha256 = "1rgh2x3rcl9r0v0499kf78xy86rnmanajf4ywmqb943wpk50sg8v";
2335 sha256 = "1rgh2x3rcl9r0v0499kf78xy86rnmanajf4ywmqb943wpk50sg8v";
2352 };
2336 };
2353 meta = {
2337 meta = {
2354 license = [ pkgs.lib.licenses.zpl21 ];
2338 license = [ pkgs.lib.licenses.zpl21 ];
2355 };
2339 };
2356 };
2340 };
2357
2341
2358 ### Test requirements
2342 ### Test requirements
2359
2343
2360
2344
2361 }
2345 }
@@ -1,124 +1,123 b''
1 ## dependencies
1 ## dependencies
2
2
3 amqp==2.3.1
3 amqp==2.3.1
4 # not released authomatic that has updated some oauth providers
4 # not released authomatic that has updated some oauth providers
5 https://code.rhodecode.com/upstream/authomatic/artifacts/download/0-4fe9c041-a567-4f84-be4c-7efa2a606d3c.tar.gz?md5=f6bdc3c769688212db68233e8d2b0383#egg=authomatic==0.1.0.post1
5 https://code.rhodecode.com/upstream/authomatic/artifacts/download/0-4fe9c041-a567-4f84-be4c-7efa2a606d3c.tar.gz?md5=f6bdc3c769688212db68233e8d2b0383#egg=authomatic==0.1.0.post1
6
6
7 babel==1.3
7 babel==1.3
8 beaker==1.9.1
8 beaker==1.9.1
9 bleach==3.1.0
9 bleach==3.1.0
10 celery==4.1.1
10 celery==4.1.1
11 channelstream==0.5.2
11 channelstream==0.5.2
12 click==7.0
12 click==7.0
13 colander==1.7.0
13 colander==1.7.0
14 # our custom configobj
14 # our custom configobj
15 https://code.rhodecode.com/upstream/configobj/artifacts/download/0-012de99a-b1e1-4f64-a5c0-07a98a41b324.tar.gz?md5=6a513f51fe04b2c18cf84c1395a7c626#egg=configobj==5.0.6
15 https://code.rhodecode.com/upstream/configobj/artifacts/download/0-012de99a-b1e1-4f64-a5c0-07a98a41b324.tar.gz?md5=6a513f51fe04b2c18cf84c1395a7c626#egg=configobj==5.0.6
16 cssselect==1.0.3
16 cssselect==1.0.3
17 cryptography==2.6.1
17 cryptography==2.6.1
18 decorator==4.1.2
18 decorator==4.1.2
19 deform==2.0.7
19 deform==2.0.7
20 docutils==0.14.0
20 docutils==0.14.0
21 dogpile.cache==0.7.1
21 dogpile.cache==0.7.1
22 dogpile.core==0.4.1
22 dogpile.core==0.4.1
23 formencode==1.2.4
23 formencode==1.2.4
24 future==0.14.3
24 future==0.14.3
25 futures==3.0.2
25 futures==3.0.2
26 infrae.cache==1.0.1
26 infrae.cache==1.0.1
27 iso8601==0.1.12
27 iso8601==0.1.12
28 itsdangerous==0.24
28 itsdangerous==0.24
29 kombu==4.2.1
29 kombu==4.2.1
30 lxml==4.2.5
30 lxml==4.2.5
31 mako==1.0.7
31 mako==1.0.7
32 markdown==2.6.11
32 markdown==2.6.11
33 markupsafe==1.1.0
33 markupsafe==1.1.0
34 msgpack-python==0.5.6
34 msgpack-python==0.5.6
35 pyotp==2.2.7
35 pyotp==2.2.7
36 packaging==15.2
36 packaging==15.2
37 paste==3.0.8
37 paste==3.0.8
38 pastedeploy==2.0.1
38 pastedeploy==2.0.1
39 pastescript==3.1.0
39 pastescript==3.1.0
40 peppercorn==0.6
40 peppercorn==0.6
41 psutil==5.5.1
41 psutil==5.5.1
42 py-bcrypt==0.4
42 py-bcrypt==0.4
43 pycurl==7.43.0.2
43 pycurl==7.43.0.2
44 pycrypto==2.6.1
44 pycrypto==2.6.1
45 pygments==2.4.2
45 pygments==2.4.2
46 pyparsing==2.3.0
46 pyparsing==2.3.0
47 pyramid-beaker==0.8
48 pyramid-debugtoolbar==4.5.0
47 pyramid-debugtoolbar==4.5.0
49 pyramid-mako==1.0.2
48 pyramid-mako==1.0.2
50 pyramid==1.10.4
49 pyramid==1.10.4
51 pyramid_mailer==0.15.1
50 pyramid_mailer==0.15.1
52 python-dateutil
51 python-dateutil
53 python-ldap==3.1.0
52 python-ldap==3.1.0
54 python-memcached==1.59
53 python-memcached==1.59
55 python-pam==1.8.4
54 python-pam==1.8.4
56 python-saml==2.4.2
55 python-saml==2.4.2
57 pytz==2018.4
56 pytz==2018.4
58 tzlocal==1.5.1
57 tzlocal==1.5.1
59 pyzmq==14.6.0
58 pyzmq==14.6.0
60 py-gfm==0.1.4
59 py-gfm==0.1.4
61 redis==2.10.6
60 redis==2.10.6
62 repoze.lru==0.7
61 repoze.lru==0.7
63 requests==2.9.1
62 requests==2.9.1
64 routes==2.4.1
63 routes==2.4.1
65 simplejson==3.16.0
64 simplejson==3.16.0
66 six==1.11.0
65 six==1.11.0
67 sqlalchemy==1.1.18
66 sqlalchemy==1.1.18
68 sshpubkeys==3.1.0
67 sshpubkeys==3.1.0
69 subprocess32==3.5.4
68 subprocess32==3.5.4
70 supervisor==4.0.3
69 supervisor==4.0.3
71 translationstring==1.3
70 translationstring==1.3
72 urllib3==1.24.1
71 urllib3==1.24.1
73 urlobject==2.4.3
72 urlobject==2.4.3
74 venusian==1.2.0
73 venusian==1.2.0
75 weberror==0.10.3
74 weberror==0.10.3
76 webhelpers2==2.0
75 webhelpers2==2.0
77 webhelpers==1.3
76 webhelpers==1.3
78 webob==1.8.5
77 webob==1.8.5
79 whoosh==2.7.4
78 whoosh==2.7.4
80 wsgiref==0.1.2
79 wsgiref==0.1.2
81 zope.cachedescriptors==4.3.1
80 zope.cachedescriptors==4.3.1
82 zope.deprecation==4.4.0
81 zope.deprecation==4.4.0
83 zope.event==4.4.0
82 zope.event==4.4.0
84 zope.interface==4.6.0
83 zope.interface==4.6.0
85
84
86 # DB drivers
85 # DB drivers
87 mysql-python==1.2.5
86 mysql-python==1.2.5
88 pymysql==0.8.1
87 pymysql==0.8.1
89 pysqlite==2.8.3
88 pysqlite==2.8.3
90 psycopg2==2.8.2
89 psycopg2==2.8.2
91
90
92 # IPYTHON RENDERING
91 # IPYTHON RENDERING
93 # entrypoints backport, pypi version doesn't support egg installs
92 # entrypoints backport, pypi version doesn't support egg installs
94 https://code.rhodecode.com/upstream/entrypoints/artifacts/download/0-8e9ee9e4-c4db-409c-b07e-81568fd1832d.tar.gz?md5=3a027b8ff1d257b91fe257de6c43357d#egg=entrypoints==0.2.2.rhodecode-upstream1
93 https://code.rhodecode.com/upstream/entrypoints/artifacts/download/0-8e9ee9e4-c4db-409c-b07e-81568fd1832d.tar.gz?md5=3a027b8ff1d257b91fe257de6c43357d#egg=entrypoints==0.2.2.rhodecode-upstream1
95 nbconvert==5.3.1
94 nbconvert==5.3.1
96 nbformat==4.4.0
95 nbformat==4.4.0
97 jupyter_client==5.0.0
96 jupyter_client==5.0.0
98
97
99 ## cli tools
98 ## cli tools
100 alembic==1.0.10
99 alembic==1.0.10
101 invoke==0.13.0
100 invoke==0.13.0
102 bumpversion==0.5.3
101 bumpversion==0.5.3
103
102
104 ## http servers
103 ## http servers
105 gevent==1.4.0
104 gevent==1.4.0
106 greenlet==0.4.15
105 greenlet==0.4.15
107 gunicorn==19.9.0
106 gunicorn==19.9.0
108 waitress==1.3.0
107 waitress==1.3.0
109
108
110 ## debug
109 ## debug
111 ipdb==0.12.0
110 ipdb==0.12.0
112 ipython==5.1.0
111 ipython==5.1.0
113
112
114 ## rhodecode-tools, special case
113 ## rhodecode-tools, special case
115 https://code.rhodecode.com/rhodecode-tools-ce/artifacts/download/0-10ac93f4-bb7d-4b97-baea-68110743dd5a.tar.gz?md5=962dc77c06aceee62282b98d33149661#egg=rhodecode-tools==1.2.1
114 https://code.rhodecode.com/rhodecode-tools-ce/artifacts/download/0-10ac93f4-bb7d-4b97-baea-68110743dd5a.tar.gz?md5=962dc77c06aceee62282b98d33149661#egg=rhodecode-tools==1.2.1
116
115
117 ## appenlight
116 ## appenlight
118 appenlight-client==0.6.26
117 appenlight-client==0.6.26
119
118
120 ## test related requirements
119 ## test related requirements
121 -r requirements_test.txt
120 -r requirements_test.txt
122
121
123 ## uncomment to add the debug libraries
122 ## uncomment to add the debug libraries
124 #-r requirements_debug.txt
123 #-r requirements_debug.txt
@@ -1,740 +1,740 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2
2
3 # Copyright (C) 2010-2019 RhodeCode GmbH
3 # Copyright (C) 2010-2019 RhodeCode GmbH
4 #
4 #
5 # This program is free software: you can redistribute it and/or modify
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License, version 3
6 # it under the terms of the GNU Affero General Public License, version 3
7 # (only), as published by the Free Software Foundation.
7 # (only), as published by the Free Software Foundation.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU Affero General Public License
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 #
16 #
17 # This program is dual-licensed. If you wish to learn more about the
17 # This program is dual-licensed. If you wish to learn more about the
18 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
20
21 import os
21 import os
22 import sys
22 import sys
23 import logging
23 import logging
24 import collections
24 import collections
25 import tempfile
25 import tempfile
26 import time
26 import time
27
27
28 from paste.gzipper import make_gzip_middleware
28 from paste.gzipper import make_gzip_middleware
29 import pyramid.events
29 import pyramid.events
30 from pyramid.wsgi import wsgiapp
30 from pyramid.wsgi import wsgiapp
31 from pyramid.authorization import ACLAuthorizationPolicy
31 from pyramid.authorization import ACLAuthorizationPolicy
32 from pyramid.config import Configurator
32 from pyramid.config import Configurator
33 from pyramid.settings import asbool, aslist
33 from pyramid.settings import asbool, aslist
34 from pyramid.httpexceptions import (
34 from pyramid.httpexceptions import (
35 HTTPException, HTTPError, HTTPInternalServerError, HTTPFound, HTTPNotFound)
35 HTTPException, HTTPError, HTTPInternalServerError, HTTPFound, HTTPNotFound)
36 from pyramid.renderers import render_to_response
36 from pyramid.renderers import render_to_response
37
37
38 from rhodecode.model import meta
38 from rhodecode.model import meta
39 from rhodecode.config import patches
39 from rhodecode.config import patches
40 from rhodecode.config import utils as config_utils
40 from rhodecode.config import utils as config_utils
41 from rhodecode.config.environment import load_pyramid_environment
41 from rhodecode.config.environment import load_pyramid_environment
42
42
43 import rhodecode.events
43 import rhodecode.events
44 from rhodecode.lib.middleware.vcs import VCSMiddleware
44 from rhodecode.lib.middleware.vcs import VCSMiddleware
45 from rhodecode.lib.request import Request
45 from rhodecode.lib.request import Request
46 from rhodecode.lib.vcs import VCSCommunicationError
46 from rhodecode.lib.vcs import VCSCommunicationError
47 from rhodecode.lib.exceptions import VCSServerUnavailable
47 from rhodecode.lib.exceptions import VCSServerUnavailable
48 from rhodecode.lib.middleware.appenlight import wrap_in_appenlight_if_enabled
48 from rhodecode.lib.middleware.appenlight import wrap_in_appenlight_if_enabled
49 from rhodecode.lib.middleware.https_fixup import HttpsFixup
49 from rhodecode.lib.middleware.https_fixup import HttpsFixup
50 from rhodecode.lib.celerylib.loader import configure_celery
50 from rhodecode.lib.celerylib.loader import configure_celery
51 from rhodecode.lib.plugins.utils import register_rhodecode_plugin
51 from rhodecode.lib.plugins.utils import register_rhodecode_plugin
52 from rhodecode.lib.utils2 import aslist as rhodecode_aslist, AttributeDict
52 from rhodecode.lib.utils2 import aslist as rhodecode_aslist, AttributeDict
53 from rhodecode.lib.exc_tracking import store_exception
53 from rhodecode.lib.exc_tracking import store_exception
54 from rhodecode.subscribers import (
54 from rhodecode.subscribers import (
55 scan_repositories_if_enabled, write_js_routes_if_enabled,
55 scan_repositories_if_enabled, write_js_routes_if_enabled,
56 write_metadata_if_needed, inject_app_settings)
56 write_metadata_if_needed, inject_app_settings)
57
57
58
58
59 log = logging.getLogger(__name__)
59 log = logging.getLogger(__name__)
60
60
61
61
62 def is_http_error(response):
62 def is_http_error(response):
63 # error which should have traceback
63 # error which should have traceback
64 return response.status_code > 499
64 return response.status_code > 499
65
65
66
66
67 def should_load_all():
67 def should_load_all():
68 """
68 """
69 Returns if all application components should be loaded. In some cases it's
69 Returns if all application components should be loaded. In some cases it's
70 desired to skip apps loading for faster shell script execution
70 desired to skip apps loading for faster shell script execution
71 """
71 """
72 return True
72 return True
73
73
74
74
75 def make_pyramid_app(global_config, **settings):
75 def make_pyramid_app(global_config, **settings):
76 """
76 """
77 Constructs the WSGI application based on Pyramid.
77 Constructs the WSGI application based on Pyramid.
78
78
79 Specials:
79 Specials:
80
80
81 * The application can also be integrated like a plugin via the call to
81 * The application can also be integrated like a plugin via the call to
82 `includeme`. This is accompanied with the other utility functions which
82 `includeme`. This is accompanied with the other utility functions which
83 are called. Changing this should be done with great care to not break
83 are called. Changing this should be done with great care to not break
84 cases when these fragments are assembled from another place.
84 cases when these fragments are assembled from another place.
85
85
86 """
86 """
87
87
88 # Allows to use format style "{ENV_NAME}" placeholders in the configuration. It
88 # Allows to use format style "{ENV_NAME}" placeholders in the configuration. It
89 # will be replaced by the value of the environment variable "NAME" in this case.
89 # will be replaced by the value of the environment variable "NAME" in this case.
90 start_time = time.time()
90 start_time = time.time()
91
91
92 debug = asbool(global_config.get('debug'))
92 debug = asbool(global_config.get('debug'))
93 if debug:
93 if debug:
94 enable_debug()
94 enable_debug()
95
95
96 environ = {'ENV_{}'.format(key): value for key, value in os.environ.items()}
96 environ = {'ENV_{}'.format(key): value for key, value in os.environ.items()}
97
97
98 global_config = _substitute_values(global_config, environ)
98 global_config = _substitute_values(global_config, environ)
99 settings = _substitute_values(settings, environ)
99 settings = _substitute_values(settings, environ)
100
100
101 sanitize_settings_and_apply_defaults(global_config, settings)
101 sanitize_settings_and_apply_defaults(global_config, settings)
102
102
103 config = Configurator(settings=settings)
103 config = Configurator(settings=settings)
104
104
105 # Apply compatibility patches
105 # Apply compatibility patches
106 patches.inspect_getargspec()
106 patches.inspect_getargspec()
107
107
108 load_pyramid_environment(global_config, settings)
108 load_pyramid_environment(global_config, settings)
109
109
110 # Static file view comes first
110 # Static file view comes first
111 includeme_first(config)
111 includeme_first(config)
112
112
113 includeme(config)
113 includeme(config)
114
114
115 pyramid_app = config.make_wsgi_app()
115 pyramid_app = config.make_wsgi_app()
116 pyramid_app = wrap_app_in_wsgi_middlewares(pyramid_app, config)
116 pyramid_app = wrap_app_in_wsgi_middlewares(pyramid_app, config)
117 pyramid_app.config = config
117 pyramid_app.config = config
118
118
119 config.configure_celery(global_config['__file__'])
119 config.configure_celery(global_config['__file__'])
120 # creating the app uses a connection - return it after we are done
120 # creating the app uses a connection - return it after we are done
121 meta.Session.remove()
121 meta.Session.remove()
122 total_time = time.time() - start_time
122 total_time = time.time() - start_time
123 log.info('Pyramid app `%s` created and configured in %.2fs',
123 log.info('Pyramid app `%s` created and configured in %.2fs',
124 pyramid_app.func_name, total_time)
124 pyramid_app.func_name, total_time)
125
125
126 return pyramid_app
126 return pyramid_app
127
127
128
128
129 def not_found_view(request):
129 def not_found_view(request):
130 """
130 """
131 This creates the view which should be registered as not-found-view to
131 This creates the view which should be registered as not-found-view to
132 pyramid.
132 pyramid.
133 """
133 """
134
134
135 if not getattr(request, 'vcs_call', None):
135 if not getattr(request, 'vcs_call', None):
136 # handle like regular case with our error_handler
136 # handle like regular case with our error_handler
137 return error_handler(HTTPNotFound(), request)
137 return error_handler(HTTPNotFound(), request)
138
138
139 # handle not found view as a vcs call
139 # handle not found view as a vcs call
140 settings = request.registry.settings
140 settings = request.registry.settings
141 ae_client = getattr(request, 'ae_client', None)
141 ae_client = getattr(request, 'ae_client', None)
142 vcs_app = VCSMiddleware(
142 vcs_app = VCSMiddleware(
143 HTTPNotFound(), request.registry, settings,
143 HTTPNotFound(), request.registry, settings,
144 appenlight_client=ae_client)
144 appenlight_client=ae_client)
145
145
146 return wsgiapp(vcs_app)(None, request)
146 return wsgiapp(vcs_app)(None, request)
147
147
148
148
149 def error_handler(exception, request):
149 def error_handler(exception, request):
150 import rhodecode
150 import rhodecode
151 from rhodecode.lib import helpers
151 from rhodecode.lib import helpers
152
152
153 rhodecode_title = rhodecode.CONFIG.get('rhodecode_title') or 'RhodeCode'
153 rhodecode_title = rhodecode.CONFIG.get('rhodecode_title') or 'RhodeCode'
154
154
155 base_response = HTTPInternalServerError()
155 base_response = HTTPInternalServerError()
156 # prefer original exception for the response since it may have headers set
156 # prefer original exception for the response since it may have headers set
157 if isinstance(exception, HTTPException):
157 if isinstance(exception, HTTPException):
158 base_response = exception
158 base_response = exception
159 elif isinstance(exception, VCSCommunicationError):
159 elif isinstance(exception, VCSCommunicationError):
160 base_response = VCSServerUnavailable()
160 base_response = VCSServerUnavailable()
161
161
162 if is_http_error(base_response):
162 if is_http_error(base_response):
163 log.exception(
163 log.exception(
164 'error occurred handling this request for path: %s', request.path)
164 'error occurred handling this request for path: %s', request.path)
165
165
166 error_explanation = base_response.explanation or str(base_response)
166 error_explanation = base_response.explanation or str(base_response)
167 if base_response.status_code == 404:
167 if base_response.status_code == 404:
168 error_explanation += " Optionally you don't have permission to access this page."
168 error_explanation += " Optionally you don't have permission to access this page."
169 c = AttributeDict()
169 c = AttributeDict()
170 c.error_message = base_response.status
170 c.error_message = base_response.status
171 c.error_explanation = error_explanation
171 c.error_explanation = error_explanation
172 c.visual = AttributeDict()
172 c.visual = AttributeDict()
173
173
174 c.visual.rhodecode_support_url = (
174 c.visual.rhodecode_support_url = (
175 request.registry.settings.get('rhodecode_support_url') or
175 request.registry.settings.get('rhodecode_support_url') or
176 request.route_url('rhodecode_support')
176 request.route_url('rhodecode_support')
177 )
177 )
178 c.redirect_time = 0
178 c.redirect_time = 0
179 c.rhodecode_name = rhodecode_title
179 c.rhodecode_name = rhodecode_title
180 if not c.rhodecode_name:
180 if not c.rhodecode_name:
181 c.rhodecode_name = 'Rhodecode'
181 c.rhodecode_name = 'Rhodecode'
182
182
183 c.causes = []
183 c.causes = []
184 if is_http_error(base_response):
184 if is_http_error(base_response):
185 c.causes.append('Server is overloaded.')
185 c.causes.append('Server is overloaded.')
186 c.causes.append('Server database connection is lost.')
186 c.causes.append('Server database connection is lost.')
187 c.causes.append('Server expected unhandled error.')
187 c.causes.append('Server expected unhandled error.')
188
188
189 if hasattr(base_response, 'causes'):
189 if hasattr(base_response, 'causes'):
190 c.causes = base_response.causes
190 c.causes = base_response.causes
191
191
192 c.messages = helpers.flash.pop_messages(request=request)
192 c.messages = helpers.flash.pop_messages(request=request)
193
193
194 exc_info = sys.exc_info()
194 exc_info = sys.exc_info()
195 c.exception_id = id(exc_info)
195 c.exception_id = id(exc_info)
196 c.show_exception_id = isinstance(base_response, VCSServerUnavailable) \
196 c.show_exception_id = isinstance(base_response, VCSServerUnavailable) \
197 or base_response.status_code > 499
197 or base_response.status_code > 499
198 c.exception_id_url = request.route_url(
198 c.exception_id_url = request.route_url(
199 'admin_settings_exception_tracker_show', exception_id=c.exception_id)
199 'admin_settings_exception_tracker_show', exception_id=c.exception_id)
200
200
201 if c.show_exception_id:
201 if c.show_exception_id:
202 store_exception(c.exception_id, exc_info)
202 store_exception(c.exception_id, exc_info)
203
203
204 response = render_to_response(
204 response = render_to_response(
205 '/errors/error_document.mako', {'c': c, 'h': helpers}, request=request,
205 '/errors/error_document.mako', {'c': c, 'h': helpers}, request=request,
206 response=base_response)
206 response=base_response)
207
207
208 return response
208 return response
209
209
210
210
211 def includeme_first(config):
211 def includeme_first(config):
212 # redirect automatic browser favicon.ico requests to correct place
212 # redirect automatic browser favicon.ico requests to correct place
213 def favicon_redirect(context, request):
213 def favicon_redirect(context, request):
214 return HTTPFound(
214 return HTTPFound(
215 request.static_path('rhodecode:public/images/favicon.ico'))
215 request.static_path('rhodecode:public/images/favicon.ico'))
216
216
217 config.add_view(favicon_redirect, route_name='favicon')
217 config.add_view(favicon_redirect, route_name='favicon')
218 config.add_route('favicon', '/favicon.ico')
218 config.add_route('favicon', '/favicon.ico')
219
219
220 def robots_redirect(context, request):
220 def robots_redirect(context, request):
221 return HTTPFound(
221 return HTTPFound(
222 request.static_path('rhodecode:public/robots.txt'))
222 request.static_path('rhodecode:public/robots.txt'))
223
223
224 config.add_view(robots_redirect, route_name='robots')
224 config.add_view(robots_redirect, route_name='robots')
225 config.add_route('robots', '/robots.txt')
225 config.add_route('robots', '/robots.txt')
226
226
227 config.add_static_view(
227 config.add_static_view(
228 '_static/deform', 'deform:static')
228 '_static/deform', 'deform:static')
229 config.add_static_view(
229 config.add_static_view(
230 '_static/rhodecode', path='rhodecode:public', cache_max_age=3600 * 24)
230 '_static/rhodecode', path='rhodecode:public', cache_max_age=3600 * 24)
231
231
232
232
233 def includeme(config):
233 def includeme(config):
234 log.debug('Initializing main includeme from %s', os.path.basename(__file__))
234 log.debug('Initializing main includeme from %s', os.path.basename(__file__))
235 settings = config.registry.settings
235 settings = config.registry.settings
236 config.set_request_factory(Request)
236 config.set_request_factory(Request)
237
237
238 # plugin information
238 # plugin information
239 config.registry.rhodecode_plugins = collections.OrderedDict()
239 config.registry.rhodecode_plugins = collections.OrderedDict()
240
240
241 config.add_directive(
241 config.add_directive(
242 'register_rhodecode_plugin', register_rhodecode_plugin)
242 'register_rhodecode_plugin', register_rhodecode_plugin)
243
243
244 config.add_directive('configure_celery', configure_celery)
244 config.add_directive('configure_celery', configure_celery)
245
245
246 if asbool(settings.get('appenlight', 'false')):
246 if asbool(settings.get('appenlight', 'false')):
247 config.include('appenlight_client.ext.pyramid_tween')
247 config.include('appenlight_client.ext.pyramid_tween')
248
248
249 load_all = should_load_all()
249 load_all = should_load_all()
250
250
251 # Includes which are required. The application would fail without them.
251 # Includes which are required. The application would fail without them.
252 config.include('pyramid_mako')
252 config.include('pyramid_mako')
253 config.include('pyramid_beaker')
253 config.include('rhodecode.lib.rc_beaker')
254 config.include('rhodecode.lib.rc_cache')
254 config.include('rhodecode.lib.rc_cache')
255
255
256 config.include('rhodecode.apps._base.navigation')
256 config.include('rhodecode.apps._base.navigation')
257 config.include('rhodecode.apps._base.subscribers')
257 config.include('rhodecode.apps._base.subscribers')
258 config.include('rhodecode.tweens')
258 config.include('rhodecode.tweens')
259
259
260 config.include('rhodecode.integrations')
260 config.include('rhodecode.integrations')
261 config.include('rhodecode.authentication')
261 config.include('rhodecode.authentication')
262
262
263 if load_all:
263 if load_all:
264 from rhodecode.authentication import discover_legacy_plugins
264 from rhodecode.authentication import discover_legacy_plugins
265 # load CE authentication plugins
265 # load CE authentication plugins
266 config.include('rhodecode.authentication.plugins.auth_crowd')
266 config.include('rhodecode.authentication.plugins.auth_crowd')
267 config.include('rhodecode.authentication.plugins.auth_headers')
267 config.include('rhodecode.authentication.plugins.auth_headers')
268 config.include('rhodecode.authentication.plugins.auth_jasig_cas')
268 config.include('rhodecode.authentication.plugins.auth_jasig_cas')
269 config.include('rhodecode.authentication.plugins.auth_ldap')
269 config.include('rhodecode.authentication.plugins.auth_ldap')
270 config.include('rhodecode.authentication.plugins.auth_pam')
270 config.include('rhodecode.authentication.plugins.auth_pam')
271 config.include('rhodecode.authentication.plugins.auth_rhodecode')
271 config.include('rhodecode.authentication.plugins.auth_rhodecode')
272 config.include('rhodecode.authentication.plugins.auth_token')
272 config.include('rhodecode.authentication.plugins.auth_token')
273
273
274 # Auto discover authentication plugins and include their configuration.
274 # Auto discover authentication plugins and include their configuration.
275 discover_legacy_plugins(config)
275 discover_legacy_plugins(config)
276
276
277 # apps
277 # apps
278 config.include('rhodecode.apps._base')
278 config.include('rhodecode.apps._base')
279
279
280 if load_all:
280 if load_all:
281 config.include('rhodecode.apps.ops')
281 config.include('rhodecode.apps.ops')
282 config.include('rhodecode.apps.admin')
282 config.include('rhodecode.apps.admin')
283 config.include('rhodecode.apps.channelstream')
283 config.include('rhodecode.apps.channelstream')
284 config.include('rhodecode.apps.file_store')
284 config.include('rhodecode.apps.file_store')
285 config.include('rhodecode.apps.login')
285 config.include('rhodecode.apps.login')
286 config.include('rhodecode.apps.home')
286 config.include('rhodecode.apps.home')
287 config.include('rhodecode.apps.journal')
287 config.include('rhodecode.apps.journal')
288 config.include('rhodecode.apps.repository')
288 config.include('rhodecode.apps.repository')
289 config.include('rhodecode.apps.repo_group')
289 config.include('rhodecode.apps.repo_group')
290 config.include('rhodecode.apps.user_group')
290 config.include('rhodecode.apps.user_group')
291 config.include('rhodecode.apps.search')
291 config.include('rhodecode.apps.search')
292 config.include('rhodecode.apps.user_profile')
292 config.include('rhodecode.apps.user_profile')
293 config.include('rhodecode.apps.user_group_profile')
293 config.include('rhodecode.apps.user_group_profile')
294 config.include('rhodecode.apps.my_account')
294 config.include('rhodecode.apps.my_account')
295 config.include('rhodecode.apps.svn_support')
295 config.include('rhodecode.apps.svn_support')
296 config.include('rhodecode.apps.ssh_support')
296 config.include('rhodecode.apps.ssh_support')
297 config.include('rhodecode.apps.gist')
297 config.include('rhodecode.apps.gist')
298 config.include('rhodecode.apps.debug_style')
298 config.include('rhodecode.apps.debug_style')
299 config.include('rhodecode.api')
299 config.include('rhodecode.api')
300
300
301 config.add_route('rhodecode_support', 'https://rhodecode.com/help/', static=True)
301 config.add_route('rhodecode_support', 'https://rhodecode.com/help/', static=True)
302 config.add_translation_dirs('rhodecode:i18n/')
302 config.add_translation_dirs('rhodecode:i18n/')
303 settings['default_locale_name'] = settings.get('lang', 'en')
303 settings['default_locale_name'] = settings.get('lang', 'en')
304
304
305 # Add subscribers.
305 # Add subscribers.
306 config.add_subscriber(inject_app_settings,
306 config.add_subscriber(inject_app_settings,
307 pyramid.events.ApplicationCreated)
307 pyramid.events.ApplicationCreated)
308 config.add_subscriber(scan_repositories_if_enabled,
308 config.add_subscriber(scan_repositories_if_enabled,
309 pyramid.events.ApplicationCreated)
309 pyramid.events.ApplicationCreated)
310 config.add_subscriber(write_metadata_if_needed,
310 config.add_subscriber(write_metadata_if_needed,
311 pyramid.events.ApplicationCreated)
311 pyramid.events.ApplicationCreated)
312 config.add_subscriber(write_js_routes_if_enabled,
312 config.add_subscriber(write_js_routes_if_enabled,
313 pyramid.events.ApplicationCreated)
313 pyramid.events.ApplicationCreated)
314
314
315 # request custom methods
315 # request custom methods
316 config.add_request_method(
316 config.add_request_method(
317 'rhodecode.lib.partial_renderer.get_partial_renderer',
317 'rhodecode.lib.partial_renderer.get_partial_renderer',
318 'get_partial_renderer')
318 'get_partial_renderer')
319
319
320 # Set the authorization policy.
320 # Set the authorization policy.
321 authz_policy = ACLAuthorizationPolicy()
321 authz_policy = ACLAuthorizationPolicy()
322 config.set_authorization_policy(authz_policy)
322 config.set_authorization_policy(authz_policy)
323
323
324 # Set the default renderer for HTML templates to mako.
324 # Set the default renderer for HTML templates to mako.
325 config.add_mako_renderer('.html')
325 config.add_mako_renderer('.html')
326
326
327 config.add_renderer(
327 config.add_renderer(
328 name='json_ext',
328 name='json_ext',
329 factory='rhodecode.lib.ext_json_renderer.pyramid_ext_json')
329 factory='rhodecode.lib.ext_json_renderer.pyramid_ext_json')
330
330
331 # include RhodeCode plugins
331 # include RhodeCode plugins
332 includes = aslist(settings.get('rhodecode.includes', []))
332 includes = aslist(settings.get('rhodecode.includes', []))
333 for inc in includes:
333 for inc in includes:
334 config.include(inc)
334 config.include(inc)
335
335
336 # custom not found view, if our pyramid app doesn't know how to handle
336 # custom not found view, if our pyramid app doesn't know how to handle
337 # the request pass it to potential VCS handling ap
337 # the request pass it to potential VCS handling ap
338 config.add_notfound_view(not_found_view)
338 config.add_notfound_view(not_found_view)
339 if not settings.get('debugtoolbar.enabled', False):
339 if not settings.get('debugtoolbar.enabled', False):
340 # disabled debugtoolbar handle all exceptions via the error_handlers
340 # disabled debugtoolbar handle all exceptions via the error_handlers
341 config.add_view(error_handler, context=Exception)
341 config.add_view(error_handler, context=Exception)
342
342
343 # all errors including 403/404/50X
343 # all errors including 403/404/50X
344 config.add_view(error_handler, context=HTTPError)
344 config.add_view(error_handler, context=HTTPError)
345
345
346
346
347 def wrap_app_in_wsgi_middlewares(pyramid_app, config):
347 def wrap_app_in_wsgi_middlewares(pyramid_app, config):
348 """
348 """
349 Apply outer WSGI middlewares around the application.
349 Apply outer WSGI middlewares around the application.
350 """
350 """
351 registry = config.registry
351 registry = config.registry
352 settings = registry.settings
352 settings = registry.settings
353
353
354 # enable https redirects based on HTTP_X_URL_SCHEME set by proxy
354 # enable https redirects based on HTTP_X_URL_SCHEME set by proxy
355 pyramid_app = HttpsFixup(pyramid_app, settings)
355 pyramid_app = HttpsFixup(pyramid_app, settings)
356
356
357 pyramid_app, _ae_client = wrap_in_appenlight_if_enabled(
357 pyramid_app, _ae_client = wrap_in_appenlight_if_enabled(
358 pyramid_app, settings)
358 pyramid_app, settings)
359 registry.ae_client = _ae_client
359 registry.ae_client = _ae_client
360
360
361 if settings['gzip_responses']:
361 if settings['gzip_responses']:
362 pyramid_app = make_gzip_middleware(
362 pyramid_app = make_gzip_middleware(
363 pyramid_app, settings, compress_level=1)
363 pyramid_app, settings, compress_level=1)
364
364
365 # this should be the outer most middleware in the wsgi stack since
365 # this should be the outer most middleware in the wsgi stack since
366 # middleware like Routes make database calls
366 # middleware like Routes make database calls
367 def pyramid_app_with_cleanup(environ, start_response):
367 def pyramid_app_with_cleanup(environ, start_response):
368 try:
368 try:
369 return pyramid_app(environ, start_response)
369 return pyramid_app(environ, start_response)
370 finally:
370 finally:
371 # Dispose current database session and rollback uncommitted
371 # Dispose current database session and rollback uncommitted
372 # transactions.
372 # transactions.
373 meta.Session.remove()
373 meta.Session.remove()
374
374
375 # In a single threaded mode server, on non sqlite db we should have
375 # In a single threaded mode server, on non sqlite db we should have
376 # '0 Current Checked out connections' at the end of a request,
376 # '0 Current Checked out connections' at the end of a request,
377 # if not, then something, somewhere is leaving a connection open
377 # if not, then something, somewhere is leaving a connection open
378 pool = meta.Base.metadata.bind.engine.pool
378 pool = meta.Base.metadata.bind.engine.pool
379 log.debug('sa pool status: %s', pool.status())
379 log.debug('sa pool status: %s', pool.status())
380 log.debug('Request processing finalized')
380 log.debug('Request processing finalized')
381
381
382 return pyramid_app_with_cleanup
382 return pyramid_app_with_cleanup
383
383
384
384
385 def sanitize_settings_and_apply_defaults(global_config, settings):
385 def sanitize_settings_and_apply_defaults(global_config, settings):
386 """
386 """
387 Applies settings defaults and does all type conversion.
387 Applies settings defaults and does all type conversion.
388
388
389 We would move all settings parsing and preparation into this place, so that
389 We would move all settings parsing and preparation into this place, so that
390 we have only one place left which deals with this part. The remaining parts
390 we have only one place left which deals with this part. The remaining parts
391 of the application would start to rely fully on well prepared settings.
391 of the application would start to rely fully on well prepared settings.
392
392
393 This piece would later be split up per topic to avoid a big fat monster
393 This piece would later be split up per topic to avoid a big fat monster
394 function.
394 function.
395 """
395 """
396
396
397 settings.setdefault('rhodecode.edition', 'Community Edition')
397 settings.setdefault('rhodecode.edition', 'Community Edition')
398
398
399 if 'mako.default_filters' not in settings:
399 if 'mako.default_filters' not in settings:
400 # set custom default filters if we don't have it defined
400 # set custom default filters if we don't have it defined
401 settings['mako.imports'] = 'from rhodecode.lib.base import h_filter'
401 settings['mako.imports'] = 'from rhodecode.lib.base import h_filter'
402 settings['mako.default_filters'] = 'h_filter'
402 settings['mako.default_filters'] = 'h_filter'
403
403
404 if 'mako.directories' not in settings:
404 if 'mako.directories' not in settings:
405 mako_directories = settings.setdefault('mako.directories', [
405 mako_directories = settings.setdefault('mako.directories', [
406 # Base templates of the original application
406 # Base templates of the original application
407 'rhodecode:templates',
407 'rhodecode:templates',
408 ])
408 ])
409 log.debug(
409 log.debug(
410 "Using the following Mako template directories: %s",
410 "Using the following Mako template directories: %s",
411 mako_directories)
411 mako_directories)
412
412
413 # Default includes, possible to change as a user
413 # Default includes, possible to change as a user
414 pyramid_includes = settings.setdefault('pyramid.includes', [
414 pyramid_includes = settings.setdefault('pyramid.includes', [
415 'rhodecode.lib.middleware.request_wrapper',
415 'rhodecode.lib.middleware.request_wrapper',
416 ])
416 ])
417 log.debug(
417 log.debug(
418 "Using the following pyramid.includes: %s",
418 "Using the following pyramid.includes: %s",
419 pyramid_includes)
419 pyramid_includes)
420
420
421 # TODO: johbo: Re-think this, usually the call to config.include
421 # TODO: johbo: Re-think this, usually the call to config.include
422 # should allow to pass in a prefix.
422 # should allow to pass in a prefix.
423 settings.setdefault('rhodecode.api.url', '/_admin/api')
423 settings.setdefault('rhodecode.api.url', '/_admin/api')
424 settings.setdefault('__file__', global_config.get('__file__'))
424 settings.setdefault('__file__', global_config.get('__file__'))
425
425
426 # Sanitize generic settings.
426 # Sanitize generic settings.
427 _list_setting(settings, 'default_encoding', 'UTF-8')
427 _list_setting(settings, 'default_encoding', 'UTF-8')
428 _bool_setting(settings, 'is_test', 'false')
428 _bool_setting(settings, 'is_test', 'false')
429 _bool_setting(settings, 'gzip_responses', 'false')
429 _bool_setting(settings, 'gzip_responses', 'false')
430
430
431 # Call split out functions that sanitize settings for each topic.
431 # Call split out functions that sanitize settings for each topic.
432 _sanitize_appenlight_settings(settings)
432 _sanitize_appenlight_settings(settings)
433 _sanitize_vcs_settings(settings)
433 _sanitize_vcs_settings(settings)
434 _sanitize_cache_settings(settings)
434 _sanitize_cache_settings(settings)
435
435
436 # configure instance id
436 # configure instance id
437 config_utils.set_instance_id(settings)
437 config_utils.set_instance_id(settings)
438
438
439 return settings
439 return settings
440
440
441
441
442 def enable_debug():
442 def enable_debug():
443 """
443 """
444 Helper to enable debug on running instance
444 Helper to enable debug on running instance
445 :return:
445 :return:
446 """
446 """
447 import tempfile
447 import tempfile
448 import textwrap
448 import textwrap
449 import logging.config
449 import logging.config
450
450
451 ini_template = textwrap.dedent("""
451 ini_template = textwrap.dedent("""
452 #####################################
452 #####################################
453 ### DEBUG LOGGING CONFIGURATION ####
453 ### DEBUG LOGGING CONFIGURATION ####
454 #####################################
454 #####################################
455 [loggers]
455 [loggers]
456 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
456 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
457
457
458 [handlers]
458 [handlers]
459 keys = console, console_sql
459 keys = console, console_sql
460
460
461 [formatters]
461 [formatters]
462 keys = generic, color_formatter, color_formatter_sql
462 keys = generic, color_formatter, color_formatter_sql
463
463
464 #############
464 #############
465 ## LOGGERS ##
465 ## LOGGERS ##
466 #############
466 #############
467 [logger_root]
467 [logger_root]
468 level = NOTSET
468 level = NOTSET
469 handlers = console
469 handlers = console
470
470
471 [logger_sqlalchemy]
471 [logger_sqlalchemy]
472 level = INFO
472 level = INFO
473 handlers = console_sql
473 handlers = console_sql
474 qualname = sqlalchemy.engine
474 qualname = sqlalchemy.engine
475 propagate = 0
475 propagate = 0
476
476
477 [logger_beaker]
477 [logger_beaker]
478 level = DEBUG
478 level = DEBUG
479 handlers =
479 handlers =
480 qualname = beaker.container
480 qualname = beaker.container
481 propagate = 1
481 propagate = 1
482
482
483 [logger_rhodecode]
483 [logger_rhodecode]
484 level = DEBUG
484 level = DEBUG
485 handlers =
485 handlers =
486 qualname = rhodecode
486 qualname = rhodecode
487 propagate = 1
487 propagate = 1
488
488
489 [logger_ssh_wrapper]
489 [logger_ssh_wrapper]
490 level = DEBUG
490 level = DEBUG
491 handlers =
491 handlers =
492 qualname = ssh_wrapper
492 qualname = ssh_wrapper
493 propagate = 1
493 propagate = 1
494
494
495 [logger_celery]
495 [logger_celery]
496 level = DEBUG
496 level = DEBUG
497 handlers =
497 handlers =
498 qualname = celery
498 qualname = celery
499
499
500
500
501 ##############
501 ##############
502 ## HANDLERS ##
502 ## HANDLERS ##
503 ##############
503 ##############
504
504
505 [handler_console]
505 [handler_console]
506 class = StreamHandler
506 class = StreamHandler
507 args = (sys.stderr, )
507 args = (sys.stderr, )
508 level = DEBUG
508 level = DEBUG
509 formatter = color_formatter
509 formatter = color_formatter
510
510
511 [handler_console_sql]
511 [handler_console_sql]
512 # "level = DEBUG" logs SQL queries and results.
512 # "level = DEBUG" logs SQL queries and results.
513 # "level = INFO" logs SQL queries.
513 # "level = INFO" logs SQL queries.
514 # "level = WARN" logs neither. (Recommended for production systems.)
514 # "level = WARN" logs neither. (Recommended for production systems.)
515 class = StreamHandler
515 class = StreamHandler
516 args = (sys.stderr, )
516 args = (sys.stderr, )
517 level = WARN
517 level = WARN
518 formatter = color_formatter_sql
518 formatter = color_formatter_sql
519
519
520 ################
520 ################
521 ## FORMATTERS ##
521 ## FORMATTERS ##
522 ################
522 ################
523
523
524 [formatter_generic]
524 [formatter_generic]
525 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
525 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
526 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s | %(req_id)s
526 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s | %(req_id)s
527 datefmt = %Y-%m-%d %H:%M:%S
527 datefmt = %Y-%m-%d %H:%M:%S
528
528
529 [formatter_color_formatter]
529 [formatter_color_formatter]
530 class = rhodecode.lib.logging_formatter.ColorRequestTrackingFormatter
530 class = rhodecode.lib.logging_formatter.ColorRequestTrackingFormatter
531 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s | %(req_id)s
531 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s | %(req_id)s
532 datefmt = %Y-%m-%d %H:%M:%S
532 datefmt = %Y-%m-%d %H:%M:%S
533
533
534 [formatter_color_formatter_sql]
534 [formatter_color_formatter_sql]
535 class = rhodecode.lib.logging_formatter.ColorFormatterSql
535 class = rhodecode.lib.logging_formatter.ColorFormatterSql
536 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
536 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
537 datefmt = %Y-%m-%d %H:%M:%S
537 datefmt = %Y-%m-%d %H:%M:%S
538 """)
538 """)
539
539
540 with tempfile.NamedTemporaryFile(prefix='rc_debug_logging_', suffix='.ini',
540 with tempfile.NamedTemporaryFile(prefix='rc_debug_logging_', suffix='.ini',
541 delete=False) as f:
541 delete=False) as f:
542 log.info('Saved Temporary DEBUG config at %s', f.name)
542 log.info('Saved Temporary DEBUG config at %s', f.name)
543 f.write(ini_template)
543 f.write(ini_template)
544
544
545 logging.config.fileConfig(f.name)
545 logging.config.fileConfig(f.name)
546 log.debug('DEBUG MODE ON')
546 log.debug('DEBUG MODE ON')
547 os.remove(f.name)
547 os.remove(f.name)
548
548
549
549
550 def _sanitize_appenlight_settings(settings):
550 def _sanitize_appenlight_settings(settings):
551 _bool_setting(settings, 'appenlight', 'false')
551 _bool_setting(settings, 'appenlight', 'false')
552
552
553
553
554 def _sanitize_vcs_settings(settings):
554 def _sanitize_vcs_settings(settings):
555 """
555 """
556 Applies settings defaults and does type conversion for all VCS related
556 Applies settings defaults and does type conversion for all VCS related
557 settings.
557 settings.
558 """
558 """
559 _string_setting(settings, 'vcs.svn.compatible_version', '')
559 _string_setting(settings, 'vcs.svn.compatible_version', '')
560 _string_setting(settings, 'git_rev_filter', '--all')
560 _string_setting(settings, 'git_rev_filter', '--all')
561 _string_setting(settings, 'vcs.hooks.protocol', 'http')
561 _string_setting(settings, 'vcs.hooks.protocol', 'http')
562 _string_setting(settings, 'vcs.hooks.host', '127.0.0.1')
562 _string_setting(settings, 'vcs.hooks.host', '127.0.0.1')
563 _string_setting(settings, 'vcs.scm_app_implementation', 'http')
563 _string_setting(settings, 'vcs.scm_app_implementation', 'http')
564 _string_setting(settings, 'vcs.server', '')
564 _string_setting(settings, 'vcs.server', '')
565 _string_setting(settings, 'vcs.server.log_level', 'debug')
565 _string_setting(settings, 'vcs.server.log_level', 'debug')
566 _string_setting(settings, 'vcs.server.protocol', 'http')
566 _string_setting(settings, 'vcs.server.protocol', 'http')
567 _bool_setting(settings, 'startup.import_repos', 'false')
567 _bool_setting(settings, 'startup.import_repos', 'false')
568 _bool_setting(settings, 'vcs.hooks.direct_calls', 'false')
568 _bool_setting(settings, 'vcs.hooks.direct_calls', 'false')
569 _bool_setting(settings, 'vcs.server.enable', 'true')
569 _bool_setting(settings, 'vcs.server.enable', 'true')
570 _bool_setting(settings, 'vcs.start_server', 'false')
570 _bool_setting(settings, 'vcs.start_server', 'false')
571 _list_setting(settings, 'vcs.backends', 'hg, git, svn')
571 _list_setting(settings, 'vcs.backends', 'hg, git, svn')
572 _int_setting(settings, 'vcs.connection_timeout', 3600)
572 _int_setting(settings, 'vcs.connection_timeout', 3600)
573
573
574 # Support legacy values of vcs.scm_app_implementation. Legacy
574 # Support legacy values of vcs.scm_app_implementation. Legacy
575 # configurations may use 'rhodecode.lib.middleware.utils.scm_app_http', or
575 # configurations may use 'rhodecode.lib.middleware.utils.scm_app_http', or
576 # disabled since 4.13 'vcsserver.scm_app' which is now mapped to 'http'.
576 # disabled since 4.13 'vcsserver.scm_app' which is now mapped to 'http'.
577 scm_app_impl = settings['vcs.scm_app_implementation']
577 scm_app_impl = settings['vcs.scm_app_implementation']
578 if scm_app_impl in ['rhodecode.lib.middleware.utils.scm_app_http', 'vcsserver.scm_app']:
578 if scm_app_impl in ['rhodecode.lib.middleware.utils.scm_app_http', 'vcsserver.scm_app']:
579 settings['vcs.scm_app_implementation'] = 'http'
579 settings['vcs.scm_app_implementation'] = 'http'
580
580
581
581
582 def _sanitize_cache_settings(settings):
582 def _sanitize_cache_settings(settings):
583 temp_store = tempfile.gettempdir()
583 temp_store = tempfile.gettempdir()
584 default_cache_dir = os.path.join(temp_store, 'rc_cache')
584 default_cache_dir = os.path.join(temp_store, 'rc_cache')
585
585
586 # save default, cache dir, and use it for all backends later.
586 # save default, cache dir, and use it for all backends later.
587 default_cache_dir = _string_setting(
587 default_cache_dir = _string_setting(
588 settings,
588 settings,
589 'cache_dir',
589 'cache_dir',
590 default_cache_dir, lower=False, default_when_empty=True)
590 default_cache_dir, lower=False, default_when_empty=True)
591
591
592 # ensure we have our dir created
592 # ensure we have our dir created
593 if not os.path.isdir(default_cache_dir):
593 if not os.path.isdir(default_cache_dir):
594 os.makedirs(default_cache_dir, mode=0o755)
594 os.makedirs(default_cache_dir, mode=0o755)
595
595
596 # exception store cache
596 # exception store cache
597 _string_setting(
597 _string_setting(
598 settings,
598 settings,
599 'exception_tracker.store_path',
599 'exception_tracker.store_path',
600 temp_store, lower=False, default_when_empty=True)
600 temp_store, lower=False, default_when_empty=True)
601
601
602 # cache_perms
602 # cache_perms
603 _string_setting(
603 _string_setting(
604 settings,
604 settings,
605 'rc_cache.cache_perms.backend',
605 'rc_cache.cache_perms.backend',
606 'dogpile.cache.rc.file_namespace', lower=False)
606 'dogpile.cache.rc.file_namespace', lower=False)
607 _int_setting(
607 _int_setting(
608 settings,
608 settings,
609 'rc_cache.cache_perms.expiration_time',
609 'rc_cache.cache_perms.expiration_time',
610 60)
610 60)
611 _string_setting(
611 _string_setting(
612 settings,
612 settings,
613 'rc_cache.cache_perms.arguments.filename',
613 'rc_cache.cache_perms.arguments.filename',
614 os.path.join(default_cache_dir, 'rc_cache_1'), lower=False)
614 os.path.join(default_cache_dir, 'rc_cache_1'), lower=False)
615
615
616 # cache_repo
616 # cache_repo
617 _string_setting(
617 _string_setting(
618 settings,
618 settings,
619 'rc_cache.cache_repo.backend',
619 'rc_cache.cache_repo.backend',
620 'dogpile.cache.rc.file_namespace', lower=False)
620 'dogpile.cache.rc.file_namespace', lower=False)
621 _int_setting(
621 _int_setting(
622 settings,
622 settings,
623 'rc_cache.cache_repo.expiration_time',
623 'rc_cache.cache_repo.expiration_time',
624 60)
624 60)
625 _string_setting(
625 _string_setting(
626 settings,
626 settings,
627 'rc_cache.cache_repo.arguments.filename',
627 'rc_cache.cache_repo.arguments.filename',
628 os.path.join(default_cache_dir, 'rc_cache_2'), lower=False)
628 os.path.join(default_cache_dir, 'rc_cache_2'), lower=False)
629
629
630 # cache_license
630 # cache_license
631 _string_setting(
631 _string_setting(
632 settings,
632 settings,
633 'rc_cache.cache_license.backend',
633 'rc_cache.cache_license.backend',
634 'dogpile.cache.rc.file_namespace', lower=False)
634 'dogpile.cache.rc.file_namespace', lower=False)
635 _int_setting(
635 _int_setting(
636 settings,
636 settings,
637 'rc_cache.cache_license.expiration_time',
637 'rc_cache.cache_license.expiration_time',
638 5*60)
638 5*60)
639 _string_setting(
639 _string_setting(
640 settings,
640 settings,
641 'rc_cache.cache_license.arguments.filename',
641 'rc_cache.cache_license.arguments.filename',
642 os.path.join(default_cache_dir, 'rc_cache_3'), lower=False)
642 os.path.join(default_cache_dir, 'rc_cache_3'), lower=False)
643
643
644 # cache_repo_longterm memory, 96H
644 # cache_repo_longterm memory, 96H
645 _string_setting(
645 _string_setting(
646 settings,
646 settings,
647 'rc_cache.cache_repo_longterm.backend',
647 'rc_cache.cache_repo_longterm.backend',
648 'dogpile.cache.rc.memory_lru', lower=False)
648 'dogpile.cache.rc.memory_lru', lower=False)
649 _int_setting(
649 _int_setting(
650 settings,
650 settings,
651 'rc_cache.cache_repo_longterm.expiration_time',
651 'rc_cache.cache_repo_longterm.expiration_time',
652 345600)
652 345600)
653 _int_setting(
653 _int_setting(
654 settings,
654 settings,
655 'rc_cache.cache_repo_longterm.max_size',
655 'rc_cache.cache_repo_longterm.max_size',
656 10000)
656 10000)
657
657
658 # sql_cache_short
658 # sql_cache_short
659 _string_setting(
659 _string_setting(
660 settings,
660 settings,
661 'rc_cache.sql_cache_short.backend',
661 'rc_cache.sql_cache_short.backend',
662 'dogpile.cache.rc.memory_lru', lower=False)
662 'dogpile.cache.rc.memory_lru', lower=False)
663 _int_setting(
663 _int_setting(
664 settings,
664 settings,
665 'rc_cache.sql_cache_short.expiration_time',
665 'rc_cache.sql_cache_short.expiration_time',
666 30)
666 30)
667 _int_setting(
667 _int_setting(
668 settings,
668 settings,
669 'rc_cache.sql_cache_short.max_size',
669 'rc_cache.sql_cache_short.max_size',
670 10000)
670 10000)
671
671
672
672
673 def _int_setting(settings, name, default):
673 def _int_setting(settings, name, default):
674 settings[name] = int(settings.get(name, default))
674 settings[name] = int(settings.get(name, default))
675 return settings[name]
675 return settings[name]
676
676
677
677
678 def _bool_setting(settings, name, default):
678 def _bool_setting(settings, name, default):
679 input_val = settings.get(name, default)
679 input_val = settings.get(name, default)
680 if isinstance(input_val, unicode):
680 if isinstance(input_val, unicode):
681 input_val = input_val.encode('utf8')
681 input_val = input_val.encode('utf8')
682 settings[name] = asbool(input_val)
682 settings[name] = asbool(input_val)
683 return settings[name]
683 return settings[name]
684
684
685
685
686 def _list_setting(settings, name, default):
686 def _list_setting(settings, name, default):
687 raw_value = settings.get(name, default)
687 raw_value = settings.get(name, default)
688
688
689 old_separator = ','
689 old_separator = ','
690 if old_separator in raw_value:
690 if old_separator in raw_value:
691 # If we get a comma separated list, pass it to our own function.
691 # If we get a comma separated list, pass it to our own function.
692 settings[name] = rhodecode_aslist(raw_value, sep=old_separator)
692 settings[name] = rhodecode_aslist(raw_value, sep=old_separator)
693 else:
693 else:
694 # Otherwise we assume it uses pyramids space/newline separation.
694 # Otherwise we assume it uses pyramids space/newline separation.
695 settings[name] = aslist(raw_value)
695 settings[name] = aslist(raw_value)
696 return settings[name]
696 return settings[name]
697
697
698
698
699 def _string_setting(settings, name, default, lower=True, default_when_empty=False):
699 def _string_setting(settings, name, default, lower=True, default_when_empty=False):
700 value = settings.get(name, default)
700 value = settings.get(name, default)
701
701
702 if default_when_empty and not value:
702 if default_when_empty and not value:
703 # use default value when value is empty
703 # use default value when value is empty
704 value = default
704 value = default
705
705
706 if lower:
706 if lower:
707 value = value.lower()
707 value = value.lower()
708 settings[name] = value
708 settings[name] = value
709 return settings[name]
709 return settings[name]
710
710
711
711
712 def _substitute_values(mapping, substitutions):
712 def _substitute_values(mapping, substitutions):
713 result = {}
713 result = {}
714
714
715 try:
715 try:
716 for key, value in mapping.items():
716 for key, value in mapping.items():
717 # initialize without substitution first
717 # initialize without substitution first
718 result[key] = value
718 result[key] = value
719
719
720 # Note: Cannot use regular replacements, since they would clash
720 # Note: Cannot use regular replacements, since they would clash
721 # with the implementation of ConfigParser. Using "format" instead.
721 # with the implementation of ConfigParser. Using "format" instead.
722 try:
722 try:
723 result[key] = value.format(**substitutions)
723 result[key] = value.format(**substitutions)
724 except KeyError as e:
724 except KeyError as e:
725 env_var = '{}'.format(e.args[0])
725 env_var = '{}'.format(e.args[0])
726
726
727 msg = 'Failed to substitute: `{key}={{{var}}}` with environment entry. ' \
727 msg = 'Failed to substitute: `{key}={{{var}}}` with environment entry. ' \
728 'Make sure your environment has {var} set, or remove this ' \
728 'Make sure your environment has {var} set, or remove this ' \
729 'variable from config file'.format(key=key, var=env_var)
729 'variable from config file'.format(key=key, var=env_var)
730
730
731 if env_var.startswith('ENV_'):
731 if env_var.startswith('ENV_'):
732 raise ValueError(msg)
732 raise ValueError(msg)
733 else:
733 else:
734 log.warning(msg)
734 log.warning(msg)
735
735
736 except ValueError as e:
736 except ValueError as e:
737 log.warning('Failed to substitute ENV variable: %s', e)
737 log.warning('Failed to substitute ENV variable: %s', e)
738 result = mapping
738 result = mapping
739
739
740 return result
740 return result
@@ -1,583 +1,583 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2
2
3 # Copyright (C) 2010-2019 RhodeCode GmbH
3 # Copyright (C) 2010-2019 RhodeCode GmbH
4 #
4 #
5 # This program is free software: you can redistribute it and/or modify
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License, version 3
6 # it under the terms of the GNU Affero General Public License, version 3
7 # (only), as published by the Free Software Foundation.
7 # (only), as published by the Free Software Foundation.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU Affero General Public License
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 #
16 #
17 # This program is dual-licensed. If you wish to learn more about the
17 # This program is dual-licensed. If you wish to learn more about the
18 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
20
21 """
21 """
22 The base Controller API
22 The base Controller API
23 Provides the BaseController class for subclassing. And usage in different
23 Provides the BaseController class for subclassing. And usage in different
24 controllers
24 controllers
25 """
25 """
26
26
27 import logging
27 import logging
28 import socket
28 import socket
29
29
30 import markupsafe
30 import markupsafe
31 import ipaddress
31 import ipaddress
32
32
33 from paste.auth.basic import AuthBasicAuthenticator
33 from paste.auth.basic import AuthBasicAuthenticator
34 from paste.httpexceptions import HTTPUnauthorized, HTTPForbidden, get_exception
34 from paste.httpexceptions import HTTPUnauthorized, HTTPForbidden, get_exception
35 from paste.httpheaders import WWW_AUTHENTICATE, AUTHORIZATION
35 from paste.httpheaders import WWW_AUTHENTICATE, AUTHORIZATION
36
36
37 import rhodecode
37 import rhodecode
38 from rhodecode.apps._base import TemplateArgs
38 from rhodecode.apps._base import TemplateArgs
39 from rhodecode.authentication.base import VCS_TYPE
39 from rhodecode.authentication.base import VCS_TYPE
40 from rhodecode.lib import auth, utils2
40 from rhodecode.lib import auth, utils2
41 from rhodecode.lib import helpers as h
41 from rhodecode.lib import helpers as h
42 from rhodecode.lib.auth import AuthUser, CookieStoreWrapper
42 from rhodecode.lib.auth import AuthUser, CookieStoreWrapper
43 from rhodecode.lib.exceptions import UserCreationError
43 from rhodecode.lib.exceptions import UserCreationError
44 from rhodecode.lib.utils import (password_changed, get_enabled_hook_classes)
44 from rhodecode.lib.utils import (password_changed, get_enabled_hook_classes)
45 from rhodecode.lib.utils2 import (
45 from rhodecode.lib.utils2 import (
46 str2bool, safe_unicode, AttributeDict, safe_int, sha1, aslist, safe_str)
46 str2bool, safe_unicode, AttributeDict, safe_int, sha1, aslist, safe_str)
47 from rhodecode.model.db import Repository, User, ChangesetComment, UserBookmark
47 from rhodecode.model.db import Repository, User, ChangesetComment, UserBookmark
48 from rhodecode.model.notification import NotificationModel
48 from rhodecode.model.notification import NotificationModel
49 from rhodecode.model.settings import VcsSettingsModel, SettingsModel
49 from rhodecode.model.settings import VcsSettingsModel, SettingsModel
50
50
51 log = logging.getLogger(__name__)
51 log = logging.getLogger(__name__)
52
52
53
53
54 def _filter_proxy(ip):
54 def _filter_proxy(ip):
55 """
55 """
56 Passed in IP addresses in HEADERS can be in a special format of multiple
56 Passed in IP addresses in HEADERS can be in a special format of multiple
57 ips. Those comma separated IPs are passed from various proxies in the
57 ips. Those comma separated IPs are passed from various proxies in the
58 chain of request processing. The left-most being the original client.
58 chain of request processing. The left-most being the original client.
59 We only care about the first IP which came from the org. client.
59 We only care about the first IP which came from the org. client.
60
60
61 :param ip: ip string from headers
61 :param ip: ip string from headers
62 """
62 """
63 if ',' in ip:
63 if ',' in ip:
64 _ips = ip.split(',')
64 _ips = ip.split(',')
65 _first_ip = _ips[0].strip()
65 _first_ip = _ips[0].strip()
66 log.debug('Got multiple IPs %s, using %s', ','.join(_ips), _first_ip)
66 log.debug('Got multiple IPs %s, using %s', ','.join(_ips), _first_ip)
67 return _first_ip
67 return _first_ip
68 return ip
68 return ip
69
69
70
70
71 def _filter_port(ip):
71 def _filter_port(ip):
72 """
72 """
73 Removes a port from ip, there are 4 main cases to handle here.
73 Removes a port from ip, there are 4 main cases to handle here.
74 - ipv4 eg. 127.0.0.1
74 - ipv4 eg. 127.0.0.1
75 - ipv6 eg. ::1
75 - ipv6 eg. ::1
76 - ipv4+port eg. 127.0.0.1:8080
76 - ipv4+port eg. 127.0.0.1:8080
77 - ipv6+port eg. [::1]:8080
77 - ipv6+port eg. [::1]:8080
78
78
79 :param ip:
79 :param ip:
80 """
80 """
81 def is_ipv6(ip_addr):
81 def is_ipv6(ip_addr):
82 if hasattr(socket, 'inet_pton'):
82 if hasattr(socket, 'inet_pton'):
83 try:
83 try:
84 socket.inet_pton(socket.AF_INET6, ip_addr)
84 socket.inet_pton(socket.AF_INET6, ip_addr)
85 except socket.error:
85 except socket.error:
86 return False
86 return False
87 else:
87 else:
88 # fallback to ipaddress
88 # fallback to ipaddress
89 try:
89 try:
90 ipaddress.IPv6Address(safe_unicode(ip_addr))
90 ipaddress.IPv6Address(safe_unicode(ip_addr))
91 except Exception:
91 except Exception:
92 return False
92 return False
93 return True
93 return True
94
94
95 if ':' not in ip: # must be ipv4 pure ip
95 if ':' not in ip: # must be ipv4 pure ip
96 return ip
96 return ip
97
97
98 if '[' in ip and ']' in ip: # ipv6 with port
98 if '[' in ip and ']' in ip: # ipv6 with port
99 return ip.split(']')[0][1:].lower()
99 return ip.split(']')[0][1:].lower()
100
100
101 # must be ipv6 or ipv4 with port
101 # must be ipv6 or ipv4 with port
102 if is_ipv6(ip):
102 if is_ipv6(ip):
103 return ip
103 return ip
104 else:
104 else:
105 ip, _port = ip.split(':')[:2] # means ipv4+port
105 ip, _port = ip.split(':')[:2] # means ipv4+port
106 return ip
106 return ip
107
107
108
108
109 def get_ip_addr(environ):
109 def get_ip_addr(environ):
110 proxy_key = 'HTTP_X_REAL_IP'
110 proxy_key = 'HTTP_X_REAL_IP'
111 proxy_key2 = 'HTTP_X_FORWARDED_FOR'
111 proxy_key2 = 'HTTP_X_FORWARDED_FOR'
112 def_key = 'REMOTE_ADDR'
112 def_key = 'REMOTE_ADDR'
113 _filters = lambda x: _filter_port(_filter_proxy(x))
113 _filters = lambda x: _filter_port(_filter_proxy(x))
114
114
115 ip = environ.get(proxy_key)
115 ip = environ.get(proxy_key)
116 if ip:
116 if ip:
117 return _filters(ip)
117 return _filters(ip)
118
118
119 ip = environ.get(proxy_key2)
119 ip = environ.get(proxy_key2)
120 if ip:
120 if ip:
121 return _filters(ip)
121 return _filters(ip)
122
122
123 ip = environ.get(def_key, '0.0.0.0')
123 ip = environ.get(def_key, '0.0.0.0')
124 return _filters(ip)
124 return _filters(ip)
125
125
126
126
127 def get_server_ip_addr(environ, log_errors=True):
127 def get_server_ip_addr(environ, log_errors=True):
128 hostname = environ.get('SERVER_NAME')
128 hostname = environ.get('SERVER_NAME')
129 try:
129 try:
130 return socket.gethostbyname(hostname)
130 return socket.gethostbyname(hostname)
131 except Exception as e:
131 except Exception as e:
132 if log_errors:
132 if log_errors:
133 # in some cases this lookup is not possible, and we don't want to
133 # in some cases this lookup is not possible, and we don't want to
134 # make it an exception in logs
134 # make it an exception in logs
135 log.exception('Could not retrieve server ip address: %s', e)
135 log.exception('Could not retrieve server ip address: %s', e)
136 return hostname
136 return hostname
137
137
138
138
139 def get_server_port(environ):
139 def get_server_port(environ):
140 return environ.get('SERVER_PORT')
140 return environ.get('SERVER_PORT')
141
141
142
142
143 def get_access_path(environ):
143 def get_access_path(environ):
144 path = environ.get('PATH_INFO')
144 path = environ.get('PATH_INFO')
145 org_req = environ.get('pylons.original_request')
145 org_req = environ.get('pylons.original_request')
146 if org_req:
146 if org_req:
147 path = org_req.environ.get('PATH_INFO')
147 path = org_req.environ.get('PATH_INFO')
148 return path
148 return path
149
149
150
150
151 def get_user_agent(environ):
151 def get_user_agent(environ):
152 return environ.get('HTTP_USER_AGENT')
152 return environ.get('HTTP_USER_AGENT')
153
153
154
154
155 def vcs_operation_context(
155 def vcs_operation_context(
156 environ, repo_name, username, action, scm, check_locking=True,
156 environ, repo_name, username, action, scm, check_locking=True,
157 is_shadow_repo=False, check_branch_perms=False, detect_force_push=False):
157 is_shadow_repo=False, check_branch_perms=False, detect_force_push=False):
158 """
158 """
159 Generate the context for a vcs operation, e.g. push or pull.
159 Generate the context for a vcs operation, e.g. push or pull.
160
160
161 This context is passed over the layers so that hooks triggered by the
161 This context is passed over the layers so that hooks triggered by the
162 vcs operation know details like the user, the user's IP address etc.
162 vcs operation know details like the user, the user's IP address etc.
163
163
164 :param check_locking: Allows to switch of the computation of the locking
164 :param check_locking: Allows to switch of the computation of the locking
165 data. This serves mainly the need of the simplevcs middleware to be
165 data. This serves mainly the need of the simplevcs middleware to be
166 able to disable this for certain operations.
166 able to disable this for certain operations.
167
167
168 """
168 """
169 # Tri-state value: False: unlock, None: nothing, True: lock
169 # Tri-state value: False: unlock, None: nothing, True: lock
170 make_lock = None
170 make_lock = None
171 locked_by = [None, None, None]
171 locked_by = [None, None, None]
172 is_anonymous = username == User.DEFAULT_USER
172 is_anonymous = username == User.DEFAULT_USER
173 user = User.get_by_username(username)
173 user = User.get_by_username(username)
174 if not is_anonymous and check_locking:
174 if not is_anonymous and check_locking:
175 log.debug('Checking locking on repository "%s"', repo_name)
175 log.debug('Checking locking on repository "%s"', repo_name)
176 repo = Repository.get_by_repo_name(repo_name)
176 repo = Repository.get_by_repo_name(repo_name)
177 make_lock, __, locked_by = repo.get_locking_state(
177 make_lock, __, locked_by = repo.get_locking_state(
178 action, user.user_id)
178 action, user.user_id)
179 user_id = user.user_id
179 user_id = user.user_id
180 settings_model = VcsSettingsModel(repo=repo_name)
180 settings_model = VcsSettingsModel(repo=repo_name)
181 ui_settings = settings_model.get_ui_settings()
181 ui_settings = settings_model.get_ui_settings()
182
182
183 # NOTE(marcink): This should be also in sync with
183 # NOTE(marcink): This should be also in sync with
184 # rhodecode/apps/ssh_support/lib/backends/base.py:update_environment scm_data
184 # rhodecode/apps/ssh_support/lib/backends/base.py:update_environment scm_data
185 store = [x for x in ui_settings if x.key == '/']
185 store = [x for x in ui_settings if x.key == '/']
186 repo_store = ''
186 repo_store = ''
187 if store:
187 if store:
188 repo_store = store[0].value
188 repo_store = store[0].value
189
189
190 scm_data = {
190 scm_data = {
191 'ip': get_ip_addr(environ),
191 'ip': get_ip_addr(environ),
192 'username': username,
192 'username': username,
193 'user_id': user_id,
193 'user_id': user_id,
194 'action': action,
194 'action': action,
195 'repository': repo_name,
195 'repository': repo_name,
196 'scm': scm,
196 'scm': scm,
197 'config': rhodecode.CONFIG['__file__'],
197 'config': rhodecode.CONFIG['__file__'],
198 'repo_store': repo_store,
198 'repo_store': repo_store,
199 'make_lock': make_lock,
199 'make_lock': make_lock,
200 'locked_by': locked_by,
200 'locked_by': locked_by,
201 'server_url': utils2.get_server_url(environ),
201 'server_url': utils2.get_server_url(environ),
202 'user_agent': get_user_agent(environ),
202 'user_agent': get_user_agent(environ),
203 'hooks': get_enabled_hook_classes(ui_settings),
203 'hooks': get_enabled_hook_classes(ui_settings),
204 'is_shadow_repo': is_shadow_repo,
204 'is_shadow_repo': is_shadow_repo,
205 'detect_force_push': detect_force_push,
205 'detect_force_push': detect_force_push,
206 'check_branch_perms': check_branch_perms,
206 'check_branch_perms': check_branch_perms,
207 }
207 }
208 return scm_data
208 return scm_data
209
209
210
210
211 class BasicAuth(AuthBasicAuthenticator):
211 class BasicAuth(AuthBasicAuthenticator):
212
212
213 def __init__(self, realm, authfunc, registry, auth_http_code=None,
213 def __init__(self, realm, authfunc, registry, auth_http_code=None,
214 initial_call_detection=False, acl_repo_name=None):
214 initial_call_detection=False, acl_repo_name=None):
215 self.realm = realm
215 self.realm = realm
216 self.initial_call = initial_call_detection
216 self.initial_call = initial_call_detection
217 self.authfunc = authfunc
217 self.authfunc = authfunc
218 self.registry = registry
218 self.registry = registry
219 self.acl_repo_name = acl_repo_name
219 self.acl_repo_name = acl_repo_name
220 self._rc_auth_http_code = auth_http_code
220 self._rc_auth_http_code = auth_http_code
221
221
222 def _get_response_from_code(self, http_code):
222 def _get_response_from_code(self, http_code):
223 try:
223 try:
224 return get_exception(safe_int(http_code))
224 return get_exception(safe_int(http_code))
225 except Exception:
225 except Exception:
226 log.exception('Failed to fetch response for code %s', http_code)
226 log.exception('Failed to fetch response for code %s', http_code)
227 return HTTPForbidden
227 return HTTPForbidden
228
228
229 def get_rc_realm(self):
229 def get_rc_realm(self):
230 return safe_str(self.registry.rhodecode_settings.get('rhodecode_realm'))
230 return safe_str(self.registry.rhodecode_settings.get('rhodecode_realm'))
231
231
232 def build_authentication(self):
232 def build_authentication(self):
233 head = WWW_AUTHENTICATE.tuples('Basic realm="%s"' % self.realm)
233 head = WWW_AUTHENTICATE.tuples('Basic realm="%s"' % self.realm)
234 if self._rc_auth_http_code and not self.initial_call:
234 if self._rc_auth_http_code and not self.initial_call:
235 # return alternative HTTP code if alternative http return code
235 # return alternative HTTP code if alternative http return code
236 # is specified in RhodeCode config, but ONLY if it's not the
236 # is specified in RhodeCode config, but ONLY if it's not the
237 # FIRST call
237 # FIRST call
238 custom_response_klass = self._get_response_from_code(
238 custom_response_klass = self._get_response_from_code(
239 self._rc_auth_http_code)
239 self._rc_auth_http_code)
240 return custom_response_klass(headers=head)
240 return custom_response_klass(headers=head)
241 return HTTPUnauthorized(headers=head)
241 return HTTPUnauthorized(headers=head)
242
242
243 def authenticate(self, environ):
243 def authenticate(self, environ):
244 authorization = AUTHORIZATION(environ)
244 authorization = AUTHORIZATION(environ)
245 if not authorization:
245 if not authorization:
246 return self.build_authentication()
246 return self.build_authentication()
247 (authmeth, auth) = authorization.split(' ', 1)
247 (authmeth, auth) = authorization.split(' ', 1)
248 if 'basic' != authmeth.lower():
248 if 'basic' != authmeth.lower():
249 return self.build_authentication()
249 return self.build_authentication()
250 auth = auth.strip().decode('base64')
250 auth = auth.strip().decode('base64')
251 _parts = auth.split(':', 1)
251 _parts = auth.split(':', 1)
252 if len(_parts) == 2:
252 if len(_parts) == 2:
253 username, password = _parts
253 username, password = _parts
254 auth_data = self.authfunc(
254 auth_data = self.authfunc(
255 username, password, environ, VCS_TYPE,
255 username, password, environ, VCS_TYPE,
256 registry=self.registry, acl_repo_name=self.acl_repo_name)
256 registry=self.registry, acl_repo_name=self.acl_repo_name)
257 if auth_data:
257 if auth_data:
258 return {'username': username, 'auth_data': auth_data}
258 return {'username': username, 'auth_data': auth_data}
259 if username and password:
259 if username and password:
260 # we mark that we actually executed authentication once, at
260 # we mark that we actually executed authentication once, at
261 # that point we can use the alternative auth code
261 # that point we can use the alternative auth code
262 self.initial_call = False
262 self.initial_call = False
263
263
264 return self.build_authentication()
264 return self.build_authentication()
265
265
266 __call__ = authenticate
266 __call__ = authenticate
267
267
268
268
269 def calculate_version_hash(config):
269 def calculate_version_hash(config):
270 return sha1(
270 return sha1(
271 config.get('beaker.session.secret', '') +
271 config.get('beaker.session.secret', '') +
272 rhodecode.__version__)[:8]
272 rhodecode.__version__)[:8]
273
273
274
274
275 def get_current_lang(request):
275 def get_current_lang(request):
276 # NOTE(marcink): remove after pyramid move
276 # NOTE(marcink): remove after pyramid move
277 try:
277 try:
278 return translation.get_lang()[0]
278 return translation.get_lang()[0]
279 except:
279 except:
280 pass
280 pass
281
281
282 return getattr(request, '_LOCALE_', request.locale_name)
282 return getattr(request, '_LOCALE_', request.locale_name)
283
283
284
284
285 def attach_context_attributes(context, request, user_id=None):
285 def attach_context_attributes(context, request, user_id=None):
286 """
286 """
287 Attach variables into template context called `c`.
287 Attach variables into template context called `c`.
288 """
288 """
289 config = request.registry.settings
289 config = request.registry.settings
290
290
291 rc_config = SettingsModel().get_all_settings(cache=True)
291 rc_config = SettingsModel().get_all_settings(cache=True)
292
292
293 context.rhodecode_version = rhodecode.__version__
293 context.rhodecode_version = rhodecode.__version__
294 context.rhodecode_edition = config.get('rhodecode.edition')
294 context.rhodecode_edition = config.get('rhodecode.edition')
295 # unique secret + version does not leak the version but keep consistency
295 # unique secret + version does not leak the version but keep consistency
296 context.rhodecode_version_hash = calculate_version_hash(config)
296 context.rhodecode_version_hash = calculate_version_hash(config)
297
297
298 # Default language set for the incoming request
298 # Default language set for the incoming request
299 context.language = get_current_lang(request)
299 context.language = get_current_lang(request)
300
300
301 # Visual options
301 # Visual options
302 context.visual = AttributeDict({})
302 context.visual = AttributeDict({})
303
303
304 # DB stored Visual Items
304 # DB stored Visual Items
305 context.visual.show_public_icon = str2bool(
305 context.visual.show_public_icon = str2bool(
306 rc_config.get('rhodecode_show_public_icon'))
306 rc_config.get('rhodecode_show_public_icon'))
307 context.visual.show_private_icon = str2bool(
307 context.visual.show_private_icon = str2bool(
308 rc_config.get('rhodecode_show_private_icon'))
308 rc_config.get('rhodecode_show_private_icon'))
309 context.visual.stylify_metatags = str2bool(
309 context.visual.stylify_metatags = str2bool(
310 rc_config.get('rhodecode_stylify_metatags'))
310 rc_config.get('rhodecode_stylify_metatags'))
311 context.visual.dashboard_items = safe_int(
311 context.visual.dashboard_items = safe_int(
312 rc_config.get('rhodecode_dashboard_items', 100))
312 rc_config.get('rhodecode_dashboard_items', 100))
313 context.visual.admin_grid_items = safe_int(
313 context.visual.admin_grid_items = safe_int(
314 rc_config.get('rhodecode_admin_grid_items', 100))
314 rc_config.get('rhodecode_admin_grid_items', 100))
315 context.visual.show_revision_number = str2bool(
315 context.visual.show_revision_number = str2bool(
316 rc_config.get('rhodecode_show_revision_number', True))
316 rc_config.get('rhodecode_show_revision_number', True))
317 context.visual.show_sha_length = safe_int(
317 context.visual.show_sha_length = safe_int(
318 rc_config.get('rhodecode_show_sha_length', 100))
318 rc_config.get('rhodecode_show_sha_length', 100))
319 context.visual.repository_fields = str2bool(
319 context.visual.repository_fields = str2bool(
320 rc_config.get('rhodecode_repository_fields'))
320 rc_config.get('rhodecode_repository_fields'))
321 context.visual.show_version = str2bool(
321 context.visual.show_version = str2bool(
322 rc_config.get('rhodecode_show_version'))
322 rc_config.get('rhodecode_show_version'))
323 context.visual.use_gravatar = str2bool(
323 context.visual.use_gravatar = str2bool(
324 rc_config.get('rhodecode_use_gravatar'))
324 rc_config.get('rhodecode_use_gravatar'))
325 context.visual.gravatar_url = rc_config.get('rhodecode_gravatar_url')
325 context.visual.gravatar_url = rc_config.get('rhodecode_gravatar_url')
326 context.visual.default_renderer = rc_config.get(
326 context.visual.default_renderer = rc_config.get(
327 'rhodecode_markup_renderer', 'rst')
327 'rhodecode_markup_renderer', 'rst')
328 context.visual.comment_types = ChangesetComment.COMMENT_TYPES
328 context.visual.comment_types = ChangesetComment.COMMENT_TYPES
329 context.visual.rhodecode_support_url = \
329 context.visual.rhodecode_support_url = \
330 rc_config.get('rhodecode_support_url') or h.route_url('rhodecode_support')
330 rc_config.get('rhodecode_support_url') or h.route_url('rhodecode_support')
331
331
332 context.visual.affected_files_cut_off = 60
332 context.visual.affected_files_cut_off = 60
333
333
334 context.pre_code = rc_config.get('rhodecode_pre_code')
334 context.pre_code = rc_config.get('rhodecode_pre_code')
335 context.post_code = rc_config.get('rhodecode_post_code')
335 context.post_code = rc_config.get('rhodecode_post_code')
336 context.rhodecode_name = rc_config.get('rhodecode_title')
336 context.rhodecode_name = rc_config.get('rhodecode_title')
337 context.default_encodings = aslist(config.get('default_encoding'), sep=',')
337 context.default_encodings = aslist(config.get('default_encoding'), sep=',')
338 # if we have specified default_encoding in the request, it has more
338 # if we have specified default_encoding in the request, it has more
339 # priority
339 # priority
340 if request.GET.get('default_encoding'):
340 if request.GET.get('default_encoding'):
341 context.default_encodings.insert(0, request.GET.get('default_encoding'))
341 context.default_encodings.insert(0, request.GET.get('default_encoding'))
342 context.clone_uri_tmpl = rc_config.get('rhodecode_clone_uri_tmpl')
342 context.clone_uri_tmpl = rc_config.get('rhodecode_clone_uri_tmpl')
343 context.clone_uri_ssh_tmpl = rc_config.get('rhodecode_clone_uri_ssh_tmpl')
343 context.clone_uri_ssh_tmpl = rc_config.get('rhodecode_clone_uri_ssh_tmpl')
344
344
345 # INI stored
345 # INI stored
346 context.labs_active = str2bool(
346 context.labs_active = str2bool(
347 config.get('labs_settings_active', 'false'))
347 config.get('labs_settings_active', 'false'))
348 context.ssh_enabled = str2bool(
348 context.ssh_enabled = str2bool(
349 config.get('ssh.generate_authorized_keyfile', 'false'))
349 config.get('ssh.generate_authorized_keyfile', 'false'))
350 context.ssh_key_generator_enabled = str2bool(
350 context.ssh_key_generator_enabled = str2bool(
351 config.get('ssh.enable_ui_key_generator', 'true'))
351 config.get('ssh.enable_ui_key_generator', 'true'))
352
352
353 context.visual.allow_repo_location_change = str2bool(
353 context.visual.allow_repo_location_change = str2bool(
354 config.get('allow_repo_location_change', True))
354 config.get('allow_repo_location_change', True))
355 context.visual.allow_custom_hooks_settings = str2bool(
355 context.visual.allow_custom_hooks_settings = str2bool(
356 config.get('allow_custom_hooks_settings', True))
356 config.get('allow_custom_hooks_settings', True))
357 context.debug_style = str2bool(config.get('debug_style', False))
357 context.debug_style = str2bool(config.get('debug_style', False))
358
358
359 context.rhodecode_instanceid = config.get('instance_id')
359 context.rhodecode_instanceid = config.get('instance_id')
360
360
361 context.visual.cut_off_limit_diff = safe_int(
361 context.visual.cut_off_limit_diff = safe_int(
362 config.get('cut_off_limit_diff'))
362 config.get('cut_off_limit_diff'))
363 context.visual.cut_off_limit_file = safe_int(
363 context.visual.cut_off_limit_file = safe_int(
364 config.get('cut_off_limit_file'))
364 config.get('cut_off_limit_file'))
365
365
366 # AppEnlight
366 # AppEnlight
367 context.appenlight_enabled = str2bool(config.get('appenlight', 'false'))
367 context.appenlight_enabled = str2bool(config.get('appenlight', 'false'))
368 context.appenlight_api_public_key = config.get(
368 context.appenlight_api_public_key = config.get(
369 'appenlight.api_public_key', '')
369 'appenlight.api_public_key', '')
370 context.appenlight_server_url = config.get('appenlight.server_url', '')
370 context.appenlight_server_url = config.get('appenlight.server_url', '')
371
371
372 diffmode = {
372 diffmode = {
373 "unified": "unified",
373 "unified": "unified",
374 "sideside": "sideside"
374 "sideside": "sideside"
375 }.get(request.GET.get('diffmode'))
375 }.get(request.GET.get('diffmode'))
376
376
377 if diffmode and diffmode != request.session.get('rc_user_session_attr.diffmode'):
377 if diffmode and diffmode != request.session.get('rc_user_session_attr.diffmode'):
378 request.session['rc_user_session_attr.diffmode'] = diffmode
378 request.session['rc_user_session_attr.diffmode'] = diffmode
379
379
380 # session settings per user
380 # session settings per user
381 session_attrs = {
381 session_attrs = {
382 # defaults
382 # defaults
383 "clone_url_format": "http",
383 "clone_url_format": "http",
384 "diffmode": "sideside"
384 "diffmode": "sideside"
385 }
385 }
386 for k, v in request.session.items():
386 for k, v in request.session.items():
387 pref = 'rc_user_session_attr.'
387 pref = 'rc_user_session_attr.'
388 if k and k.startswith(pref):
388 if k and k.startswith(pref):
389 k = k[len(pref):]
389 k = k[len(pref):]
390 session_attrs[k] = v
390 session_attrs[k] = v
391
391
392 context.user_session_attrs = session_attrs
392 context.user_session_attrs = session_attrs
393
393
394 # JS template context
394 # JS template context
395 context.template_context = {
395 context.template_context = {
396 'repo_name': None,
396 'repo_name': None,
397 'repo_type': None,
397 'repo_type': None,
398 'repo_landing_commit': None,
398 'repo_landing_commit': None,
399 'rhodecode_user': {
399 'rhodecode_user': {
400 'username': None,
400 'username': None,
401 'email': None,
401 'email': None,
402 'notification_status': False
402 'notification_status': False
403 },
403 },
404 'session_attrs': session_attrs,
404 'session_attrs': session_attrs,
405 'visual': {
405 'visual': {
406 'default_renderer': None
406 'default_renderer': None
407 },
407 },
408 'commit_data': {
408 'commit_data': {
409 'commit_id': None
409 'commit_id': None
410 },
410 },
411 'pull_request_data': {'pull_request_id': None},
411 'pull_request_data': {'pull_request_id': None},
412 'timeago': {
412 'timeago': {
413 'refresh_time': 120 * 1000,
413 'refresh_time': 120 * 1000,
414 'cutoff_limit': 1000 * 60 * 60 * 24 * 7
414 'cutoff_limit': 1000 * 60 * 60 * 24 * 7
415 },
415 },
416 'pyramid_dispatch': {
416 'pyramid_dispatch': {
417
417
418 },
418 },
419 'extra': {'plugins': {}}
419 'extra': {'plugins': {}}
420 }
420 }
421 # END CONFIG VARS
421 # END CONFIG VARS
422
422
423 context.csrf_token = auth.get_csrf_token(session=request.session)
423 context.csrf_token = auth.get_csrf_token(session=request.session)
424 context.backends = rhodecode.BACKENDS.keys()
424 context.backends = rhodecode.BACKENDS.keys()
425 context.backends.sort()
425 context.backends.sort()
426 unread_count = 0
426 unread_count = 0
427 user_bookmark_list = []
427 user_bookmark_list = []
428 if user_id:
428 if user_id:
429 unread_count = NotificationModel().get_unread_cnt_for_user(user_id)
429 unread_count = NotificationModel().get_unread_cnt_for_user(user_id)
430 user_bookmark_list = UserBookmark.get_bookmarks_for_user(user_id)
430 user_bookmark_list = UserBookmark.get_bookmarks_for_user(user_id)
431 context.unread_notifications = unread_count
431 context.unread_notifications = unread_count
432 context.bookmark_items = user_bookmark_list
432 context.bookmark_items = user_bookmark_list
433
433
434 # web case
434 # web case
435 if hasattr(request, 'user'):
435 if hasattr(request, 'user'):
436 context.auth_user = request.user
436 context.auth_user = request.user
437 context.rhodecode_user = request.user
437 context.rhodecode_user = request.user
438
438
439 # api case
439 # api case
440 if hasattr(request, 'rpc_user'):
440 if hasattr(request, 'rpc_user'):
441 context.auth_user = request.rpc_user
441 context.auth_user = request.rpc_user
442 context.rhodecode_user = request.rpc_user
442 context.rhodecode_user = request.rpc_user
443
443
444 # attach the whole call context to the request
444 # attach the whole call context to the request
445 request.call_context = context
445 request.call_context = context
446
446
447
447
448 def get_auth_user(request):
448 def get_auth_user(request):
449 environ = request.environ
449 environ = request.environ
450 session = request.session
450 session = request.session
451
451
452 ip_addr = get_ip_addr(environ)
452 ip_addr = get_ip_addr(environ)
453 # make sure that we update permissions each time we call controller
453 # make sure that we update permissions each time we call controller
454 _auth_token = (request.GET.get('auth_token', '') or
454 _auth_token = (request.GET.get('auth_token', '') or
455 request.GET.get('api_key', ''))
455 request.GET.get('api_key', ''))
456
456
457 if _auth_token:
457 if _auth_token:
458 # when using API_KEY we assume user exists, and
458 # when using API_KEY we assume user exists, and
459 # doesn't need auth based on cookies.
459 # doesn't need auth based on cookies.
460 auth_user = AuthUser(api_key=_auth_token, ip_addr=ip_addr)
460 auth_user = AuthUser(api_key=_auth_token, ip_addr=ip_addr)
461 authenticated = False
461 authenticated = False
462 else:
462 else:
463 cookie_store = CookieStoreWrapper(session.get('rhodecode_user'))
463 cookie_store = CookieStoreWrapper(session.get('rhodecode_user'))
464 try:
464 try:
465 auth_user = AuthUser(user_id=cookie_store.get('user_id', None),
465 auth_user = AuthUser(user_id=cookie_store.get('user_id', None),
466 ip_addr=ip_addr)
466 ip_addr=ip_addr)
467 except UserCreationError as e:
467 except UserCreationError as e:
468 h.flash(e, 'error')
468 h.flash(e, 'error')
469 # container auth or other auth functions that create users
469 # container auth or other auth functions that create users
470 # on the fly can throw this exception signaling that there's
470 # on the fly can throw this exception signaling that there's
471 # issue with user creation, explanation should be provided
471 # issue with user creation, explanation should be provided
472 # in Exception itself. We then create a simple blank
472 # in Exception itself. We then create a simple blank
473 # AuthUser
473 # AuthUser
474 auth_user = AuthUser(ip_addr=ip_addr)
474 auth_user = AuthUser(ip_addr=ip_addr)
475
475
476 # in case someone changes a password for user it triggers session
476 # in case someone changes a password for user it triggers session
477 # flush and forces a re-login
477 # flush and forces a re-login
478 if password_changed(auth_user, session):
478 if password_changed(auth_user, session):
479 session.invalidate()
479 session.invalidate()
480 cookie_store = CookieStoreWrapper(session.get('rhodecode_user'))
480 cookie_store = CookieStoreWrapper(session.get('rhodecode_user'))
481 auth_user = AuthUser(ip_addr=ip_addr)
481 auth_user = AuthUser(ip_addr=ip_addr)
482
482
483 authenticated = cookie_store.get('is_authenticated')
483 authenticated = cookie_store.get('is_authenticated')
484
484
485 if not auth_user.is_authenticated and auth_user.is_user_object:
485 if not auth_user.is_authenticated and auth_user.is_user_object:
486 # user is not authenticated and not empty
486 # user is not authenticated and not empty
487 auth_user.set_authenticated(authenticated)
487 auth_user.set_authenticated(authenticated)
488
488
489 return auth_user
489 return auth_user
490
490
491
491
492 def h_filter(s):
492 def h_filter(s):
493 """
493 """
494 Custom filter for Mako templates. Mako by standard uses `markupsafe.escape`
494 Custom filter for Mako templates. Mako by standard uses `markupsafe.escape`
495 we wrap this with additional functionality that converts None to empty
495 we wrap this with additional functionality that converts None to empty
496 strings
496 strings
497 """
497 """
498 if s is None:
498 if s is None:
499 return markupsafe.Markup()
499 return markupsafe.Markup()
500 return markupsafe.escape(s)
500 return markupsafe.escape(s)
501
501
502
502
503 def add_events_routes(config):
503 def add_events_routes(config):
504 """
504 """
505 Adds routing that can be used in events. Because some events are triggered
505 Adds routing that can be used in events. Because some events are triggered
506 outside of pyramid context, we need to bootstrap request with some
506 outside of pyramid context, we need to bootstrap request with some
507 routing registered
507 routing registered
508 """
508 """
509
509
510 from rhodecode.apps._base import ADMIN_PREFIX
510 from rhodecode.apps._base import ADMIN_PREFIX
511
511
512 config.add_route(name='home', pattern='/')
512 config.add_route(name='home', pattern='/')
513
513
514 config.add_route(name='login', pattern=ADMIN_PREFIX + '/login')
514 config.add_route(name='login', pattern=ADMIN_PREFIX + '/login')
515 config.add_route(name='logout', pattern=ADMIN_PREFIX + '/logout')
515 config.add_route(name='logout', pattern=ADMIN_PREFIX + '/logout')
516 config.add_route(name='repo_summary', pattern='/{repo_name}')
516 config.add_route(name='repo_summary', pattern='/{repo_name}')
517 config.add_route(name='repo_summary_explicit', pattern='/{repo_name}/summary')
517 config.add_route(name='repo_summary_explicit', pattern='/{repo_name}/summary')
518 config.add_route(name='repo_group_home', pattern='/{repo_group_name}')
518 config.add_route(name='repo_group_home', pattern='/{repo_group_name}')
519
519
520 config.add_route(name='pullrequest_show',
520 config.add_route(name='pullrequest_show',
521 pattern='/{repo_name}/pull-request/{pull_request_id}')
521 pattern='/{repo_name}/pull-request/{pull_request_id}')
522 config.add_route(name='pull_requests_global',
522 config.add_route(name='pull_requests_global',
523 pattern='/pull-request/{pull_request_id}')
523 pattern='/pull-request/{pull_request_id}')
524 config.add_route(name='repo_commit',
524 config.add_route(name='repo_commit',
525 pattern='/{repo_name}/changeset/{commit_id}')
525 pattern='/{repo_name}/changeset/{commit_id}')
526
526
527 config.add_route(name='repo_files',
527 config.add_route(name='repo_files',
528 pattern='/{repo_name}/files/{commit_id}/{f_path}')
528 pattern='/{repo_name}/files/{commit_id}/{f_path}')
529
529
530
530
531 def bootstrap_config(request):
531 def bootstrap_config(request):
532 import pyramid.testing
532 import pyramid.testing
533 registry = pyramid.testing.Registry('RcTestRegistry')
533 registry = pyramid.testing.Registry('RcTestRegistry')
534
534
535 config = pyramid.testing.setUp(registry=registry, request=request)
535 config = pyramid.testing.setUp(registry=registry, request=request)
536
536
537 # allow pyramid lookup in testing
537 # allow pyramid lookup in testing
538 config.include('pyramid_mako')
538 config.include('pyramid_mako')
539 config.include('pyramid_beaker')
539 config.include('rhodecode.lib.rc_beaker')
540 config.include('rhodecode.lib.rc_cache')
540 config.include('rhodecode.lib.rc_cache')
541
541
542 add_events_routes(config)
542 add_events_routes(config)
543
543
544 return config
544 return config
545
545
546
546
547 def bootstrap_request(**kwargs):
547 def bootstrap_request(**kwargs):
548 import pyramid.testing
548 import pyramid.testing
549
549
550 class TestRequest(pyramid.testing.DummyRequest):
550 class TestRequest(pyramid.testing.DummyRequest):
551 application_url = kwargs.pop('application_url', 'http://example.com')
551 application_url = kwargs.pop('application_url', 'http://example.com')
552 host = kwargs.pop('host', 'example.com:80')
552 host = kwargs.pop('host', 'example.com:80')
553 domain = kwargs.pop('domain', 'example.com')
553 domain = kwargs.pop('domain', 'example.com')
554
554
555 def translate(self, msg):
555 def translate(self, msg):
556 return msg
556 return msg
557
557
558 def plularize(self, singular, plural, n):
558 def plularize(self, singular, plural, n):
559 return singular
559 return singular
560
560
561 def get_partial_renderer(self, tmpl_name):
561 def get_partial_renderer(self, tmpl_name):
562
562
563 from rhodecode.lib.partial_renderer import get_partial_renderer
563 from rhodecode.lib.partial_renderer import get_partial_renderer
564 return get_partial_renderer(request=self, tmpl_name=tmpl_name)
564 return get_partial_renderer(request=self, tmpl_name=tmpl_name)
565
565
566 _call_context = TemplateArgs()
566 _call_context = TemplateArgs()
567 _call_context.visual = TemplateArgs()
567 _call_context.visual = TemplateArgs()
568 _call_context.visual.show_sha_length = 12
568 _call_context.visual.show_sha_length = 12
569 _call_context.visual.show_revision_number = True
569 _call_context.visual.show_revision_number = True
570
570
571 @property
571 @property
572 def call_context(self):
572 def call_context(self):
573 return self._call_context
573 return self._call_context
574
574
575 class TestDummySession(pyramid.testing.DummySession):
575 class TestDummySession(pyramid.testing.DummySession):
576 def save(*arg, **kw):
576 def save(*arg, **kw):
577 pass
577 pass
578
578
579 request = TestRequest(**kwargs)
579 request = TestRequest(**kwargs)
580 request.session = TestDummySession()
580 request.session = TestDummySession()
581
581
582 return request
582 return request
583
583
General Comments 0
You need to be logged in to leave comments. Login now