##// END OF EJS Templates
license: update license metadata and generation code
marcink -
r3073:73a2f607 default
parent child Browse files
Show More
@@ -47,6 +47,14 b' Bower dependencies'
47 47 nix-shell pkgs/shell-generate.nix --command "bower2nix bower.json pkgs/bower-packages.nix"
48 48
49 49
50 Generate license data
51 =====================
52
53 .. code:: shell
54
55 nix-build pkgs/license-generate.nix -o result-license && cat result-license/licenses.json | python -m json.tool > rhodecode/config/licenses.json
56
57
50 58 .. Links
51 59
52 60 .. _RhodeCode Enterprise CE: https://code.rhodecode.com/rhodecode-enterprise-ce
@@ -2,9 +2,9 b''
2 2 #
3 3 # Usage:
4 4 #
5 # nix-build -I ~/dev license.nix -A result
5 # nix-build license.nix -o result-license
6 6 #
7 # Afterwards ./result will contain the license information as JSON files.
7 # Afterwards ./result-license will contain the license information as JSON files.
8 8 #
9 9 #
10 10 # Overview
@@ -19,7 +19,7 b''
19 19 # dependencies. The results from step 1 are then limited to the ones which
20 20 # are in this list.
21 21 #
22 # The result is then available in ./result/license.json.
22 # The result is then available in ./result-license/license.json.
23 23 #
24 24
25 25
@@ -32,20 +32,20 b' let'
32 32 # Enterprise as simple as possible, goal here is just to identify the runtime
33 33 # dependencies. Ideally we could avoid building Enterprise at all and somehow
34 34 # figure it out without calling into nix-store.
35 enterprise = import ./default.nix {
35 enterprise = import ../default.nix {
36 36 doCheck = false;
37 37 };
38 38
39 39 # For a given derivation, return the list of all dependencies
40 40 drvToDependencies = drv: nixpkgs.lib.flatten [
41 drv.nativeBuildInputs or []
42 drv.propagatedNativeBuildInputs or []
41 drv.buildInputs or []
42 drv.propagatedBuildInputs or []
43 43 ];
44 44
45 45 # Transform the given derivation into the meta information which we need in
46 46 # the resulting JSON files.
47 47 drvToMeta = drv: {
48 name = drv.name or "UNNAMED";
48 name = drv.name or drv;
49 49 license = if drv ? meta.license then drv.meta.license else "UNKNOWN";
50 50 };
51 51
@@ -70,10 +70,8 b' let'
70 70 rawStorePaths = nixpkgs.lib.removeSuffix "\n" (
71 71 builtins.readFile srcPath);
72 72 storePaths = nixpkgs.lib.splitString "\n" rawStorePaths;
73 # TODO: johbo: Would be nice to use some sort of utility here to convert
74 # the path to a derivation name.
75 73 storePathPrefix = (
76 builtins.stringLength "/nix/store/zwy7aavnif9ayw30rya1k6xiacafzzl6-");
74 builtins.stringLength "/nix/store/afafafafafafafafafafafafafafafaf-");
77 75 storePathToName = path:
78 76 builtins.substring storePathPrefix (builtins.stringLength path) path;
79 77 in (map storePathToName storePaths);
@@ -147,6 +145,7 b' in rec {'
147 145 cat > build/licenses.json <<EOF
148 146 ${builtins.toJSON enterpriseRuntimeLicenses}
149 147 EOF
148
150 149 '';
151 150
152 151 installPhase = ''
@@ -488,14 +488,30 b' class TestLabsSettings(object):'
488 488 class TestOpenSourceLicenses(object):
489 489
490 490 def test_records_are_displayed(self, autologin_user):
491 sample_licenses = {
492 "python2.7-pytest-2.7.1": {
493 "UNKNOWN": None
491 sample_licenses = [
492 {
493 "license": [
494 {
495 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
496 "shortName": "bsdOriginal",
497 "spdxId": "BSD-4-Clause",
498 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
499 }
500 ],
501 "name": "python2.7-coverage-3.7.1"
494 502 },
495 "python2.7-Markdown-2.6.2": {
496 "BSD-3-Clause": "http://spdx.org/licenses/BSD-3-Clause"
497 }
498 }
503 {
504 "license": [
505 {
506 "fullName": "MIT License",
507 "shortName": "mit",
508 "spdxId": "MIT",
509 "url": "http://spdx.org/licenses/MIT.html"
510 }
511 ],
512 "name": "python2.7-bootstrapped-pip-9.0.1"
513 },
514 ]
499 515 read_licenses_patch = mock.patch(
500 516 'rhodecode.apps.admin.views.open_source_licenses.read_opensource_licenses',
501 517 return_value=sample_licenses)
@@ -506,10 +522,9 b' class TestOpenSourceLicenses(object):'
506 522 assert_response = AssertResponse(response)
507 523 assert_response.element_contains(
508 524 '.panel-heading', 'Licenses of Third Party Packages')
509 for name in sample_licenses:
510 response.mustcontain(name)
511 for license in sample_licenses[name]:
512 assert_response.element_contains('.panel-body', license)
525 for license_data in sample_licenses:
526 response.mustcontain(license_data["license"][0]["spdxId"])
527 assert_response.element_contains('.panel-body', license_data["name"])
513 528
514 529 def test_records_can_be_read(self, autologin_user):
515 530 response = self.app.get(
@@ -35,7 +35,6 b' class OpenSourceLicensesAdminSettingsVie'
35 35
36 36 def load_default_context(self):
37 37 c = self._get_local_tmpl_context()
38
39 38 return c
40 39
41 40 @LoginRequired()
@@ -47,7 +46,6 b' class OpenSourceLicensesAdminSettingsVie'
47 46 c = self.load_default_context()
48 47 c.active = 'open_source'
49 48 c.navlist = navigation_list(self.request)
50 items = sorted(read_opensource_licenses().items(), key=lambda t: t[0])
51 c.opensource_licenses = collections.OrderedDict(items)
52
49 c.opensource_licenses = sorted(
50 read_opensource_licenses(), key=lambda d: d["name"])
53 51 return self._get_template_context(c)
This diff has been collapsed as it changes many lines, (2281 lines changed) Show them Hide them
@@ -1,369 +1,1912 b''
1 {
2 "libnghttp2-1.7.1": {
3 "MIT License": "http://spdx.org/licenses/MIT"
4 },
5 "nodejs-4.3.1": {
6 "MIT License": "http://spdx.org/licenses/MIT"
7 },
8 "python-2.7.12": {
9 "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0"
10 },
11 "python2.7-Babel-1.3": {
12 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
13 },
14 "python2.7-Beaker-1.7.0": {
15 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
16 },
17 "python2.7-Chameleon-2.24": {
18 "BSD-like": "http://repoze.org/license.html"
19 },
20 "python2.7-FormEncode-1.2.4": {
21 "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0"
22 },
23 "python2.7-Jinja2-2.7.3": {
24 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
25 },
26 "python2.7-Mako-1.0.6": {
27 "MIT License": "http://spdx.org/licenses/MIT"
28 },
29 "python2.7-Markdown-2.6.7": {
30 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
31 },
32 "python2.7-MarkupSafe-0.23": {
33 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
34 },
35 "python2.7-Paste-2.0.3": {
36 "MIT License": "http://spdx.org/licenses/MIT"
37 },
38 "python2.7-PasteDeploy-1.5.2": {
39 "MIT License": "http://spdx.org/licenses/MIT"
40 },
41 "python2.7-PasteScript-1.7.5": {
42 "MIT License": "http://spdx.org/licenses/MIT"
43 },
44 "python2.7-Pygments-2.2.0": {
45 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
46 },
47 "python2.7-Routes-1.13": {
48 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
49 },
50 "python2.7-SQLAlchemy-0.9.9": {
51 "MIT License": "http://spdx.org/licenses/MIT"
52 },
53 "python2.7-Tempita-0.5.2": {
54 "MIT License": "http://spdx.org/licenses/MIT"
55 },
56 "python2.7-URLObject-2.4.0": {
57 "The Unlicense": "http://unlicense.org/"
58 },
59 "python2.7-WebError-0.10.3": {
60 "MIT License": "http://spdx.org/licenses/MIT"
61 },
62 "python2.7-WebHelpers-1.3": {
63 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
64 },
65 "python2.7-WebHelpers2-2.0": {
66 "MIT License": "http://spdx.org/licenses/MIT"
67 },
68 "python2.7-WebOb-1.3.1": {
69 "MIT License": "http://spdx.org/licenses/MIT"
70 },
71 "python2.7-Whoosh-2.7.4": {
72 "BSD 2-clause \"Simplified\" License": "http://spdx.org/licenses/BSD-2-Clause",
73 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
74 },
75 "python2.7-alembic-0.8.4": {
76 "MIT License": "http://spdx.org/licenses/MIT"
77 },
78 "python2.7-appenlight-client-0.6.14": {
79 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
80 },
81 "python2.7-authomatic-0.1.0.post1": {
82 "MIT License": "http://spdx.org/licenses/MIT"
83 },
84 "python2.7-backports.shutil-get-terminal-size-1.0.0": {
85 "MIT License": "http://spdx.org/licenses/MIT"
86 },
87 "python2.7-bleach-1.5.0": {
88 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
89 },
90 "python2.7-celery-2.2.10": {
91 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
92 },
93 "python2.7-channelstream-0.5.2": {
94 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
95 },
96 "python2.7-click-5.1": {
97 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
98 },
99 "python2.7-colander-1.2": {
100 "Repoze License": "http://www.repoze.org/LICENSE.txt"
101 },
102 "python2.7-configobj-5.0.6": {
103 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
104 },
105 "python2.7-configparser-3.5.0": {
106 "MIT License": "http://spdx.org/licenses/MIT"
107 },
108 "python2.7-cssselect-1.0.1": {
109 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
110 },
111 "python2.7-decorator-4.0.11": {
112 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
113 },
114 "python2.7-deform-2.0a2": {
115 "BSD-derived": "http://www.repoze.org/LICENSE.txt"
116 },
117 "python2.7-docutils-0.12": {
118 "BSD 2-clause \"Simplified\" License": "http://spdx.org/licenses/BSD-2-Clause"
119 },
120 "python2.7-dogpile.cache-0.6.1": {
121 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
122 },
123 "python2.7-dogpile.core-0.4.1": {
124 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
125 },
126 "python2.7-elasticsearch-2.3.0": {
127 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
128 },
129 "python2.7-elasticsearch-dsl-2.2.0": {
130 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
131 },
132 "python2.7-entrypoints-0.2.2": {
133 "MIT License": "http://spdx.org/licenses/MIT"
134 },
135 "python2.7-enum34-1.1.6": {
136 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
137 },
138 "python2.7-functools32-3.2.3.post2": {
139 "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0"
140 },
141 "python2.7-future-0.14.3": {
142 "MIT License": "http://spdx.org/licenses/MIT"
143 },
144 "python2.7-futures-3.0.2": {
145 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
146 },
147 "python2.7-gevent-1.1.2": {
148 "MIT License": "http://spdx.org/licenses/MIT"
149 },
150 "python2.7-gnureadline-6.3.3": {
151 "GNU General Public License v1.0 only": "http://spdx.org/licenses/GPL-1.0"
152 },
153 "python2.7-gprof2dot-2016.10.13": {
154 "GNU Lesser General Public License v3.0 or later": "http://spdx.org/licenses/LGPL-3.0+"
155 },
156 "python2.7-greenlet-0.4.10": {
157 "MIT License": "http://spdx.org/licenses/MIT"
158 },
159 "python2.7-gunicorn-19.6.0": {
160 "MIT License": "http://spdx.org/licenses/MIT"
161 },
162 "python2.7-html5lib-0.9999999": {
163 "MIT License": "http://spdx.org/licenses/MIT"
164 },
165 "python2.7-infrae.cache-1.0.1": {
166 "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1"
167 },
168 "python2.7-ipython-5.1.0": {
169 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
170 },
171 "python2.7-ipython-genutils-0.2.0": {
172 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
173 },
174 "python2.7-iso8601-0.1.11": {
175 "MIT License": "http://spdx.org/licenses/MIT"
176 },
177 "python2.7-itsdangerous-0.24": {
178 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
179 },
180 "python2.7-jsonschema-2.6.0": {
181 "MIT License": "http://spdx.org/licenses/MIT"
182 },
183 "python2.7-jupyter-client-5.0.0": {
184 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
185 },
186 "python2.7-jupyter-core-4.3.0": {
187 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
188 },
189 "python2.7-kombu-4.1.0": {
190 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
191 },
192 "python2.7-mistune-0.7.4": {
193 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
194 },
195 "python2.7-msgpack-python-0.4.8": {
196 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
197 },
198 "python2.7-nbconvert-5.1.1": {
199 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
200 },
201 "python2.7-nbformat-4.3.0": {
202 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
203 },
204 "python2.7-packaging-15.2": {
205 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
206 },
207 "python2.7-pandocfilters-1.4.1": {
208 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
209 },
210 "python2.7-pathlib2-2.1.0": {
211 "MIT License": "http://spdx.org/licenses/MIT"
212 },
213 "python2.7-peppercorn-0.5": {
214 "BSD-derived": "http://www.repoze.org/LICENSE.txt"
215 },
216 "python2.7-pexpect-4.2.1": {
217 "ISC License": "http://spdx.org/licenses/ISC"
218 },
219 "python2.7-pickleshare-0.7.4": {
220 "MIT License": "http://spdx.org/licenses/MIT"
221 },
222 "python2.7-prompt-toolkit-1.0.14": {
223 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
224 },
225 "python2.7-psutil-4.3.1": {
226 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
227 },
228 "python2.7-psycopg2-2.6.1": {
229 "GNU Lesser General Public License v3.0 or later": "http://spdx.org/licenses/LGPL-3.0+"
230 },
231 "python2.7-ptyprocess-0.5.1": {
232 "ISC License": "http://opensource.org/licenses/ISC"
233 },
234 "python2.7-py-1.4.31": {
235 "MIT License": "http://spdx.org/licenses/MIT"
236 },
237 "python2.7-py-bcrypt-0.4": {
238 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
239 },
240 "python2.7-py-gfm-0.1.3.rhodecode-upstream1": {
241 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
242 },
243 "python2.7-pycrypto-2.6.1": {
244 "Public Domain": null
245 },
246 "python2.7-pycurl-7.19.5": {
247 "MIT License": "http://spdx.org/licenses/MIT"
248 },
249 "python2.7-pygments-markdown-lexer-0.1.0.dev39": {
250 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
251 },
252 "python2.7-pyparsing-1.5.7": {
253 "MIT License": "http://spdx.org/licenses/MIT"
254 },
255 "python2.7-pyramid-1.7.4": {
256 "Repoze License": "http://www.repoze.org/LICENSE.txt"
257 },
258 "python2.7-pyramid-beaker-0.8": {
259 "Repoze License": "http://www.repoze.org/LICENSE.txt"
260 },
261 "python2.7-pyramid-debugtoolbar-3.0.5": {
262 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause",
263 "Repoze License": "http://www.repoze.org/LICENSE.txt"
264 },
265 "python2.7-pyramid-jinja2-2.5": {
266 "BSD-derived": "http://www.repoze.org/LICENSE.txt"
267 },
268 "python2.7-pyramid-mako-1.0.2": {
269 "Repoze License": "http://www.repoze.org/LICENSE.txt"
270 },
271 "python2.7-pysqlite-2.6.3": {
272 "libpng License": "http://spdx.org/licenses/Libpng",
273 "zlib License": "http://spdx.org/licenses/Zlib"
274 },
275 "python2.7-pytest-3.0.5": {
276 "MIT License": "http://spdx.org/licenses/MIT"
277 },
278 "python2.7-pytest-profiling-1.2.2": {
279 "MIT License": "http://spdx.org/licenses/MIT"
280 },
281 "python2.7-pytest-runner-2.9": {
282 "MIT License": "http://spdx.org/licenses/MIT"
283 },
284 "python2.7-pytest-sugar-0.7.1": {
285 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
286 },
287 "python2.7-pytest-timeout-1.2.0": {
288 "MIT License": "http://spdx.org/licenses/MIT"
289 },
290 "python2.7-python-dateutil-2.1": {
291 "Simplified BSD": null
292 },
293 "python2.7-python-editor-1.0.3": {
294 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
295 },
296 "python2.7-python-ldap-2.4.19": {
297 "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0"
298 },
299 "python2.7-python-memcached-1.57": {
300 "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0"
301 },
302 "python2.7-pytz-2015.4": {
303 "MIT License": "http://spdx.org/licenses/MIT"
304 },
305 "python2.7-pyzmq-14.6.0": {
306 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
307 },
308 "python2.7-repoze.lru-0.6": {
309 "Repoze License": "http://www.repoze.org/LICENSE.txt"
310 },
311 "python2.7-requests-2.9.1": {
312 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
313 },
314 "python2.7-setuptools-scm-1.15.6": {
315 "MIT License": "http://spdx.org/licenses/MIT"
316 },
317 "python2.7-simplegeneric-0.8.1": {
318 "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1"
319 },
320 "python2.7-simplejson-3.7.2": {
321 "MIT License": "http://spdx.org/licenses/MIT"
322 },
323 "python2.7-six-1.9.0": {
324 "MIT License": "http://spdx.org/licenses/MIT"
325 },
326 "python2.7-subprocess32-3.2.6": {
327 "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0"
328 },
329 "python2.7-termcolor-1.1.0": {
330 "MIT License": "http://spdx.org/licenses/MIT"
331 },
332 "python2.7-testpath-0.1": {
333 "MIT License": "http://spdx.org/licenses/MIT"
334 },
335 "python2.7-traitlets-4.3.2": {
336 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
337 },
338 "python2.7-translationstring-1.3": {
339 "Repoze License": "http://www.repoze.org/LICENSE.txt"
340 },
341 "python2.7-urllib3-1.16": {
342 "MIT License": "http://spdx.org/licenses/MIT"
343 },
344 "python2.7-venusian-1.0": {
345 "Repoze License": "http://www.repoze.org/LICENSE.txt"
346 },
347 "python2.7-waitress-1.0.1": {
348 "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1"
349 },
350 "python2.7-wcwidth-0.1.7": {
351 "MIT License": "http://spdx.org/licenses/MIT"
352 },
353 "python2.7-ws4py-0.3.5": {
354 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
355 },
356 "python2.7-zope.cachedescriptors-4.0.0": {
357 "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1"
358 },
359 "python2.7-zope.deprecation-4.1.2": {
360 "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1"
361 },
362 "python2.7-zope.interface-4.1.3": {
363 "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1"
364 },
365 "xz-5.2.2": {
366 "GNU General Public License v2.0 or later": "http://spdx.org/licenses/GPL-2.0+",
367 "GNU Library General Public License v2.1 or later": "http://spdx.org/licenses/LGPL-2.1+"
368 }
369 } No newline at end of file
1 [
2 {
3 "license": [
4 {
5 "fullName": "Python Software Foundation License version 2",
6 "shortName": "psfl",
7 "spdxId": "Python-2.0",
8 "url": "http://spdx.org/licenses/Python-2.0.html"
9 },
10 {
11 "fullName": "Zope Public License 2.0",
12 "shortName": "zpl20",
13 "spdxId": "ZPL-2.0",
14 "url": "http://spdx.org/licenses/ZPL-2.0.html"
15 }
16 ],
17 "name": "python2.7-setuptools-38.4.0"
18 },
19 {
20 "license": {
21 "fullName": "Python Software Foundation License version 2",
22 "shortName": "psfl",
23 "spdxId": "Python-2.0",
24 "url": "http://spdx.org/licenses/Python-2.0.html"
25 },
26 "name": "python-2.7.15"
27 },
28 {
29 "license": [
30 {
31 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
32 "shortName": "bsdOriginal",
33 "spdxId": "BSD-4-Clause",
34 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
35 }
36 ],
37 "name": "python2.7-coverage-3.7.1"
38 },
39 {
40 "license": [
41 {
42 "fullName": "MIT License",
43 "shortName": "mit",
44 "spdxId": "MIT",
45 "url": "http://spdx.org/licenses/MIT.html"
46 }
47 ],
48 "name": "python2.7-bootstrapped-pip-9.0.1"
49 },
50 {
51 "license": [
52 {
53 "fullName": "MIT License",
54 "shortName": "mit",
55 "spdxId": "MIT",
56 "url": "http://spdx.org/licenses/MIT.html"
57 }
58 ],
59 "name": "python2.7-cov-core-1.15.0"
60 },
61 {
62 "license": [
63 {
64 "fullName": "MIT License",
65 "shortName": "mit",
66 "spdxId": "MIT",
67 "url": "http://spdx.org/licenses/MIT.html"
68 }
69 ],
70 "name": "python2.7-webtest-2.0.29"
71 },
72 {
73 "license": [
74 {
75 "fullName": "MIT License",
76 "shortName": "mit",
77 "spdxId": "MIT",
78 "url": "http://spdx.org/licenses/MIT.html"
79 }
80 ],
81 "name": "python2.7-beautifulsoup4-4.6.3"
82 },
83 {
84 "license": [
85 {
86 "fullName": "Zope Public License 2.1",
87 "shortName": "zpl21",
88 "spdxId": "ZPL-2.1",
89 "url": "http://spdx.org/licenses/ZPL-2.1.html"
90 }
91 ],
92 "name": "python2.7-waitress-1.1.0"
93 },
94 {
95 "license": [
96 {
97 "fullName": "MIT License",
98 "shortName": "mit",
99 "spdxId": "MIT",
100 "url": "http://spdx.org/licenses/MIT.html"
101 }
102 ],
103 "name": "python2.7-webob-1.7.4"
104 },
105 {
106 "license": [
107 {
108 "fullName": "MIT License",
109 "shortName": "mit",
110 "spdxId": "MIT",
111 "url": "http://spdx.org/licenses/MIT.html"
112 }
113 ],
114 "name": "python2.7-six-1.11.0"
115 },
116 {
117 "license": [
118 {
119 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
120 "shortName": "bsdOriginal",
121 "spdxId": "BSD-4-Clause",
122 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
123 }
124 ],
125 "name": "python2.7-mock-1.0.1"
126 },
127 {
128 "license": [
129 {
130 "fullName": "MIT License",
131 "shortName": "mit",
132 "spdxId": "MIT",
133 "url": "http://spdx.org/licenses/MIT.html"
134 },
135 {
136 "fullName": "DFSG approved"
137 }
138 ],
139 "name": "python2.7-pytest-timeout-1.2.1"
140 },
141 {
142 "license": [
143 {
144 "fullName": "MIT License",
145 "shortName": "mit",
146 "spdxId": "MIT",
147 "url": "http://spdx.org/licenses/MIT.html"
148 }
149 ],
150 "name": "python2.7-pytest-3.6.0"
151 },
152 {
153 "license": [
154 {
155 "fullName": "ASL"
156 },
157 {
158 "fullName": "Apache License 2.0",
159 "shortName": "asl20",
160 "spdxId": "Apache-2.0",
161 "url": "http://spdx.org/licenses/Apache-2.0.html"
162 }
163 ],
164 "name": "python2.7-funcsigs-1.0.2"
165 },
166 {
167 "license": [
168 {
169 "fullName": "MIT License",
170 "shortName": "mit",
171 "spdxId": "MIT",
172 "url": "http://spdx.org/licenses/MIT.html"
173 }
174 ],
175 "name": "python2.7-pluggy-0.6.0"
176 },
177 {
178 "license": [
179 {
180 "fullName": "MIT License",
181 "shortName": "mit",
182 "spdxId": "MIT",
183 "url": "http://spdx.org/licenses/MIT.html"
184 }
185 ],
186 "name": "python2.7-atomicwrites-1.1.5"
187 },
188 {
189 "license": [
190 {
191 "fullName": "MIT License",
192 "shortName": "mit",
193 "spdxId": "MIT",
194 "url": "http://spdx.org/licenses/MIT.html"
195 }
196 ],
197 "name": "python2.7-more-itertools-4.3.0"
198 },
199 {
200 "license": [
201 {
202 "fullName": "MIT License",
203 "shortName": "mit",
204 "spdxId": "MIT",
205 "url": "http://spdx.org/licenses/MIT.html"
206 }
207 ],
208 "name": "python2.7-attrs-18.1.0"
209 },
210 {
211 "license": [
212 {
213 "fullName": "MIT License",
214 "shortName": "mit",
215 "spdxId": "MIT",
216 "url": "http://spdx.org/licenses/MIT.html"
217 }
218 ],
219 "name": "python2.7-py-1.5.3"
220 },
221 {
222 "license": [
223 {
224 "fullName": "GNU Lesser General Public License v3 or later (LGPLv3+)"
225 },
226 {
227 "fullName": "LGPL"
228 }
229 ],
230 "name": "python2.7-gprof2dot-2017.9.19"
231 },
232 {
233 "license": [
234 {
235 "fullName": "MIT License",
236 "shortName": "mit",
237 "spdxId": "MIT",
238 "url": "http://spdx.org/licenses/MIT.html"
239 }
240 ],
241 "name": "python2.7-pytest-profiling-1.3.0"
242 },
243 {
244 "license": [
245 {
246 "fullName": "MIT License",
247 "shortName": "mit",
248 "spdxId": "MIT",
249 "url": "http://spdx.org/licenses/MIT.html"
250 }
251 ],
252 "name": "python2.7-pytest-runner-4.2"
253 },
254 {
255 "license": [
256 {
257 "fullName": "MIT License",
258 "shortName": "mit",
259 "spdxId": "MIT",
260 "url": "http://spdx.org/licenses/MIT.html"
261 }
262 ],
263 "name": "python2.7-setuptools-scm-2.1.0"
264 },
265 {
266 "license": [
267 {
268 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
269 "shortName": "bsdOriginal",
270 "spdxId": "BSD-4-Clause",
271 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
272 }
273 ],
274 "name": "python2.7-pytest-sugar-0.9.1"
275 },
276 {
277 "license": [
278 {
279 "fullName": "MIT License",
280 "shortName": "mit",
281 "spdxId": "MIT",
282 "url": "http://spdx.org/licenses/MIT.html"
283 }
284 ],
285 "name": "python2.7-termcolor-1.1.0"
286 },
287 {
288 "license": [
289 {
290 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
291 "shortName": "bsdOriginal",
292 "spdxId": "BSD-4-Clause",
293 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
294 },
295 {
296 "fullName": "MIT License",
297 "shortName": "mit",
298 "spdxId": "MIT",
299 "url": "http://spdx.org/licenses/MIT.html"
300 }
301 ],
302 "name": "python2.7-pytest-cov-2.5.1"
303 },
304 {
305 "license": [
306 {
307 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
308 "shortName": "bsdOriginal",
309 "spdxId": "BSD-4-Clause",
310 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
311 }
312 ],
313 "name": "python2.7-appenlight-client-0.6.25"
314 },
315 {
316 "license": [
317 {
318 "fullName": "Apache License 2.0",
319 "shortName": "asl20",
320 "spdxId": "Apache-2.0",
321 "url": "http://spdx.org/licenses/Apache-2.0.html"
322 }
323 ],
324 "name": "python2.7-requests-2.9.1"
325 },
326 {
327 "license": [
328 {
329 "fullName": "AGPLv3 and Proprietary"
330 }
331 ],
332 "name": "python2.7-rhodecode-tools-0.16.0"
333 },
334 {
335 "license": [
336 {
337 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
338 "shortName": "bsdOriginal",
339 "spdxId": "BSD-4-Clause",
340 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
341 },
342 {
343 "fullName": "BSD 2-clause \"Simplified\" License",
344 "shortName": "bsd2",
345 "spdxId": "BSD-2-Clause",
346 "url": "http://spdx.org/licenses/BSD-2-Clause.html"
347 }
348 ],
349 "name": "python2.7-whoosh-2.7.4"
350 },
351 {
352 "license": [
353 {
354 "fullName": "MIT License",
355 "shortName": "mit",
356 "spdxId": "MIT",
357 "url": "http://spdx.org/licenses/MIT.html"
358 }
359 ],
360 "name": "python2.7-urllib3-1.21"
361 },
362 {
363 "license": [
364 {
365 "fullName": "Apache License 2.0",
366 "shortName": "asl20",
367 "spdxId": "Apache-2.0",
368 "url": "http://spdx.org/licenses/Apache-2.0.html"
369 }
370 ],
371 "name": "python2.7-elasticsearch-dsl-2.2.0"
372 },
373 {
374 "license": [
375 {
376 "fullName": "Apache License 2.0",
377 "shortName": "asl20",
378 "spdxId": "Apache-2.0",
379 "url": "http://spdx.org/licenses/Apache-2.0.html"
380 }
381 ],
382 "name": "python2.7-elasticsearch-2.3.0"
383 },
384 {
385 "license": [
386 {
387 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
388 "shortName": "bsdOriginal",
389 "spdxId": "BSD-4-Clause",
390 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
391 },
392 {
393 "fullName": "Apache License 2.0",
394 "shortName": "asl20",
395 "spdxId": "Apache-2.0",
396 "url": "http://spdx.org/licenses/Apache-2.0.html"
397 },
398 {
399 "fullName": "Dual License"
400 }
401 ],
402 "name": "python2.7-python-dateutil-2.7.3"
403 },
404 {
405 "license": [
406 {
407 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
408 "shortName": "bsdOriginal",
409 "spdxId": "BSD-4-Clause",
410 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
411 }
412 ],
413 "name": "python2.7-markupsafe-1.0"
414 },
415 {
416 "license": [
417 {
418 "fullName": "MIT License",
419 "shortName": "mit",
420 "spdxId": "MIT",
421 "url": "http://spdx.org/licenses/MIT.html"
422 }
423 ],
424 "name": "python2.7-mako-1.0.7"
425 },
426 {
427 "license": [
428 {
429 "fullName": "MIT License",
430 "shortName": "mit",
431 "spdxId": "MIT",
432 "url": "http://spdx.org/licenses/MIT.html"
433 }
434 ],
435 "name": "python2.7-future-0.14.3"
436 },
437 {
438 "license": [
439 {
440 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
441 "shortName": "bsdOriginal",
442 "spdxId": "BSD-4-Clause",
443 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
444 }
445 ],
446 "name": "python2.7-click-6.6"
447 },
448 {
449 "license": [
450 {
451 "fullName": "MIT License",
452 "shortName": "mit",
453 "spdxId": "MIT",
454 "url": "http://spdx.org/licenses/MIT.html"
455 }
456 ],
457 "name": "python2.7-bottle-0.12.13"
458 },
459 {
460 "license": [
461 {
462 "fullName": "MIT License",
463 "shortName": "mit",
464 "spdxId": "MIT",
465 "url": "http://spdx.org/licenses/MIT.html"
466 }
467 ],
468 "name": "python2.7-cprofilev-1.0.7"
469 },
470 {
471 "license": [
472 {
473 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
474 "shortName": "bsdOriginal",
475 "spdxId": "BSD-4-Clause",
476 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
477 }
478 ],
479 "name": "python2.7-ipython-5.1.0"
480 },
481 {
482 "license": [
483 {
484 "fullName": "GNU General Public License v3 (GPLv3)"
485 },
486 {
487 "fullName": "GNU General Public License v1.0 only",
488 "shortName": "gpl1",
489 "spdxId": "GPL-1.0",
490 "url": "http://spdx.org/licenses/GPL-1.0.html"
491 }
492 ],
493 "name": "python2.7-gnureadline-6.3.8"
494 },
495 {
496 "license": [
497 {
498 "fullName": "ISC License",
499 "shortName": "isc",
500 "spdxId": "ISC",
501 "url": "http://spdx.org/licenses/ISC.html"
502 },
503 {
504 "fullName": "ISC License (ISCL)"
505 }
506 ],
507 "name": "python2.7-pexpect-4.6.0"
508 },
509 {
510 "license": [],
511 "name": "python2.7-ptyprocess-0.6.0"
512 },
513 {
514 "license": [
515 {
516 "fullName": "MIT License",
517 "shortName": "mit",
518 "spdxId": "MIT",
519 "url": "http://spdx.org/licenses/MIT.html"
520 }
521 ],
522 "name": "python2.7-pathlib2-2.3.0"
523 },
524 {
525 "license": [
526 {
527 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
528 "shortName": "bsdOriginal",
529 "spdxId": "BSD-4-Clause",
530 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
531 },
532 {
533 "fullName": "New BSD License"
534 }
535 ],
536 "name": "python2.7-scandir-1.9.0"
537 },
538 {
539 "license": [
540 {
541 "fullName": "MIT License",
542 "shortName": "mit",
543 "spdxId": "MIT",
544 "url": "http://spdx.org/licenses/MIT.html"
545 }
546 ],
547 "name": "python2.7-backports.shutil-get-terminal-size-1.0.0"
548 },
549 {
550 "license": [
551 {
552 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
553 "shortName": "bsdOriginal",
554 "spdxId": "BSD-4-Clause",
555 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
556 }
557 ],
558 "name": "python2.7-pygments-2.2.0"
559 },
560 {
561 "license": [
562 {
563 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
564 "shortName": "bsdOriginal",
565 "spdxId": "BSD-4-Clause",
566 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
567 }
568 ],
569 "name": "python2.7-prompt-toolkit-1.0.15"
570 },
571 {
572 "license": [
573 {
574 "fullName": "MIT License",
575 "shortName": "mit",
576 "spdxId": "MIT",
577 "url": "http://spdx.org/licenses/MIT.html"
578 }
579 ],
580 "name": "python2.7-wcwidth-0.1.7"
581 },
582 {
583 "license": [
584 {
585 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
586 "shortName": "bsdOriginal",
587 "spdxId": "BSD-4-Clause",
588 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
589 }
590 ],
591 "name": "python2.7-traitlets-4.3.2"
592 },
593 {
594 "license": [
595 {
596 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
597 "shortName": "bsdOriginal",
598 "spdxId": "BSD-4-Clause",
599 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
600 }
601 ],
602 "name": "python2.7-enum34-1.1.6"
603 },
604 {
605 "license": [
606 {
607 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
608 "shortName": "bsdOriginal",
609 "spdxId": "BSD-4-Clause",
610 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
611 },
612 {
613 "fullName": "new BSD License"
614 }
615 ],
616 "name": "python2.7-decorator-4.1.2"
617 },
618 {
619 "license": [
620 {
621 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
622 "shortName": "bsdOriginal",
623 "spdxId": "BSD-4-Clause",
624 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
625 }
626 ],
627 "name": "python2.7-ipython-genutils-0.2.0"
628 },
629 {
630 "license": [
631 {
632 "fullName": "Zope Public License 2.1",
633 "shortName": "zpl21",
634 "spdxId": "ZPL-2.1",
635 "url": "http://spdx.org/licenses/ZPL-2.1.html"
636 }
637 ],
638 "name": "python2.7-simplegeneric-0.8.1"
639 },
640 {
641 "license": [
642 {
643 "fullName": "MIT License",
644 "shortName": "mit",
645 "spdxId": "MIT",
646 "url": "http://spdx.org/licenses/MIT.html"
647 }
648 ],
649 "name": "python2.7-pickleshare-0.7.4"
650 },
651 {
652 "license": [
653 {
654 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
655 "shortName": "bsdOriginal",
656 "spdxId": "BSD-4-Clause",
657 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
658 }
659 ],
660 "name": "python2.7-ipdb-0.11"
661 },
662 {
663 "license": [
664 {
665 "fullName": "MIT License",
666 "shortName": "mit",
667 "spdxId": "MIT",
668 "url": "http://spdx.org/licenses/MIT.html"
669 }
670 ],
671 "name": "python2.7-gunicorn-19.9.0"
672 },
673 {
674 "license": [
675 {
676 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
677 "shortName": "bsdOriginal",
678 "spdxId": "BSD-4-Clause",
679 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
680 }
681 ],
682 "name": "python2.7-futures-3.0.2"
683 },
684 {
685 "license": [
686 {
687 "fullName": "MIT License",
688 "shortName": "mit",
689 "spdxId": "MIT",
690 "url": "http://spdx.org/licenses/MIT.html"
691 }
692 ],
693 "name": "python2.7-greenlet-0.4.13"
694 },
695 {
696 "license": [
697 {
698 "fullName": "MIT License",
699 "shortName": "mit",
700 "spdxId": "MIT",
701 "url": "http://spdx.org/licenses/MIT.html"
702 }
703 ],
704 "name": "python2.7-gevent-1.3.5"
705 },
706 {
707 "license": [
708 {
709 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
710 "shortName": "bsdOriginal",
711 "spdxId": "BSD-4-Clause",
712 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
713 }
714 ],
715 "name": "python2.7-psutil-5.4.6"
716 },
717 {
718 "license": [
719 {
720 "fullName": "MIT License",
721 "shortName": "mit",
722 "spdxId": "MIT",
723 "url": "http://spdx.org/licenses/MIT.html"
724 }
725 ],
726 "name": "python2.7-bumpversion-0.5.3"
727 },
728 {
729 "license": [
730 {
731 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
732 "shortName": "bsdOriginal",
733 "spdxId": "BSD-4-Clause",
734 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
735 }
736 ],
737 "name": "python2.7-invoke-0.13.0"
738 },
739 {
740 "license": [
741 {
742 "fullName": "MIT License",
743 "shortName": "mit",
744 "spdxId": "MIT",
745 "url": "http://spdx.org/licenses/MIT.html"
746 }
747 ],
748 "name": "python2.7-alembic-0.9.9"
749 },
750 {
751 "license": {
752 "fullName": "Apache License 2.0",
753 "shortName": "asl20",
754 "spdxId": "Apache-2.0",
755 "url": "http://spdx.org/licenses/Apache-2.0.html"
756 },
757 "name": "python2.7-python-editor-1.0.3"
758 },
759 {
760 "license": [
761 {
762 "fullName": "MIT License",
763 "shortName": "mit",
764 "spdxId": "MIT",
765 "url": "http://spdx.org/licenses/MIT.html"
766 }
767 ],
768 "name": "python2.7-sqlalchemy-1.1.18"
769 },
770 {
771 "license": [
772 {
773 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
774 "shortName": "bsdOriginal",
775 "spdxId": "BSD-4-Clause",
776 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
777 }
778 ],
779 "name": "python2.7-jupyter-client-5.0.0"
780 },
781 {
782 "license": [
783 {
784 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
785 "shortName": "bsdOriginal",
786 "spdxId": "BSD-4-Clause",
787 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
788 },
789 {
790 "fullName": "LGPL+BSD"
791 },
792 {
793 "fullName": "GNU Library or Lesser General Public License (LGPL)"
794 }
795 ],
796 "name": "python2.7-pyzmq-14.6.0"
797 },
798 {
799 "license": [
800 {
801 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
802 "shortName": "bsdOriginal",
803 "spdxId": "BSD-4-Clause",
804 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
805 }
806 ],
807 "name": "python2.7-jupyter-core-4.4.0"
808 },
809 {
810 "license": [
811 {
812 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
813 "shortName": "bsdOriginal",
814 "spdxId": "BSD-4-Clause",
815 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
816 }
817 ],
818 "name": "python2.7-nbformat-4.4.0"
819 },
820 {
821 "license": [
822 {
823 "fullName": "MIT License",
824 "shortName": "mit",
825 "spdxId": "MIT",
826 "url": "http://spdx.org/licenses/MIT.html"
827 }
828 ],
829 "name": "python2.7-jsonschema-2.6.0"
830 },
831 {
832 "license": [
833 {
834 "fullName": "Python Software Foundation License version 2",
835 "shortName": "psfl",
836 "spdxId": "Python-2.0",
837 "url": "http://spdx.org/licenses/Python-2.0.html"
838 }
839 ],
840 "name": "python2.7-functools32-3.2.3.post2"
841 },
842 {
843 "license": [
844 {
845 "fullName": "Apache License 2.0",
846 "shortName": "asl20",
847 "spdxId": "Apache-2.0",
848 "url": "http://spdx.org/licenses/Apache-2.0.html"
849 }
850 ],
851 "name": "python2.7-bleach-2.1.4"
852 },
853 {
854 "license": [
855 {
856 "fullName": "MIT License",
857 "shortName": "mit",
858 "spdxId": "MIT",
859 "url": "http://spdx.org/licenses/MIT.html"
860 }
861 ],
862 "name": "python2.7-html5lib-1.0.1"
863 },
864 {
865 "license": [
866 {
867 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
868 "shortName": "bsdOriginal",
869 "spdxId": "BSD-4-Clause",
870 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
871 }
872 ],
873 "name": "python2.7-webencodings-0.5.1"
874 },
875 {
876 "license": [
877 {
878 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
879 "shortName": "bsdOriginal",
880 "spdxId": "BSD-4-Clause",
881 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
882 }
883 ],
884 "name": "python2.7-nbconvert-5.3.1"
885 },
886 {
887 "license": [
888 {
889 "fullName": "MIT License",
890 "shortName": "mit",
891 "spdxId": "MIT",
892 "url": "http://spdx.org/licenses/MIT.html"
893 }
894 ],
895 "name": "python2.7-testpath-0.3.1"
896 },
897 {
898 "license": [
899 {
900 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
901 "shortName": "bsdOriginal",
902 "spdxId": "BSD-4-Clause",
903 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
904 }
905 ],
906 "name": "python2.7-pandocfilters-1.4.2"
907 },
908 {
909 "license": [
910 {
911 "fullName": "MIT License",
912 "shortName": "mit",
913 "spdxId": "MIT",
914 "url": "http://spdx.org/licenses/MIT.html"
915 }
916 ],
917 "name": "python2.7-entrypoints-0.2.2"
918 },
919 {
920 "license": [
921 {
922 "fullName": "MIT License",
923 "shortName": "mit",
924 "spdxId": "MIT",
925 "url": "http://spdx.org/licenses/MIT.html"
926 }
927 ],
928 "name": "python2.7-configparser-3.5.0"
929 },
930 {
931 "license": [
932 {
933 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
934 "shortName": "bsdOriginal",
935 "spdxId": "BSD-4-Clause",
936 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
937 }
938 ],
939 "name": "python2.7-jinja2-2.9.6"
940 },
941 {
942 "license": [
943 {
944 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
945 "shortName": "bsdOriginal",
946 "spdxId": "BSD-4-Clause",
947 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
948 }
949 ],
950 "name": "python2.7-mistune-0.8.3"
951 },
952 {
953 "license": [
954 {
955 "fullName": "Zope Public License 2.1",
956 "shortName": "zpl21",
957 "spdxId": "ZPL-2.1",
958 "url": "http://spdx.org/licenses/ZPL-2.1.html"
959 }
960 ],
961 "name": "python2.7-zope.interface-4.5.0"
962 },
963 {
964 "license": [
965 {
966 "fullName": "Zope Public License 2.1",
967 "shortName": "zpl21",
968 "spdxId": "ZPL-2.1",
969 "url": "http://spdx.org/licenses/ZPL-2.1.html"
970 }
971 ],
972 "name": "python2.7-zope.event-4.3.0"
973 },
974 {
975 "license": [
976 {
977 "fullName": "Zope Public License 2.1",
978 "shortName": "zpl21",
979 "spdxId": "ZPL-2.1",
980 "url": "http://spdx.org/licenses/ZPL-2.1.html"
981 }
982 ],
983 "name": "python2.7-zope.deprecation-4.3.0"
984 },
985 {
986 "license": [
987 {
988 "fullName": "Zope Public License 2.1",
989 "shortName": "zpl21",
990 "spdxId": "ZPL-2.1",
991 "url": "http://spdx.org/licenses/ZPL-2.1.html"
992 }
993 ],
994 "name": "python2.7-zope.cachedescriptors-4.3.1"
995 },
996 {
997 "license": [
998 {
999 "fullName": "PSF or ZPL"
1000 }
1001 ],
1002 "name": "python2.7-wsgiref-0.1.2"
1003 },
1004 {
1005 "license": [
1006 {
1007 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1008 "shortName": "bsdOriginal",
1009 "spdxId": "BSD-4-Clause",
1010 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1011 }
1012 ],
1013 "name": "python2.7-webhelpers-1.3"
1014 },
1015 {
1016 "license": [
1017 {
1018 "fullName": "MIT License",
1019 "shortName": "mit",
1020 "spdxId": "MIT",
1021 "url": "http://spdx.org/licenses/MIT.html"
1022 }
1023 ],
1024 "name": "python2.7-webhelpers2-2.0"
1025 },
1026 {
1027 "license": [
1028 {
1029 "fullName": "MIT License",
1030 "shortName": "mit",
1031 "spdxId": "MIT",
1032 "url": "http://spdx.org/licenses/MIT.html"
1033 }
1034 ],
1035 "name": "python2.7-weberror-0.10.3"
1036 },
1037 {
1038 "license": [
1039 {
1040 "fullName": "MIT License",
1041 "shortName": "mit",
1042 "spdxId": "MIT",
1043 "url": "http://spdx.org/licenses/MIT.html"
1044 }
1045 ],
1046 "name": "python2.7-paste-2.0.3"
1047 },
1048 {
1049 "license": [
1050 {
1051 "fullName": "MIT License",
1052 "shortName": "mit",
1053 "spdxId": "MIT",
1054 "url": "http://spdx.org/licenses/MIT.html"
1055 }
1056 ],
1057 "name": "python2.7-tempita-0.5.2"
1058 },
1059 {
1060 "license": {
1061 "fullName": "Repoze License",
1062 "url": "http://www.repoze.org/LICENSE.txt"
1063 },
1064 "name": "python2.7-venusian-1.1.0"
1065 },
1066 {
1067 "license": {
1068 "fullName": "The Unlicense",
1069 "spdxId": "Unlicense",
1070 "url": "http://unlicense.org/"
1071 },
1072 "name": "python2.7-urlobject-2.4.3"
1073 },
1074 {
1075 "license": [
1076 {
1077 "fullName": "Apache License 2.0",
1078 "shortName": "asl20",
1079 "spdxId": "Apache-2.0",
1080 "url": "http://spdx.org/licenses/Apache-2.0.html"
1081 }
1082 ],
1083 "name": "python2.7-trollius-1.0.4"
1084 },
1085 {
1086 "license": {
1087 "fullName": "Repoze License",
1088 "url": "http://www.repoze.org/LICENSE.txt"
1089 },
1090 "name": "python2.7-translationstring-1.3"
1091 },
1092 {
1093 "license": [
1094 {
1095 "fullName": "BSD-derived (http://www.repoze.org/LICENSE.txt)"
1096 }
1097 ],
1098 "name": "python2.7-supervisor-3.3.4"
1099 },
1100 {
1101 "license": [
1102 {
1103 "fullName": "BSD-derived (http://www.repoze.org/LICENSE.txt)"
1104 }
1105 ],
1106 "name": "python2.7-meld3-1.0.2"
1107 },
1108 {
1109 "license": [
1110 {
1111 "fullName": "Python Software Foundation License version 2",
1112 "shortName": "psfl",
1113 "spdxId": "Python-2.0",
1114 "url": "http://spdx.org/licenses/Python-2.0.html"
1115 }
1116 ],
1117 "name": "python2.7-subprocess32-3.5.1"
1118 },
1119 {
1120 "license": [
1121 {
1122 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1123 "shortName": "bsdOriginal",
1124 "spdxId": "BSD-4-Clause",
1125 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1126 }
1127 ],
1128 "name": "python2.7-sshpubkeys-2.2.0"
1129 },
1130 {
1131 "license": [
1132 {
1133 "fullName": "MIT License",
1134 "shortName": "mit",
1135 "spdxId": "MIT",
1136 "url": "http://spdx.org/licenses/MIT.html"
1137 }
1138 ],
1139 "name": "python2.7-ecdsa-0.13"
1140 },
1141 {
1142 "license": [
1143 {
1144 "fullName": "Public Domain",
1145 "shortName": "publicDomain"
1146 }
1147 ],
1148 "name": "python2.7-pycrypto-2.6.1"
1149 },
1150 {
1151 "license": [
1152 {
1153 "fullName": "Academic Free License (AFL)"
1154 },
1155 {
1156 "fullName": "MIT License",
1157 "shortName": "mit",
1158 "spdxId": "MIT",
1159 "url": "http://spdx.org/licenses/MIT.html"
1160 }
1161 ],
1162 "name": "python2.7-simplejson-3.11.1"
1163 },
1164 {
1165 "license": [
1166 {
1167 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1168 "shortName": "bsdOriginal",
1169 "spdxId": "BSD-4-Clause",
1170 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1171 }
1172 ],
1173 "name": "python2.7-setproctitle-1.1.10"
1174 },
1175 {
1176 "license": [
1177 {
1178 "fullName": "MIT License",
1179 "shortName": "mit",
1180 "spdxId": "MIT",
1181 "url": "http://spdx.org/licenses/MIT.html"
1182 }
1183 ],
1184 "name": "python2.7-routes-2.4.1"
1185 },
1186 {
1187 "license": {
1188 "fullName": "Repoze License",
1189 "url": "http://www.repoze.org/LICENSE.txt"
1190 },
1191 "name": "python2.7-repoze.lru-0.7"
1192 },
1193 {
1194 "license": [
1195 {
1196 "fullName": "MIT License",
1197 "shortName": "mit",
1198 "spdxId": "MIT",
1199 "url": "http://spdx.org/licenses/MIT.html"
1200 }
1201 ],
1202 "name": "python2.7-redis-2.10.6"
1203 },
1204 {
1205 "license": [
1206 {
1207 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1208 "shortName": "bsdOriginal",
1209 "spdxId": "BSD-4-Clause",
1210 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1211 }
1212 ],
1213 "name": "python2.7-py-gfm-0.1.3"
1214 },
1215 {
1216 "license": [
1217 {
1218 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1219 "shortName": "bsdOriginal",
1220 "spdxId": "BSD-4-Clause",
1221 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1222 }
1223 ],
1224 "name": "python2.7-markdown-2.6.11"
1225 },
1226 {
1227 "license": [
1228 {
1229 "fullName": "MIT License",
1230 "shortName": "mit",
1231 "spdxId": "MIT",
1232 "url": "http://spdx.org/licenses/MIT.html"
1233 }
1234 ],
1235 "name": "python2.7-tzlocal-1.5.1"
1236 },
1237 {
1238 "license": [
1239 {
1240 "fullName": "MIT License",
1241 "shortName": "mit",
1242 "spdxId": "MIT",
1243 "url": "http://spdx.org/licenses/MIT.html"
1244 }
1245 ],
1246 "name": "python2.7-pytz-2018.4"
1247 },
1248 {
1249 "license": [
1250 {
1251 "fullName": "License :: OSI Approved :: MIT License"
1252 },
1253 {
1254 "fullName": "MIT License",
1255 "shortName": "mit",
1256 "spdxId": "MIT",
1257 "url": "http://spdx.org/licenses/MIT.html"
1258 }
1259 ],
1260 "name": "python2.7-python-pam-1.8.4"
1261 },
1262 {
1263 "license": [
1264 {
1265 "fullName": "GNU General Public License v1.0 only",
1266 "shortName": "gpl1",
1267 "spdxId": "GPL-1.0",
1268 "url": "http://spdx.org/licenses/GPL-1.0.html"
1269 }
1270 ],
1271 "name": "linux-pam-1.3.0"
1272 },
1273 {
1274 "license": [
1275 {
1276 "fullName": "Python Software Foundation License version 2",
1277 "shortName": "psfl",
1278 "spdxId": "Python-2.0",
1279 "url": "http://spdx.org/licenses/Python-2.0.html"
1280 }
1281 ],
1282 "name": "python2.7-python-memcached-1.59"
1283 },
1284 {
1285 "license": [
1286 {
1287 "fullName": "Python Software Foundation License version 2",
1288 "shortName": "psfl",
1289 "spdxId": "Python-2.0",
1290 "url": "http://spdx.org/licenses/Python-2.0.html"
1291 }
1292 ],
1293 "name": "python2.7-python-ldap-3.1.0"
1294 },
1295 {
1296 "license": {
1297 "fullName": "MIT License",
1298 "shortName": "mit",
1299 "spdxId": "MIT",
1300 "url": "http://spdx.org/licenses/MIT.html"
1301 },
1302 "name": "libkrb5-1.15.2"
1303 },
1304 {
1305 "license":{
1306 "fullName": "BSD-derived (https://www.openldap.org/software/release/license.html)"
1307 },
1308 "name": "openldap-2.4.45"
1309 },
1310 {
1311 "license": [
1312 {
1313 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1314 "shortName": "bsdOriginal",
1315 "spdxId": "BSD-4-Clause",
1316 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1317 }
1318 ],
1319 "name": "python2.7-pyasn1-modules-0.2.2"
1320 },
1321 {
1322 "license": [
1323 {
1324 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1325 "shortName": "bsdOriginal",
1326 "spdxId": "BSD-4-Clause",
1327 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1328 }
1329 ],
1330 "name": "python2.7-pyasn1-0.4.4"
1331 },
1332 {
1333 "license": [
1334 {
1335 "fullName": "zlib License",
1336 "shortName": "zlib",
1337 "spdxId": "Zlib",
1338 "url": "http://spdx.org/licenses/Zlib.html"
1339 },
1340 {
1341 "fullName": "libpng License",
1342 "shortName": "libpng",
1343 "spdxId": "Libpng",
1344 "url": "http://spdx.org/licenses/Libpng.html"
1345 }
1346 ],
1347 "name": "python2.7-pysqlite-2.8.3"
1348 },
1349 {
1350 "license": {
1351 "fullName": "Repoze License",
1352 "url": "http://www.repoze.org/LICENSE.txt"
1353 },
1354 "name": "python2.7-pyramid-1.9.2"
1355 },
1356 {
1357 "license": [
1358 {
1359 "fullName": "MIT License",
1360 "shortName": "mit",
1361 "spdxId": "MIT",
1362 "url": "http://spdx.org/licenses/MIT.html"
1363 }
1364 ],
1365 "name": "python2.7-hupper-1.3"
1366 },
1367 {
1368 "license": [
1369 {
1370 "fullName": "MIT License",
1371 "shortName": "mit",
1372 "spdxId": "MIT",
1373 "url": "http://spdx.org/licenses/MIT.html"
1374 }
1375 ],
1376 "name": "python2.7-plaster-pastedeploy-0.6"
1377 },
1378 {
1379 "license": [
1380 {
1381 "fullName": "MIT License",
1382 "shortName": "mit",
1383 "spdxId": "MIT",
1384 "url": "http://spdx.org/licenses/MIT.html"
1385 }
1386 ],
1387 "name": "python2.7-plaster-1.0"
1388 },
1389 {
1390 "license": [
1391 {
1392 "fullName": "MIT License",
1393 "shortName": "mit",
1394 "spdxId": "MIT",
1395 "url": "http://spdx.org/licenses/MIT.html"
1396 }
1397 ],
1398 "name": "python2.7-pastedeploy-1.5.2"
1399 },
1400 {
1401 "license": {
1402 "fullName": "Repoze License",
1403 "url": "http://www.repoze.org/LICENSE.txt"
1404 },
1405 "name": "python2.7-pyramid-mako-1.0.2"
1406 },
1407 {
1408 "license": [
1409 {
1410 "fullName": "Repoze Public License"
1411 },
1412 {
1413 "fullName": "BSD-derived (http://www.repoze.org/LICENSE.txt)"
1414 }
1415 ],
1416 "name": "python2.7-pyramid-jinja2-2.7"
1417 },
1418 {
1419 "license": [
1420 {
1421 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1422 "shortName": "bsdOriginal",
1423 "spdxId": "BSD-4-Clause",
1424 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1425 },
1426 {
1427 "fullName": "Repoze License",
1428 "url": "http://www.repoze.org/LICENSE.txt"
1429 }
1430 ],
1431 "name": "python2.7-pyramid-debugtoolbar-4.4"
1432 },
1433 {
1434 "license": [
1435 {
1436 "fullName": "Python Software Foundation License version 2",
1437 "shortName": "psfl",
1438 "spdxId": "Python-2.0",
1439 "url": "http://spdx.org/licenses/Python-2.0.html"
1440 }
1441 ],
1442 "name": "python2.7-ipaddress-1.0.22"
1443 },
1444 {
1445 "license": {
1446 "fullName": "Repoze License",
1447 "url": "http://www.repoze.org/LICENSE.txt"
1448 },
1449 "name": "python2.7-pyramid-beaker-0.8"
1450 },
1451 {
1452 "license": [
1453 {
1454 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1455 "shortName": "bsdOriginal",
1456 "spdxId": "BSD-4-Clause",
1457 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1458 }
1459 ],
1460 "name": "python2.7-beaker-1.9.1"
1461 },
1462 {
1463 "license": [
1464 {
1465 "fullName": "MIT License",
1466 "shortName": "mit",
1467 "spdxId": "MIT",
1468 "url": "http://spdx.org/licenses/MIT.html"
1469 }
1470 ],
1471 "name": "python2.7-pyparsing-1.5.7"
1472 },
1473 {
1474 "license": [
1475 {
1476 "fullName": "Apache License 2.0",
1477 "shortName": "asl20",
1478 "spdxId": "Apache-2.0",
1479 "url": "http://spdx.org/licenses/Apache-2.0.html"
1480 }
1481 ],
1482 "name": "python2.7-pygments-markdown-lexer-0.1.0.dev39"
1483 },
1484 {
1485 "license": [
1486 {
1487 "fullName": "MIT License",
1488 "shortName": "mit",
1489 "spdxId": "MIT",
1490 "url": "http://spdx.org/licenses/MIT.html"
1491 }
1492 ],
1493 "name": "python2.7-pyflakes-0.8.1"
1494 },
1495 {
1496 "license": {
1497 "fullName": "MIT License",
1498 "shortName": "mit",
1499 "spdxId": "MIT",
1500 "url": "http://spdx.org/licenses/MIT.html"
1501 },
1502 "name": "python2.7-pycurl-7.43.0.2"
1503 },
1504 {
1505 "license": [
1506 {
1507 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1508 "shortName": "bsdOriginal",
1509 "spdxId": "BSD-4-Clause",
1510 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1511 }
1512 ],
1513 "name": "python2.7-py-bcrypt-0.4"
1514 },
1515 {
1516 "license": {
1517 "fullName": "GNU Lesser General Public License v3.0 or later",
1518 "shortName": "lgpl3Plus",
1519 "spdxId": "LGPL-3.0+",
1520 "url": "http://spdx.org/licenses/LGPL-3.0+.html"
1521 },
1522 "name": "python2.7-psycopg2-2.7.4"
1523 },
1524 {
1525 "license": {
1526 "fullName": "PostgreSQL License",
1527 "shortName": "postgresql",
1528 "spdxId": "PostgreSQL",
1529 "url": "http://spdx.org/licenses/PostgreSQL.html"
1530 },
1531 "name": "postgresql-9.6.10"
1532 },
1533 {
1534 "license": [
1535 {
1536 "fullName": "BSD-derived (http://www.repoze.org/LICENSE.txt)"
1537 }
1538 ],
1539 "name": "python2.7-peppercorn-0.5"
1540 },
1541 {
1542 "license": [
1543 {
1544 "fullName": "MIT License",
1545 "shortName": "mit",
1546 "spdxId": "MIT",
1547 "url": "http://spdx.org/licenses/MIT.html"
1548 }
1549 ],
1550 "name": "python2.7-pastescript-2.0.2"
1551 },
1552 {
1553 "license": [
1554 {
1555 "fullName": "Apache License 2.0",
1556 "shortName": "asl20",
1557 "spdxId": "Apache-2.0",
1558 "url": "http://spdx.org/licenses/Apache-2.0.html"
1559 }
1560 ],
1561 "name": "python2.7-packaging-15.2"
1562 },
1563 {
1564 "license": [
1565 {
1566 "fullName": "MIT License",
1567 "shortName": "mit",
1568 "spdxId": "MIT",
1569 "url": "http://spdx.org/licenses/MIT.html"
1570 }
1571 ],
1572 "name": "python2.7-objgraph-3.1.1"
1573 },
1574 {
1575 "license": [
1576 {
1577 "fullName": "MIT License",
1578 "shortName": "mit",
1579 "spdxId": "MIT",
1580 "url": "http://spdx.org/licenses/MIT.html"
1581 }
1582 ],
1583 "name": "python2.7-graphviz-0.9"
1584 },
1585 {
1586 "license": [
1587 {
1588 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1589 "shortName": "bsdOriginal",
1590 "spdxId": "BSD-4-Clause",
1591 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1592 }
1593 ],
1594 "name": "python2.7-pyotp-2.2.6"
1595 },
1596 {
1597 "license": [
1598 {
1599 "fullName": "MIT License",
1600 "shortName": "mit",
1601 "spdxId": "MIT",
1602 "url": "http://spdx.org/licenses/MIT.html"
1603 }
1604 ],
1605 "name": "python2.7-pymysql-0.8.1"
1606 },
1607 {
1608 "license": [
1609 {
1610 "fullName": "GNU General Public License v1.0 only",
1611 "shortName": "gpl1",
1612 "spdxId": "GPL-1.0",
1613 "url": "http://spdx.org/licenses/GPL-1.0.html"
1614 }
1615 ],
1616 "name": "python2.7-mysql-python-1.2.5"
1617 },
1618 {
1619 "license": {
1620 "fullName": "GNU Library General Public License v2.1 only",
1621 "shortName": "lgpl21",
1622 "spdxId": "LGPL-2.1",
1623 "url": "http://spdx.org/licenses/LGPL-2.1.html"
1624 },
1625 "name": "mariadb-connector-c-2.3.4"
1626 },
1627 {
1628 "license": [
1629 {
1630 "fullName": "Apache License 2.0",
1631 "shortName": "asl20",
1632 "spdxId": "Apache-2.0",
1633 "url": "http://spdx.org/licenses/Apache-2.0.html"
1634 }
1635 ],
1636 "name": "python2.7-msgpack-python-0.5.6"
1637 },
1638 {
1639 "license": [
1640 {
1641 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1642 "shortName": "bsdOriginal",
1643 "spdxId": "BSD-4-Clause",
1644 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1645 }
1646 ],
1647 "name": "python2.7-lxml-3.7.3"
1648 },
1649 {
1650 "license": [
1651 {
1652 "fullName": "MIT License",
1653 "shortName": "mit",
1654 "spdxId": "MIT",
1655 "url": "http://spdx.org/licenses/MIT.html"
1656 }
1657 ],
1658 "name": "python2.7-wheel-0.30.0"
1659 },
1660 {
1661 "license": [
1662 {
1663 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1664 "shortName": "bsdOriginal",
1665 "spdxId": "BSD-4-Clause",
1666 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1667 }
1668 ],
1669 "name": "python2.7-kombu-4.2.0"
1670 },
1671 {
1672 "license": [
1673 {
1674 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1675 "shortName": "bsdOriginal",
1676 "spdxId": "BSD-4-Clause",
1677 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1678 }
1679 ],
1680 "name": "python2.7-amqp-2.3.1"
1681 },
1682 {
1683 "license": [
1684 {
1685 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1686 "shortName": "bsdOriginal",
1687 "spdxId": "BSD-4-Clause",
1688 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1689 }
1690 ],
1691 "name": "python2.7-vine-1.1.4"
1692 },
1693 {
1694 "license": [
1695 {
1696 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1697 "shortName": "bsdOriginal",
1698 "spdxId": "BSD-4-Clause",
1699 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1700 }
1701 ],
1702 "name": "python2.7-billiard-3.5.0.3"
1703 },
1704 {
1705 "license": [
1706 {
1707 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1708 "shortName": "bsdOriginal",
1709 "spdxId": "BSD-4-Clause",
1710 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1711 }
1712 ],
1713 "name": "python2.7-itsdangerous-0.24"
1714 },
1715 {
1716 "license": [
1717 {
1718 "fullName": "MIT License",
1719 "shortName": "mit",
1720 "spdxId": "MIT",
1721 "url": "http://spdx.org/licenses/MIT.html"
1722 }
1723 ],
1724 "name": "python2.7-iso8601-0.1.11"
1725 },
1726 {
1727 "license": [
1728 {
1729 "fullName": "Zope Public License 2.1",
1730 "shortName": "zpl21",
1731 "spdxId": "ZPL-2.1",
1732 "url": "http://spdx.org/licenses/ZPL-2.1.html"
1733 }
1734 ],
1735 "name": "python2.7-infrae.cache-1.0.1"
1736 },
1737 {
1738 "license": [
1739 {
1740 "fullName": "Python Software Foundation License version 2",
1741 "shortName": "psfl",
1742 "spdxId": "Python-2.0",
1743 "url": "http://spdx.org/licenses/Python-2.0.html"
1744 }
1745 ],
1746 "name": "python2.7-formencode-1.2.4"
1747 },
1748 {
1749 "license": [
1750 {
1751 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1752 "shortName": "bsdOriginal",
1753 "spdxId": "BSD-4-Clause",
1754 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1755 }
1756 ],
1757 "name": "python2.7-dogpile.core-0.4.1"
1758 },
1759 {
1760 "license": [
1761 {
1762 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1763 "shortName": "bsdOriginal",
1764 "spdxId": "BSD-4-Clause",
1765 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1766 }
1767 ],
1768 "name": "python2.7-dogpile.cache-0.6.6"
1769 },
1770 {
1771 "license": {
1772 "fullName": "BSD 2-clause \"Simplified\" License",
1773 "shortName": "bsd2",
1774 "spdxId": "BSD-2-Clause",
1775 "url": "http://spdx.org/licenses/BSD-2-Clause.html"
1776 },
1777 "name": "python2.7-docutils-0.14"
1778 },
1779 {
1780 "license": [
1781 {
1782 "fullName": "BSD-derived (http://www.repoze.org/LICENSE.txt)"
1783 }
1784 ],
1785 "name": "python2.7-deform-2.0.5"
1786 },
1787 {
1788 "license": {
1789 "fullName": "Repoze License",
1790 "url": "http://www.repoze.org/LICENSE.txt"
1791 },
1792 "name": "python2.7-colander-1.4"
1793 },
1794 {
1795 "license": [
1796 {
1797 "fullName": "BSD-like (http://repoze.org/license.html)"
1798 }
1799 ],
1800 "name": "python2.7-chameleon-2.24"
1801 },
1802 {
1803 "license": [
1804 {
1805 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1806 "shortName": "bsdOriginal",
1807 "spdxId": "BSD-4-Clause",
1808 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1809 }
1810 ],
1811 "name": "python2.7-cssselect-1.0.3"
1812 },
1813 {
1814 "license": [
1815 {
1816 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1817 "shortName": "bsdOriginal",
1818 "spdxId": "BSD-4-Clause",
1819 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1820 }
1821 ],
1822 "name": "python2.7-configobj-5.0.6"
1823 },
1824 {
1825 "license": [
1826 {
1827 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1828 "shortName": "bsdOriginal",
1829 "spdxId": "BSD-4-Clause",
1830 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1831 }
1832 ],
1833 "name": "python2.7-channelstream-0.5.2"
1834 },
1835 {
1836 "license": [
1837 {
1838 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1839 "shortName": "bsdOriginal",
1840 "spdxId": "BSD-4-Clause",
1841 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1842 }
1843 ],
1844 "name": "python2.7-ws4py-0.5.1"
1845 },
1846 {
1847 "license": [
1848 {
1849 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1850 "shortName": "bsdOriginal",
1851 "spdxId": "BSD-4-Clause",
1852 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1853 }
1854 ],
1855 "name": "python2.7-celery-4.1.1"
1856 },
1857 {
1858 "license": [
1859 {
1860 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1861 "shortName": "bsdOriginal",
1862 "spdxId": "BSD-4-Clause",
1863 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1864 }
1865 ],
1866 "name": "python2.7-babel-1.3"
1867 },
1868 {
1869 "license": [
1870 {
1871 "fullName": "MIT License",
1872 "shortName": "mit",
1873 "spdxId": "MIT",
1874 "url": "http://spdx.org/licenses/MIT.html"
1875 }
1876 ],
1877 "name": "python2.7-authomatic-0.1.0.post1"
1878 },
1879 {
1880 "license": [
1881 {
1882 "fullName": "MIT License",
1883 "shortName": "mit",
1884 "spdxId": "MIT",
1885 "url": "http://spdx.org/licenses/MIT.html"
1886 }
1887 ],
1888 "name": "node-grunt-cli-1.2.0"
1889 },
1890 {
1891 "license": [
1892 {
1893 "fullName": "MIT License",
1894 "shortName": "mit",
1895 "spdxId": "MIT",
1896 "url": "http://spdx.org/licenses/MIT.html"
1897 }
1898 ],
1899 "name": "node-bower-1.8.4"
1900 },
1901 {
1902 "license": [
1903 {
1904 "fullName": "MIT License",
1905 "shortName": "mit",
1906 "spdxId": "MIT",
1907 "url": "http://spdx.org/licenses/MIT.html"
1908 }
1909 ],
1910 "name": "python2.7-rhodecode-testdata-0.10.0"
1911 }
1912 ]
@@ -372,6 +372,7 b' table.keyboard-mappings {'
372 372 table.rctable.dl-settings {
373 373 td {
374 374 border: none;
375 vertical-align: baseline;
375 376 }
376 377 }
377 378
@@ -1,3 +1,11 b''
1 <%def name="show_license(license_data)">
2 % if isinstance(license_data, dict):
3 <a href="${license_data.get('url', "#noUrl")}">${license_data.get('spdxId') or license_data.get('fullName')}</a>
4 % else:
5 ${license_data}
6 % endif
7 </%def>
8
1 9 <div class="panel panel-default">
2 10 <div class="panel-heading">
3 11 <h3 class="panel-title">${_('Licenses of Third Party Packages')}</h3>
@@ -7,24 +15,29 b''
7 15 RhodeCode Enterprise uses various third party packages, many of them
8 16 provided by the open source community.
9 17 </p>
10
11 18 % if c.opensource_licenses:
12 19 <table class="rctable dl-settings">
13 20 <thead>
14 21 <th>Product</th>
15 22 <th>License</th>
16 23 </thead>
17 %for product, licenses in c.opensource_licenses.items():
18 <tr>
19 <td>${product}</td>
20 <td>
21 ${h.literal(', '.join([
22 '<a href="%(link)s" title="%(name)s">%(name)s</a>' % {'link':link, 'name':name}
23 if link else name
24 for name,link in licenses.items()]))}
25 </td>
26 </tr>
27 %endfor
24 % for lib in c.opensource_licenses:
25 <tr>
26 <td>${lib["name"]}</td>
27 <td>
28 <ol>
29 % if isinstance(lib["license"], list):
30 % for license_data in lib["license"]:
31 <li>${show_license(license_data)}</li>
32 % endfor
33 % else:
34 <% license_data = lib["license"] %>
35 <li>${show_license(license_data)}</li>
36 % endif
37 </ol>
38 </td>
39 </tr>
40 % endfor
28 41 </table>
29 42 % endif
30 43 </div>
@@ -302,7 +302,7 b' class TestPasswordChanged(object):'
302 302 assert result is True
303 303
304 304
305 class TestReadOpensourceLicenses(object):
305 class TestReadOpenSourceLicenses(object):
306 306 def test_success(self):
307 307 utils._license_cache = None
308 308 json_data = '''
@@ -343,10 +343,14 b' class TestReadOpensourceLicenses(object)'
343 343 def test_licenses_file_contains_no_unknown_licenses(self):
344 344 utils._license_cache = None
345 345 result = utils.read_opensource_licenses()
346 license_names = []
347 for licenses in result.values():
348 license_names.extend(licenses.keys())
349 assert 'UNKNOWN' not in license_names
346
347 for license_data in result:
348 if isinstance(license_data["license"], list):
349 for lic_data in license_data["license"]:
350 assert 'UNKNOWN' not in lic_data["fullName"]
351 else:
352 full_name = license_data.get("fullName") or license_data
353 assert 'UNKNOWN' not in full_name
350 354
351 355
352 356 class TestMakeDbConfig(object):
General Comments 0
You need to be logged in to leave comments. Login now