From 6eb91feaf401e295250d3db03dbbd81969d36397 Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Sat, 25 Sep 2021 00:33:27 +0200 Subject: [PATCH 1/2] Return package details in summary #2717 Also do not return empty values in summaries. Signed-off-by: Philippe Ombredanne --- src/summarycode/summarizer.py | 135 +- .../data/classify/cli.expected.json | 1 + .../copyright_summary/summary.expected.json | 1 + .../copyright_summary/summary2.expected.json | 1 + .../summary_details.expected.json | 1 + .../summary_details.expected2.json | 1 + .../summary_key_files.expected.json | 33 +- .../data/end-2-end/bug-1141.expected.json | 41 +- .../summarycode/data/facet/cli.expected.json | 1 + .../data/full_summary/summary.expected.json | 2855 ++++++++++++++- .../summary_by_facet.expected.json | 3170 +++++++++++++++-- .../summary_details.expected.json | 155 +- ...mary_key_files-details.expected.json-lines | 38 +- .../summary_key_files.expected.json | 38 +- .../data/generated/cli.expected.json | 1 + tests/summarycode/data/packages/expected.json | 655 +++- .../component-package-build-expected.json | 1 + .../component-package-expected.json | 36 +- .../e2fsprogs-expected.json | 3 + .../license-holder-rollup-expected.json | 1 + ...iple-same-holder-and-license-expected.json | 2 + ...t-counted-in-license-holders-expected.json | 1 + .../package-fileset-expected.json | 1 + .../package-manifest-expected.json | 1 + ...rectory-with-minority-origin-expected.json | 2 + ...return-nested-local-majority-expected.json | 1 + .../plugin_consolidate/zlib-expected.json | 3 + .../data/score/basic-expected.json | 1 + .../score/consistent_licenses-expected.json | 1 + .../consistent_licenses_not-expected.json | 1 + ...consistent_licenses_not_spdx-expected.json | 1 + .../data/score/file_coverage-expected.json | 1 + .../data/score/full_text-expected.json | 1 + .../full_text_in_key_files-expected.json | 1 + .../data/score/single_file-expected.json | 1 + .../data/score/spdx_licenses-expected.json | 1 + .../score/spdx_licenses_not-expected.json | 3 +- .../data/score/top_declared-expected.json | 1 + .../data/score/top_declared_not-expected.json | 1 + 39 files changed, 6637 insertions(+), 556 deletions(-) diff --git a/src/summarycode/summarizer.py b/src/summarycode/summarizer.py index 0e5ad4bf858..300428a9aa2 100644 --- a/src/summarycode/summarizer.py +++ b/src/summarycode/summarizer.py @@ -40,49 +40,7 @@ def logger_debug(*args): return logger.debug(' '.join(isinstance(a, str) and a or repr(a) for a in args)) """ -top_level: - - license_expressions: - - count: 1 - value: gpl-2.0 - - holders: - - count: 1 - value: RedHat Inc. - -by_facet: - facet: core - - license_expressions: - - count: 10 - value: gpl-2.0 or bsd-new - - count: 2 - value: mit - - programming_language: - - count: 10 - value: java - - holders: - - count: 10 - value: RedHat Inc. - facet: dev - - license_expressions: - - count: 23 - value: gpl-2.0 - - holders: - - count: 20 - value: RedHat Inc. - - count: 10 - value: none - - programming_languages: - - count: 34 - value: java -all: - - license_expressions: - - count: 10 - value: gpl-2.0 or bsd-new - - programming_language: - - count: 10 - value: java - - holders: - - count: 10 - value: RedHat Inc. +Create summarized scan data. """ @@ -205,8 +163,10 @@ def license_summarizer(resource, children, keep_details=False): child_summaries = get_resource_summary(child, key=LIC_EXP, as_attribute=keep_details) or [] for child_summary in child_summaries: # TODO: review this: this feels rather weird - values = [child_summary['value']] * child_summary['count'] - license_expressions.extend(values) + child_sum_val = child_summary.get('value') + if child_sum_val: + values = [child_sum_val] * child_summary['count'] + license_expressions.extend(values) # summarize proper licenses_counter = summarize_licenses(license_expressions) @@ -245,8 +205,10 @@ def language_summarizer(resource, children, keep_details=False): for child in children: child_summaries = get_resource_summary(child, key=PROG_LANG, as_attribute=keep_details) or [] for child_summary in child_summaries: - values = [child_summary['value']] * child_summary['count'] - languages.extend(values) + child_sum_val = child_summary.get('value') + if child_sum_val: + values = [child_sum_val] * child_summary['count'] + languages.extend(values) # summarize proper languages_counter = summarize_languages(languages) @@ -264,11 +226,23 @@ def summarize_languages(languages): return Counter(languages) +SUMMARIZABLE_ATTRS = set([ + 'license_expressions', + 'copyrights', + 'holders', + 'authors', + 'programming_language', + # 'packages', +]) + + def summarize_values(values, attribute): """ Given a list of `values` for a given `attribute`, return a mapping of {value: count of occurences} using a summarization specific to the attribute. """ + if attribute not in SUMMARIZABLE_ATTRS: + return {} from summarycode.copyright_summary import summarize_holders from summarycode.copyright_summary import summarize_copyrights @@ -278,7 +252,6 @@ def summarize_values(values, attribute): holders=summarize_holders, authors=summarize_holders, programming_language=summarize_languages, - packages=summarize_packages, ) return value_summarizers_by_attr[attribute](values) @@ -317,23 +290,14 @@ def summarize_codebase_key_files(codebase, **kwargs): """ Summarize codebase key files. """ - summarizable_attributes = codebase.attributes.summary.keys() - if TRACE: logger_debug('summarizable_attributes:', summarizable_attributes) - - # TODO: we cannot summarize packages with "key files for now - really_summarizable_attributes = set([ - 'license_expressions', - 'copyrights', - 'holders', - 'authors', - 'programming_language', - # 'packages', - ]) - summarizable_attributes = [k for k in summarizable_attributes - if k in really_summarizable_attributes] + summarizables = codebase.attributes.summary.keys() + if TRACE: logger_debug('summarizables:', summarizables) + + # TODO: we cannot summarize packages with "key files" for now + summarizables = [k for k in summarizables if k in SUMMARIZABLE_ATTRS] # create one counter for each summarized attribute - summarizable_values_by_key = dict([(key, []) for key in summarizable_attributes]) + summarizable_values_by_key = dict([(key, []) for key in summarizables]) # filter to get only key files key_files = (res for res in codebase.walk(topdown=True) @@ -347,10 +311,14 @@ def summarize_codebase_key_files(codebase, **kwargs): res_summaries = get_resource_summary(resource, key=key, as_attribute=False) or [] for summary in res_summaries: # each summary is a mapping with value/count: we transform back to values - values.extend([summary['value']] * summary['count']) + sum_value = summary.get('value') + if sum_value: + values.extend([sum_value] * summary['count']) summary_counters = [] for key, values in summarizable_values_by_key.items(): + if key not in SUMMARIZABLE_ATTRS: + continue summarized = summarize_values(values, key) summary_counters.append((key, summarized)) @@ -394,13 +362,13 @@ def summarize_codebase_by_facet(codebase, **kwargs): """ from summarycode import facet as facet_module - summarizable_attributes = codebase.attributes.summary.keys() + summarizable = codebase.attributes.summary.keys() if TRACE: - logger_debug('summarize_codebase_by_facet for attributes:', summarizable_attributes) + logger_debug('summarize_codebase_by_facet for attributes:', summarizable) # create one group of by-facet values lists for each summarized attribute summarizable_values_by_key_by_facet = dict([ - (facet, dict([(key, []) for key in summarizable_attributes])) + (facet, dict([(key, []) for key in summarizable])) for facet in facet_module.FACETS ]) @@ -417,7 +385,9 @@ def summarize_codebase_by_facet(codebase, **kwargs): res_summaries = get_resource_summary(resource, key=key, as_attribute=False) or [] for summary in res_summaries: # each summary is a mapping with value/count: we transform back to discrete values - values.extend([summary['value']] * summary['count']) + sum_value = summary.get('value') + if sum_value: + values.extend([sum_value] * summary['count']) final_summaries = [] for facet, summarizable_values_by_key in summarizable_values_by_key_by_facet.items(): @@ -480,28 +450,11 @@ def package_summarizer(resource, children, keep_details=False): logger_debug('package_summarizer: for:', resource, 'packages are:', packs) - package_urls = [] - for package in packages: - purl = package.get('purl') - if purl: - package_urls.append(purl) + # Collect direct children packages summary + for child in children: + child_summaries = get_resource_summary(child, key='packages', as_attribute=False) or [] + packages.extend(child_summaries) # summarize proper - packages_counter = summarize_packages(package_urls) - summarized = sorted_counter(packages_counter) - set_resource_summary( - resource=resource, - key='packages', - value=summarized, - as_attribute=keep_details, - ) - - return summarized - - -def summarize_packages(package_urls): - """ - Given a list of package urls, return a mapping of {expression: count - of occurences} - """ - return Counter(package_urls) + set_resource_summary(resource, key='packages', value=packages, as_attribute=False) + return packages diff --git a/tests/summarycode/data/classify/cli.expected.json b/tests/summarycode/data/classify/cli.expected.json index 12495d5e805..d8dfd9ecb02 100644 --- a/tests/summarycode/data/classify/cli.expected.json +++ b/tests/summarycode/data/classify/cli.expected.json @@ -9,6 +9,7 @@ "--json-pp": "" }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/copyright_summary/summary.expected.json b/tests/summarycode/data/copyright_summary/summary.expected.json index 22cb648e094..a2d1262627a 100644 --- a/tests/summarycode/data/copyright_summary/summary.expected.json +++ b/tests/summarycode/data/copyright_summary/summary.expected.json @@ -9,6 +9,7 @@ "--summary": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/copyright_summary/summary2.expected.json b/tests/summarycode/data/copyright_summary/summary2.expected.json index 02899c1a843..5fe6ae86337 100644 --- a/tests/summarycode/data/copyright_summary/summary2.expected.json +++ b/tests/summarycode/data/copyright_summary/summary2.expected.json @@ -9,6 +9,7 @@ "--summary": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/copyright_summary/summary_details.expected.json b/tests/summarycode/data/copyright_summary/summary_details.expected.json index 70ffa30a164..2738427d58d 100644 --- a/tests/summarycode/data/copyright_summary/summary_details.expected.json +++ b/tests/summarycode/data/copyright_summary/summary_details.expected.json @@ -9,6 +9,7 @@ "--summary-with-details": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/copyright_summary/summary_details.expected2.json b/tests/summarycode/data/copyright_summary/summary_details.expected2.json index 22be02b602f..4e57f9a191f 100644 --- a/tests/summarycode/data/copyright_summary/summary_details.expected2.json +++ b/tests/summarycode/data/copyright_summary/summary_details.expected2.json @@ -9,6 +9,7 @@ "--summary-with-details": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/copyright_summary/summary_key_files.expected.json b/tests/summarycode/data/copyright_summary/summary_key_files.expected.json index de5708904a8..c40be4b3ca7 100644 --- a/tests/summarycode/data/copyright_summary/summary_key_files.expected.json +++ b/tests/summarycode/data/copyright_summary/summary_key_files.expected.json @@ -12,6 +12,7 @@ "--summary-key-files": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { @@ -148,10 +149,6 @@ "value": "Java", "count": 7 }, - { - "value": null, - "count": 2 - }, { "value": "C#", "count": 2 @@ -163,30 +160,10 @@ ] }, "summary_of_key_files": { - "copyrights": [ - { - "value": null, - "count": 1 - } - ], - "holders": [ - { - "value": null, - "count": 1 - } - ], - "authors": [ - { - "value": null, - "count": 1 - } - ], - "programming_language": [ - { - "value": null, - "count": 1 - } - ] + "copyrights": [], + "holders": [], + "authors": [], + "programming_language": [] }, "files": [ { diff --git a/tests/summarycode/data/end-2-end/bug-1141.expected.json b/tests/summarycode/data/end-2-end/bug-1141.expected.json index a1dc13a76e4..409b6aad15b 100644 --- a/tests/summarycode/data/end-2-end/bug-1141.expected.json +++ b/tests/summarycode/data/end-2-end/bug-1141.expected.json @@ -17,6 +17,7 @@ "--summary-key-files": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { @@ -27,10 +28,6 @@ ], "summary": { "license_expressions": [ - { - "value": null, - "count": 2 - }, { "value": "gpl-2.0-plus", "count": 1 @@ -71,10 +68,6 @@ } ], "programming_language": [ - { - "value": null, - "count": 2 - }, { "value": "C", "count": 2 @@ -84,39 +77,15 @@ }, "summary_of_key_files": { "license_expressions": [ - { - "value": null, - "count": 1 - }, { "value": "gpl-3.0-plus", "count": 1 } ], - "copyrights": [ - { - "value": null, - "count": 2 - } - ], - "holders": [ - { - "value": null, - "count": 2 - } - ], - "authors": [ - { - "value": null, - "count": 2 - } - ], - "programming_language": [ - { - "value": null, - "count": 2 - } - ] + "copyrights": [], + "holders": [], + "authors": [], + "programming_language": [] }, "files": [ { diff --git a/tests/summarycode/data/facet/cli.expected.json b/tests/summarycode/data/facet/cli.expected.json index 2fb3a393cb7..84e29d4b13a 100644 --- a/tests/summarycode/data/facet/cli.expected.json +++ b/tests/summarycode/data/facet/cli.expected.json @@ -13,6 +13,7 @@ "--json-pp": "" }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/full_summary/summary.expected.json b/tests/summarycode/data/full_summary/summary.expected.json index eaf36708829..274b66348a0 100644 --- a/tests/summarycode/data/full_summary/summary.expected.json +++ b/tests/summarycode/data/full_summary/summary.expected.json @@ -27,10 +27,6 @@ "value": "zlib", "count": 12 }, - { - "value": null, - "count": 5 - }, { "value": "lgpl-2.1-plus", "count": 3 @@ -191,10 +187,6 @@ "value": "Java", "count": 7 }, - { - "value": null, - "count": 4 - }, { "value": "C#", "count": 2 @@ -204,7 +196,2852 @@ "count": 1 } ], - "packages": [] + "packages": [ + { + "type": "npm", + "namespace": null, + "name": "npm", + "version": "2.13.5", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": "a package manager for JavaScript", + "release_date": null, + "parties": [ + { + "type": "person", + "role": "author", + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me" + }, + { + "type": "person", + "role": "contributor", + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Steve Steiner", + "email": "ssteinerX@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mikeal Rogers", + "email": "mikeal.rogers@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Aaron Blohowiak", + "email": "aaron.blohowiak@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Martyn Smith", + "email": "martyn@dollyfish.net.nz", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Charlie Robbins", + "email": "charlie.robbins@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Francisco Treacy", + "email": "francisco.treacy@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Cliffano Subagio", + "email": "cliffano@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Christian Eager", + "email": "christian.eager@nokia.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Dav Glass", + "email": "davglass@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alex K. Wolfe", + "email": "alexkwolfe@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "James Sanders", + "email": "jimmyjazz14@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Reid Burke", + "email": "me@reidburke.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Arlo Breault", + "email": "arlolra@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Timo Derstappen", + "email": "teemow@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Bart Teeuwisse", + "email": "bart.teeuwisse@thecodemill.biz", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ben Noordhuis", + "email": "info@bnoordhuis.nl", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tor Valamo", + "email": "tor.valamo@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Whyme.Lyu", + "email": "5longluna@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Olivier Melcher", + "email": "olivier.melcher@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Toma\u017e Muraus", + "email": "kami@k5-storitve.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Evan Meagher", + "email": "evan.meagher@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Orlando Vazquez", + "email": "ovazquez@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kai Chen", + "email": "kaichenxyz@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "George Miroshnykov", + "email": "gmiroshnykov@lohika.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Geoff Flarity", + "email": "geoff.flarity@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Max Goodman", + "email": "c@chromakode.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Pete Kruckenberg", + "email": "pete@kruckenberg.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Laurie Harper", + "email": "laurie@holoweb.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Chris Wong", + "email": "chris@chriswongstudio.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Scott Bronson", + "email": "brons_github@rinspin.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Federico Romero", + "email": "federomero@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Visnu Pitiyanuvath", + "email": "visnupx@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Irakli Gozalishvili", + "email": "rfobic@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mark Cahill", + "email": "mark@tiemonster.info", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tony", + "email": "zearin@gonk.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Iain Sproat", + "email": "iainsproat@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Trent Mick", + "email": "trentm@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Felix Geisendo\u0308rfer", + "email": "felix@debuggable.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jameson Little", + "email": "t.jameson.little@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Conny Brunnkvist", + "email": "conny@fuchsia.se", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Will Elwood", + "email": "w.elwood08@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Dean Landolt", + "email": "dean@deanlandolt.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Oleg Efimov", + "email": "efimovov@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Martin Cooper", + "email": "mfncooper@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jann Horn", + "email": "jannhorn@googlemail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrew Bradley", + "email": "cspotcode@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Maciej Ma\u0142ecki", + "email": "me@mmalecki.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Stephen Sugden", + "email": "glurgle@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Michael Budde", + "email": "mbudde@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jason Smith", + "email": "jhs@iriscouch.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Gautham Pai", + "email": "buzypi@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "David Trejo", + "email": "david.daniel.trejo@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Paul Vorbach", + "email": "paul@vorb.de", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "George Ornbo", + "email": "george@shapeshed.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tim Oxley", + "email": "secoif@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tyler Green", + "email": "tyler.green2@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Dave Pacheco", + "email": "dap@joyent.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Danila Gerasimov", + "email": "danila.gerasimov@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Rod Vagg", + "email": "rod@vagg.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Christian Howe", + "email": "coderarity@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrew Lunny", + "email": "alunny@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Henrik Hodne", + "email": "dvyjones@binaryhex.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Adam Blackburn", + "email": "regality@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kris Windham", + "email": "kriswindham@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jens Grunert", + "email": "jens.grunert@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Joost-Wim Boekesteijn", + "email": "joost-wim@boekesteijn.nl", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Dalmais Maxence", + "email": "root@ip-10-195-202-5.ec2.internal", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Marcus Ekwall", + "email": "marcus.ekwall@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Aaron Stacy", + "email": "aaron.r.stacy@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Phillip Howell", + "email": "phowell@cothm.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Domenic Denicola", + "email": "domenic@domenicdenicola.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "James Halliday", + "email": "mail@substack.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jeremy Cantrell", + "email": "jmcantrell@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ribettes", + "email": "patlogan29@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Don Park", + "email": "donpark@docuverse.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Einar Otto Stangvik", + "email": "einaros@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kei Son", + "email": "heyacct@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nicolas Morel", + "email": "marsup@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mark Dube", + "email": "markisdee@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nathan Rajlich", + "email": "nathan@tootallnate.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Maxim Bogushevich", + "email": "boga1@mail.ru", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Meaglin", + "email": "Meaglin.wasabi@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ben Evans", + "email": "ben@bensbit.co.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nathan Zadoks", + "email": "nathan@nathan7.eu", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Brian White", + "email": "mscdex@mscdex.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jed Schmidt", + "email": "tr@nslator.jp", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ian Livingstone", + "email": "ianl@cs.dal.ca", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Patrick Pfeiffer", + "email": "patrick@buzzle.at", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Paul Miller", + "email": "paul@paulmillr.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ryan Emery", + "email": "seebees@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Carl Lange", + "email": "carl@flax.ie", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jan Lehnardt", + "email": "jan@apache.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Stuart P. Bentley", + "email": "stuart@testtrack4.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Johan Sk\u00f6ld", + "email": "johan@skold.cc", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Stuart Knightley", + "email": "stuart@stuartk.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Niggler", + "email": "nirk.niggler@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Paolo Fragomeni", + "email": "paolo@async.ly", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jaakko Manninen", + "email": "jaakko@rocketpack.fi", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Luke Arduini", + "email": "luke.arduini@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Larz Conwell", + "email": "larz@larz-laptop.(none)", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Marcel Klehr", + "email": "mklehr@gmx.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Robert Kowalski", + "email": "rok@kowalski.gd", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Forbes Lindesay", + "email": "forbes@lindesay.co.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Vaz Allen", + "email": "vaz@tryptid.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jake Verbaten", + "email": "raynos2@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Schabse Laks", + "email": "Dev@SLaks.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Florian Margaine", + "email": "florian@margaine.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Johan Nordberg", + "email": "its@johan-nordberg.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ian Babrou", + "email": "ibobrik@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Di Wu", + "email": "dwu@palantir.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mathias Bynens", + "email": "mathias@qiwi.be", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Matt McClure", + "email": "matt.mcclure@mapmyfitness.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Matt Lunn", + "email": "matt@mattlunn.me.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alexey Kreschuk", + "email": "akrsch@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "elisee", + "email": "elisee@sparklin.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Robert Gieseke", + "email": "robert.gieseke@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Franc\u0327ois Frisch", + "email": "francoisfrisch@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Trevor Burnham", + "email": "tburnham@hubspot.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alan Shaw", + "email": "alan@freestyle-developments.co.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nicholas Kinsey", + "email": "pyro@feisty.io", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Paulo Cesar", + "email": "pauloc062@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Elan Shanker", + "email": "elan.shanker@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jon Spencer", + "email": "jon@jonspencer.ca", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jason Diamond", + "email": "jason@diamond.name", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Maximilian Antoni", + "email": "mail@maxantoni.de", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Thom Blake", + "email": "tblake@brightroll.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jess Martin", + "email": "jessmartin@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Spain Train", + "email": "michael.spainhower@opower.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alex Rodionov", + "email": "p0deje@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Matt Colyer", + "email": "matt@colyer.name", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "bitspill", + "email": "bitspill+github@bitspill.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Gabriel Falkenberg", + "email": "gabriel.falkenberg@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alexej Yaroshevich", + "email": "alex@qfox.ru", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Quim Calpe", + "email": "quim@kalpe.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Steve Mason", + "email": "stevem@brandwatch.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Wil Moore III", + "email": "wil.moore@wilmoore.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Sergey Belov", + "email": "peimei@ya.ru", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tom Huang", + "email": "hzlhu.dargon@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "CamilleM", + "email": "camille.moulin@alterway.fr", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "S\u00e9bastien Santoro", + "email": "dereckson@espace-win.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Evan Lucas", + "email": "evan@btc.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Quinn Slack", + "email": "qslack@qslack.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alex Kocharin", + "email": "alex@kocharin.ru", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Daniel Santiago", + "email": "daniel.santiago@highlevelwebs.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Denis Gladkikh", + "email": "outcoldman@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrew Horton", + "email": "andrew.j.horton@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Zeke Sikelianos", + "email": "zeke@sikelianos.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Dylan Greene", + "email": "dylang@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Franck Cuny", + "email": "franck.cuny@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Yeonghoon Park", + "email": "sola92@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Rafael de Oleza", + "email": "rafa@spotify.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mikola Lysenko", + "email": "mikolalysenko@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Yazhong Liu", + "email": "yorkiefixer@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Neil Gentleman", + "email": "ngentleman@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kris Kowal", + "email": "kris.kowal@cixar.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alex Gorbatchev", + "email": "alex.gorbatchev@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Shawn Wildermuth", + "email": "shawn@wildermuth.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Wesley de Souza", + "email": "wesleywex@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "yoyoyogi", + "email": "yogesh.k@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "J. Tangelder", + "email": "j.tangelder@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jean Lauliac", + "email": "jean@lauliac.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrey Kislyuk", + "email": "kislyuk@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Thorsten Lorenz", + "email": "thlorenz@gmx.de", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Julian Gruber", + "email": "julian@juliangruber.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Benjamin Coe", + "email": "bencoe@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alex Ford", + "email": "Alex.Ford@CodeTunnel.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Matt Hickford", + "email": "matt.hickford@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Sean McGivern", + "email": "sean.mcgivern@rightscale.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "C J Silverio", + "email": "ceejceej@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Robin Tweedie", + "email": "robin@songkick.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Miroslav Bajto\u0161", + "email": "miroslav@strongloop.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "David Glasser", + "email": "glasser@davidglasser.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Gianluca Casati", + "email": "casati_gianluca@yahoo.it", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Forrest L Norvell", + "email": "ogd@aoaioxxysz.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Karsten Tinnefeld", + "email": "k.tinnefeld@googlemail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Bryan Burgers", + "email": "bryan@burgers.io", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "David Beitey", + "email": "david@davidjb.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Evan You", + "email": "yyou@google.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Zach Pomerantz", + "email": "zmp@umich.edu", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Chris Williams", + "email": "cwilliams88@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "sudodoki", + "email": "smd.deluzion@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mick Thompson", + "email": "dthompson@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Felix Rabe", + "email": "felix@rabe.io", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Michael Hayes", + "email": "michael@hayes.io", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Chris Dickinson", + "email": "christopher.s.dickinson@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Bradley Meck", + "email": "bradley.meck@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "GeJ", + "email": "geraud@gcu.info", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrew Terris", + "email": "atterris@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Michael Nisi", + "email": "michael.nisi@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "fengmk2", + "email": "fengmk2@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Adam Meadows", + "email": "adam.meadows@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Chulki Lee", + "email": "chulki.lee@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "\u4e0d\u56db", + "email": "busi.hyy@taobao.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "dead_horse", + "email": "dead_horse@qq.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kenan Yildirim", + "email": "kenan@kenany.me", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Laurie Voss", + "email": "git@seldo.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Rebecca Turner", + "email": "me@re-becca.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Hunter Loftis", + "email": "hunter@hunterloftis.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Peter Richardson", + "email": "github@zoomy.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jussi Kalliokoski", + "email": "jussi.kalliokoski@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Filip Weiss", + "email": "me@fiws.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Timo Wei\u00df", + "email": "timoweiss@Timo-MBP.local", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Christopher Hiller", + "email": "chiller@badwing.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "J\u00e9r\u00e9my Lal", + "email": "kapouer@melix.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Anders Janmyr", + "email": "anders@janmyr.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Chris Meyers", + "email": "chris.meyers.fsu@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ludwig Magnusson", + "email": "ludwig@mediatool.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Wout Mertens", + "email": "Wout.Mertens@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nick Santos", + "email": "nick@medium.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Terin Stock", + "email": "terinjokes@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Faiq Raza", + "email": "faiqrazarizvi@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Thomas Torp", + "email": "thomas@erupt.no", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Sam Mikes", + "email": "smikes@cubane.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mat Tyndall", + "email": "mat.tyndall@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tauren Mills", + "email": "tauren@sportzing.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ron Martinez", + "email": "ramartin.net@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kazuhito Hokamura", + "email": "k.hokamura@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tristan Davies", + "email": "github@tristan.io", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "David Volm", + "email": "david@volminator.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Lin Clark", + "email": "lin.w.clark@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ben Page", + "email": "bpage@dewalch.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jeff Jo", + "email": "jeffjo@squareup.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "martinvd", + "email": "martinvdpub@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mark J. Titorenko", + "email": "nospam-github.com@titorenko.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Oddur Sigurdsson", + "email": "oddurs@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Eric Mill", + "email": "eric@konklone.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Gabriel Barros", + "email": "descartavel1@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "KevinSheedy", + "email": "kevinsheedy@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Aleksey Smolenchuk", + "email": "aleksey@uber.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ed Morley", + "email": "emorley@mozilla.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Blaine Bublitz", + "email": "blaine@iceddev.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrey Fedorov", + "email": "anfedorov@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Daijiro Wachi", + "email": "daijiro.wachi@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Luc Thevenard", + "email": "lucthevenard@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Aria Stewart", + "email": "aredridel@nbtsc.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Charlie Rudolph", + "email": "charles.w.rudolph@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Vladimir Rutsky", + "email": "rutsky@users.noreply.github.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Isaac Murchie", + "email": "isaac@saucelabs.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Marcin Wosinek", + "email": "marcin.wosinek@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "David Marr", + "email": "davemarr@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Bryan English", + "email": "bryan@bryanenglish.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Anthony Zotti", + "email": "amZotti@users.noreply.github.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Karl Horky", + "email": "karl.horky@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Gu\u00f0laugur Stef\u00e1n Egilsson", + "email": "gulli@kolibri.is", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Helge Skogly Holm", + "email": "helge.holm@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Peter A. Shevtsov", + "email": "petr.shevtsov@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alain Kalker", + "email": "a.c.kalker@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Bryant Williams", + "email": "b.n.williams@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jonas Weber", + "email": "github@jonasw.de", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tim Whidden", + "email": "twhid@twhid.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andreas", + "email": "functino@users.noreply.github.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Karolis Narkevicius", + "email": "karolis.n@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Adrian Lynch", + "email": "adi_ady_ade@hotmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Richard Littauer", + "email": "richard.littauer@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Oli Evans", + "email": "oli@zilla.org.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Matt Brennan", + "email": "mattyb1000@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jeff Barczewski", + "email": "jeff.barczewski@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Danny Fritz", + "email": "dannyfritz@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Takaya Kobayashi", + "email": "jigsaw@live.jp", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ra'Shaun Stovall", + "email": "rashaunstovall@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Julien Meddah", + "email": "julien.meddah@deveryware.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Michiel Sikma", + "email": "michiel@wedemandhtml.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jakob Krigovsky", + "email": "jakob.krigovsky@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Charmander", + "email": "~@charmander.me", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Erik Wienhold", + "email": "git@ewie.name", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "James Butler", + "email": "james.butler@sandfox.co.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kevin Kragenbrink", + "email": "kevin@gaikai.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Arnaud Rinquin", + "email": "rinquin.arnaud@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mike MacCana", + "email": "mike.maccana@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Antti Mattila", + "email": "anttti@fastmail.fm", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "laiso", + "email": "laiso@lai.so", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Matt Zorn", + "email": "zornme@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kyle Mitchell", + "email": "kyle@kemitchell.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Michael Klein", + "email": "mischkl@users.noreply.github.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Simen Bekkhus", + "email": "sbekkhus91@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Victor", + "email": "victor.shih@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "thefourtheye", + "email": "thechargingvolcano@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Clay Carpenter", + "email": "claycarpenter@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "bangbang93", + "email": "bangbang93@163.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nick Malaguti", + "email": "nmalaguti@palantir.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Cedric Nelson", + "email": "cedric.nelson@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kat March\u00e1n", + "email": "kzm@sykosomatic.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrew", + "email": "talktome@aboutandrew.co.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Eduardo Pinho", + "email": "enet4mikeenet@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Rachel Hutchison", + "email": "rhutchix@intel.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ryan Temple", + "email": "ryantemple145@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Eugene Sharygin", + "email": "eush77@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nick Heiner", + "email": "nick.heiner@opower.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "James Talmage", + "email": "james@talmage.io", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "jane arc", + "email": "jane@uber.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Joseph Dykstra", + "email": "josephdykstra@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Joshua Egan", + "email": "josh-egan@users.noreply.github.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Thomas Cort", + "email": "thomasc@ssimicro.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Thaddee Tyl", + "email": "thaddee.tyl@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Steve Klabnik", + "email": "steve@steveklabnik.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrew Murray", + "email": "radarhere@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Stephan B\u00f6nnemann", + "email": "stephan@excellenteasy.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kyle M. Tarplee", + "email": "kyle.tarplee@numerica.us", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Derek Peterson", + "email": "derekpetey@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Greg Whiteley", + "email": "greg.whiteley@atomos.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "murgatroid99", + "email": "mlumish@google.com", + "url": null + }, + { + "type": "person", + "role": "maintainer", + "name": "isaacs", + "email": "isaacs@npmjs.com", + "url": null + }, + { + "type": "person", + "role": "maintainer", + "name": "othiym23", + "email": "ogd@aoaioxxysz.net", + "url": null + }, + { + "type": "person", + "role": "maintainer", + "name": "iarna", + "email": "me@re-becca.org", + "url": null + }, + { + "type": "person", + "role": "maintainer", + "name": "zkat", + "email": "kat@sykosomatic.org", + "url": null + } + ], + "keywords": [ + "package manager", + "modules", + "install", + "package.json" + ], + "homepage_url": "https://docs.npmjs.com/", + "download_url": "https://registry.npmjs.org/npm/-/npm-2.13.5.tgz", + "size": null, + "sha1": "a124386bce4a90506f28ad4b1d1a804a17baaf32", + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": "http://github.com/npm/npm/issues", + "code_view_url": null, + "vcs_url": "git+https://github.com/npm/npm.git@fc7bbf03e39cc48a8924b90696d28345a6a90f3c", + "copyright": null, + "license_expression": "artistic-2.0", + "declared_license": [ + "Artistic-2.0" + ], + "notice_text": null, + "root_path": "scan", + "dependencies": [ + { + "purl": "pkg:npm/abbrev", + "requirement": "~1.0.7", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/ansi", + "requirement": "~0.3.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/ansicolors", + "requirement": "~0.3.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/ansistyles", + "requirement": "~0.1.3", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/archy", + "requirement": "~1.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/async-some", + "requirement": "~1.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/block-stream", + "requirement": "0.0.8", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/char-spinner", + "requirement": "~1.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/chmodr", + "requirement": "~1.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/chownr", + "requirement": "0.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/cmd-shim", + "requirement": "~2.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/columnify", + "requirement": "~1.5.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/config-chain", + "requirement": "~1.1.9", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/dezalgo", + "requirement": "~1.0.3", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/editor", + "requirement": "~1.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/fs-vacuum", + "requirement": "~1.2.6", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/fs-write-stream-atomic", + "requirement": "~1.0.3", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/fstream", + "requirement": "~1.0.7", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/fstream-npm", + "requirement": "~1.0.4", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/github-url-from-git", + "requirement": "~1.4.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/github-url-from-username-repo", + "requirement": "~1.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/glob", + "requirement": "~5.0.14", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/graceful-fs", + "requirement": "~4.1.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/hosted-git-info", + "requirement": "~2.1.4", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/inflight", + "requirement": "~1.0.4", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/inherits", + "requirement": "~2.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/ini", + "requirement": "~1.3.4", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/init-package-json", + "requirement": "~1.7.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/lockfile", + "requirement": "~1.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/lru-cache", + "requirement": "~2.6.5", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/minimatch", + "requirement": "~2.0.10", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/mkdirp", + "requirement": "~0.5.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/node-gyp", + "requirement": "~2.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/nopt", + "requirement": "~3.0.3", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/normalize-git-url", + "requirement": "~3.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/normalize-package-data", + "requirement": "~2.3.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-cache-filename", + "requirement": "~1.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-install-checks", + "requirement": "~1.0.6", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-package-arg", + "requirement": "~4.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-registry-client", + "requirement": "~6.5.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-user-validate", + "requirement": "~0.1.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/npmlog", + "requirement": "~1.2.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/once", + "requirement": "~1.3.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/opener", + "requirement": "~1.4.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/osenv", + "requirement": "~0.1.3", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/path-is-inside", + "requirement": "~1.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/read", + "requirement": "~1.0.6", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/read-installed", + "requirement": "~4.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/read-package-json", + "requirement": "~2.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/readable-stream", + "requirement": "~1.1.13", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/realize-package-specifier", + "requirement": "~3.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/request", + "requirement": "~2.60.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/retry", + "requirement": "~0.6.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/rimraf", + "requirement": "~2.4.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/semver", + "requirement": "~5.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/sha", + "requirement": "~1.3.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/slide", + "requirement": "~1.1.6", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/sorted-object", + "requirement": "~1.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/spdx", + "requirement": "~0.4.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/tar", + "requirement": "~2.1.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/text-table", + "requirement": "~0.2.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/uid-number", + "requirement": "0.0.6", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/umask", + "requirement": "~1.1.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/validate-npm-package-name", + "requirement": "~2.2.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/which", + "requirement": "~1.1.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/wrappy", + "requirement": "~1.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/write-file-atomic", + "requirement": "~1.1.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/validate-npm-package-license", + "requirement": "*", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/deep-equal", + "requirement": "~1.0.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/marked", + "requirement": "~0.3.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/marked-man", + "requirement": "~0.1.5", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/nock", + "requirement": "~2.10.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-registry-couchapp", + "requirement": "~2.6.7", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-registry-mock", + "requirement": "~1.0.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/require-inject", + "requirement": "~1.2.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/sprintf-js", + "requirement": "~1.0.2", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/tap", + "requirement": "~1.3.1", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + } + ], + "contains_source_code": null, + "source_packages": [], + "extra_data": {}, + "purl": "pkg:npm/npm@2.13.5", + "repository_homepage_url": "https://www.npmjs.com/package/npm", + "repository_download_url": "https://registry.npmjs.org/npm/-/npm-2.13.5.tgz", + "api_data_url": "https://registry.npmjs.org/npm/2.13.5", + "files": [ + { + "path": "scan/package.json", + "type": "file" + } + ] + } + ] }, "files": [ { diff --git a/tests/summarycode/data/full_summary/summary_by_facet.expected.json b/tests/summarycode/data/full_summary/summary_by_facet.expected.json index a1cde259f7b..a0fc6c61be1 100644 --- a/tests/summarycode/data/full_summary/summary_by_facet.expected.json +++ b/tests/summarycode/data/full_summary/summary_by_facet.expected.json @@ -38,10 +38,6 @@ "value": "zlib", "count": 12 }, - { - "value": null, - "count": 5 - }, { "value": "lgpl-2.1-plus", "count": 3 @@ -202,10 +198,6 @@ "value": "Java", "count": 7 }, - { - "value": null, - "count": 4 - }, { "value": "C#", "count": 2 @@ -215,287 +207,3061 @@ "count": 1 } ], - "packages": [] - }, - "summary_by_facet": [ - { - "facet": "core", - "summary": { - "license_expressions": [ + "packages": [ + { + "type": "npm", + "namespace": null, + "name": "npm", + "version": "2.13.5", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": "a package manager for JavaScript", + "release_date": null, + "parties": [ { - "value": "zlib", - "count": 9 + "type": "person", + "role": "author", + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me" }, { - "value": "artistic-2.0", - "count": 1 + "type": "person", + "role": "contributor", + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": null }, { - "value": "cc0-1.0", - "count": 1 + "type": "person", + "role": "contributor", + "name": "Steve Steiner", + "email": "ssteinerX@gmail.com", + "url": null }, { - "value": "mit-old-style", - "count": 1 - } - ], - "copyrights": [ + "type": "person", + "role": "contributor", + "name": "Mikeal Rogers", + "email": "mikeal.rogers@gmail.com", + "url": null + }, { - "value": "Copyright (c) Jean-loup Gailly", - "count": 4 + "type": "person", + "role": "contributor", + "name": "Aaron Blohowiak", + "email": "aaron.blohowiak@gmail.com", + "url": null }, { - "value": "Copyright (c) Jean-loup Gailly and Mark Adler", - "count": 3 + "type": "person", + "role": "contributor", + "name": "Martyn Smith", + "email": "martyn@dollyfish.net.nz", + "url": null }, { - "value": null, - "count": 2 + "type": "person", + "role": "contributor", + "name": "Charlie Robbins", + "email": "charlie.robbins@gmail.com", + "url": null }, { - "value": "Copyright (c) Mark Adler", - "count": 2 + "type": "person", + "role": "contributor", + "name": "Francisco Treacy", + "email": "francisco.treacy@gmail.com", + "url": null }, { - "value": "Copyright (c) Christian Michelsen Research AS Advanced Computing", - "count": 1 - } - ], - "holders": [ + "type": "person", + "role": "contributor", + "name": "Cliffano Subagio", + "email": "cliffano@gmail.com", + "url": null + }, { - "value": "Jean-loup Gailly", - "count": 4 + "type": "person", + "role": "contributor", + "name": "Christian Eager", + "email": "christian.eager@nokia.com", + "url": null }, { - "value": "Jean-loup Gailly and Mark Adler", - "count": 3 + "type": "person", + "role": "contributor", + "name": "Dav Glass", + "email": "davglass@gmail.com", + "url": null }, { - "value": null, - "count": 2 + "type": "person", + "role": "contributor", + "name": "Alex K. Wolfe", + "email": "alexkwolfe@gmail.com", + "url": null }, { - "value": "Mark Adler", - "count": 2 + "type": "person", + "role": "contributor", + "name": "James Sanders", + "email": "jimmyjazz14@gmail.com", + "url": null }, { - "value": "Christian Michelsen Research AS Advanced Computing", - "count": 1 - } - ], - "authors": [ + "type": "person", + "role": "contributor", + "name": "Reid Burke", + "email": "me@reidburke.com", + "url": null + }, { - "value": null, - "count": 11 + "type": "person", + "role": "contributor", + "name": "Arlo Breault", + "email": "arlolra@gmail.com", + "url": null }, { - "value": "name' Isaac Z.", - "count": 1 - } - ], - "programming_language": [ + "type": "person", + "role": "contributor", + "name": "Timo Derstappen", + "email": "teemow@gmail.com", + "url": null + }, { - "value": "C", - "count": 10 + "type": "person", + "role": "contributor", + "name": "Bart Teeuwisse", + "email": "bart.teeuwisse@thecodemill.biz", + "url": null }, { - "value": null, - "count": 2 - } - ], - "packages": [ + "type": "person", + "role": "contributor", + "name": "Ben Noordhuis", + "email": "info@bnoordhuis.nl", + "url": null + }, { - "value": "pkg:npm/npm@2.13.5", - "count": 1 - } - ] - } - }, - { - "facet": "dev", - "summary": { - "license_expressions": [ + "type": "person", + "role": "contributor", + "name": "Tor Valamo", + "email": "tor.valamo@gmail.com", + "url": null + }, { - "value": null, - "count": 4 + "type": "person", + "role": "contributor", + "name": "Whyme.Lyu", + "email": "5longluna@gmail.com", + "url": null }, { - "value": "lgpl-2.1-plus", - "count": 3 + "type": "person", + "role": "contributor", + "name": "Olivier Melcher", + "email": "olivier.melcher@gmail.com", + "url": null }, { - "value": "boost-1.0", - "count": 1 + "type": "person", + "role": "contributor", + "name": "Toma\u017e Muraus", + "email": "kami@k5-storitve.net", + "url": null }, { - "value": "cc-by-2.5", - "count": 1 + "type": "person", + "role": "contributor", + "name": "Evan Meagher", + "email": "evan.meagher@gmail.com", + "url": null }, { - "value": "gpl-2.0-plus WITH ada-linking-exception", - "count": 1 - } - ], - "copyrights": [ + "type": "person", + "role": "contributor", + "name": "Orlando Vazquez", + "email": "ovazquez@gmail.com", + "url": null + }, { - "value": null, - "count": 3 + "type": "person", + "role": "contributor", + "name": "Kai Chen", + "email": "kaichenxyz@gmail.com", + "url": null }, { - "value": "Copyright (c) Brian Goetz and Tim Peierls", - "count": 1 + "type": "person", + "role": "contributor", + "name": "George Miroshnykov", + "email": "gmiroshnykov@lohika.com", + "url": null }, { - "value": "Copyright (c) Dmitriy Anisimkov", - "count": 1 + "type": "person", + "role": "contributor", + "name": "Geoff Flarity", + "email": "geoff.flarity@gmail.com", + "url": null }, { - "value": "Copyright (c) by Henrik Ravn", - "count": 1 + "type": "person", + "role": "contributor", + "name": "Max Goodman", + "email": "c@chromakode.com", + "url": null }, { - "value": "Copyright Henrik Ravn", - "count": 1 + "type": "person", + "role": "contributor", + "name": "Pete Kruckenberg", + "email": "pete@kruckenberg.com", + "url": null }, { - "value": "Copyright JBoss Inc., and individual contributors", - "count": 1 + "type": "person", + "role": "contributor", + "name": "Laurie Harper", + "email": "laurie@holoweb.net", + "url": null }, { - "value": "Copyright Red Hat Middleware LLC, and individual contributors", - "count": 1 + "type": "person", + "role": "contributor", + "name": "Chris Wong", + "email": "chris@chriswongstudio.com", + "url": null }, { - "value": "Copyright Red Hat, Inc. and individual contributors", - "count": 1 - } - ], - "holders": [ + "type": "person", + "role": "contributor", + "name": "Scott Bronson", + "email": "brons_github@rinspin.com", + "url": null + }, { - "value": null, - "count": 3 + "type": "person", + "role": "contributor", + "name": "Federico Romero", + "email": "federomero@gmail.com", + "url": null }, { - "value": "Henrik Ravn", - "count": 2 + "type": "person", + "role": "contributor", + "name": "Visnu Pitiyanuvath", + "email": "visnupx@gmail.com", + "url": null }, { - "value": "Brian Goetz and Tim Peierls", - "count": 1 + "type": "person", + "role": "contributor", + "name": "Irakli Gozalishvili", + "email": "rfobic@gmail.com", + "url": null }, { - "value": "Dmitriy Anisimkov", - "count": 1 + "type": "person", + "role": "contributor", + "name": "Mark Cahill", + "email": "mark@tiemonster.info", + "url": null }, { - "value": "JBoss Inc., and individual contributors", - "count": 1 + "type": "person", + "role": "contributor", + "name": "Tony", + "email": "zearin@gonk.net", + "url": null }, { - "value": "Red Hat Middleware LLC, and individual contributors", - "count": 1 + "type": "person", + "role": "contributor", + "name": "Iain Sproat", + "email": "iainsproat@gmail.com", + "url": null }, { - "value": "Red Hat, Inc. and individual contributors", - "count": 1 - } - ], - "authors": [ + "type": "person", + "role": "contributor", + "name": "Trent Mick", + "email": "trentm@gmail.com", + "url": null + }, { - "value": null, - "count": 6 + "type": "person", + "role": "contributor", + "name": "Felix Geisendo\u0308rfer", + "email": "felix@debuggable.com", + "url": null }, { - "value": "Bela Ban", - "count": 4 - } - ], - "programming_language": [ + "type": "person", + "role": "contributor", + "name": "Jameson Little", + "email": "t.jameson.little@gmail.com", + "url": null + }, { - "value": "Java", - "count": 7 + "type": "person", + "role": "contributor", + "name": "Conny Brunnkvist", + "email": "conny@fuchsia.se", + "url": null }, { - "value": "C#", - "count": 2 + "type": "person", + "role": "contributor", + "name": "Will Elwood", + "email": "w.elwood08@gmail.com", + "url": null }, { - "value": null, - "count": 1 - } - ], - "packages": [] - } - }, - { - "facet": "tests", - "summary": { - "license_expressions": [ + "type": "person", + "role": "contributor", + "name": "Dean Landolt", + "email": "dean@deanlandolt.com", + "url": null + }, { - "value": "zlib", - "count": 2 - } - ], - "copyrights": [ + "type": "person", + "role": "contributor", + "name": "Oleg Efimov", + "email": "efimovov@gmail.com", + "url": null + }, { - "value": "Copyright (c) Mark Adler", - "count": 2 - } - ], - "holders": [ + "type": "person", + "role": "contributor", + "name": "Martin Cooper", + "email": "mfncooper@gmail.com", + "url": null + }, { - "value": "Mark Adler", - "count": 2 - } - ], - "authors": [ + "type": "person", + "role": "contributor", + "name": "Jann Horn", + "email": "jannhorn@googlemail.com", + "url": null + }, { - "value": null, - "count": 2 - } - ], - "programming_language": [ + "type": "person", + "role": "contributor", + "name": "Andrew Bradley", + "email": "cspotcode@gmail.com", + "url": null + }, { - "value": "C", - "count": 2 - } - ], - "packages": [] - } - }, - { - "facet": "docs", - "summary": { - "license_expressions": [ + "type": "person", + "role": "contributor", + "name": "Maciej Ma\u0142ecki", + "email": "me@mmalecki.com", + "url": null + }, { - "value": null, - "count": 1 - } - ], - "copyrights": [ + "type": "person", + "role": "contributor", + "name": "Stephen Sugden", + "email": "glurgle@gmail.com", + "url": null + }, { - "value": null, - "count": 1 - } - ], - "holders": [ + "type": "person", + "role": "contributor", + "name": "Michael Budde", + "email": "mbudde@gmail.com", + "url": null + }, { - "value": null, - "count": 1 - } - ], - "authors": [ + "type": "person", + "role": "contributor", + "name": "Jason Smith", + "email": "jhs@iriscouch.com", + "url": null + }, { - "value": null, - "count": 1 - } - ], - "programming_language": [ + "type": "person", + "role": "contributor", + "name": "Gautham Pai", + "email": "buzypi@gmail.com", + "url": null + }, { - "value": null, - "count": 1 - } - ], + "type": "person", + "role": "contributor", + "name": "David Trejo", + "email": "david.daniel.trejo@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Paul Vorbach", + "email": "paul@vorb.de", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "George Ornbo", + "email": "george@shapeshed.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tim Oxley", + "email": "secoif@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tyler Green", + "email": "tyler.green2@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Dave Pacheco", + "email": "dap@joyent.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Danila Gerasimov", + "email": "danila.gerasimov@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Rod Vagg", + "email": "rod@vagg.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Christian Howe", + "email": "coderarity@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrew Lunny", + "email": "alunny@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Henrik Hodne", + "email": "dvyjones@binaryhex.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Adam Blackburn", + "email": "regality@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kris Windham", + "email": "kriswindham@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jens Grunert", + "email": "jens.grunert@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Joost-Wim Boekesteijn", + "email": "joost-wim@boekesteijn.nl", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Dalmais Maxence", + "email": "root@ip-10-195-202-5.ec2.internal", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Marcus Ekwall", + "email": "marcus.ekwall@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Aaron Stacy", + "email": "aaron.r.stacy@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Phillip Howell", + "email": "phowell@cothm.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Domenic Denicola", + "email": "domenic@domenicdenicola.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "James Halliday", + "email": "mail@substack.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jeremy Cantrell", + "email": "jmcantrell@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ribettes", + "email": "patlogan29@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Don Park", + "email": "donpark@docuverse.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Einar Otto Stangvik", + "email": "einaros@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kei Son", + "email": "heyacct@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nicolas Morel", + "email": "marsup@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mark Dube", + "email": "markisdee@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nathan Rajlich", + "email": "nathan@tootallnate.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Maxim Bogushevich", + "email": "boga1@mail.ru", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Meaglin", + "email": "Meaglin.wasabi@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ben Evans", + "email": "ben@bensbit.co.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nathan Zadoks", + "email": "nathan@nathan7.eu", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Brian White", + "email": "mscdex@mscdex.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jed Schmidt", + "email": "tr@nslator.jp", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ian Livingstone", + "email": "ianl@cs.dal.ca", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Patrick Pfeiffer", + "email": "patrick@buzzle.at", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Paul Miller", + "email": "paul@paulmillr.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ryan Emery", + "email": "seebees@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Carl Lange", + "email": "carl@flax.ie", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jan Lehnardt", + "email": "jan@apache.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Stuart P. Bentley", + "email": "stuart@testtrack4.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Johan Sk\u00f6ld", + "email": "johan@skold.cc", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Stuart Knightley", + "email": "stuart@stuartk.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Niggler", + "email": "nirk.niggler@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Paolo Fragomeni", + "email": "paolo@async.ly", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jaakko Manninen", + "email": "jaakko@rocketpack.fi", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Luke Arduini", + "email": "luke.arduini@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Larz Conwell", + "email": "larz@larz-laptop.(none)", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Marcel Klehr", + "email": "mklehr@gmx.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Robert Kowalski", + "email": "rok@kowalski.gd", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Forbes Lindesay", + "email": "forbes@lindesay.co.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Vaz Allen", + "email": "vaz@tryptid.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jake Verbaten", + "email": "raynos2@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Schabse Laks", + "email": "Dev@SLaks.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Florian Margaine", + "email": "florian@margaine.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Johan Nordberg", + "email": "its@johan-nordberg.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ian Babrou", + "email": "ibobrik@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Di Wu", + "email": "dwu@palantir.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mathias Bynens", + "email": "mathias@qiwi.be", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Matt McClure", + "email": "matt.mcclure@mapmyfitness.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Matt Lunn", + "email": "matt@mattlunn.me.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alexey Kreschuk", + "email": "akrsch@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "elisee", + "email": "elisee@sparklin.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Robert Gieseke", + "email": "robert.gieseke@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Franc\u0327ois Frisch", + "email": "francoisfrisch@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Trevor Burnham", + "email": "tburnham@hubspot.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alan Shaw", + "email": "alan@freestyle-developments.co.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nicholas Kinsey", + "email": "pyro@feisty.io", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Paulo Cesar", + "email": "pauloc062@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Elan Shanker", + "email": "elan.shanker@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jon Spencer", + "email": "jon@jonspencer.ca", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jason Diamond", + "email": "jason@diamond.name", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Maximilian Antoni", + "email": "mail@maxantoni.de", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Thom Blake", + "email": "tblake@brightroll.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jess Martin", + "email": "jessmartin@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Spain Train", + "email": "michael.spainhower@opower.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alex Rodionov", + "email": "p0deje@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Matt Colyer", + "email": "matt@colyer.name", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "bitspill", + "email": "bitspill+github@bitspill.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Gabriel Falkenberg", + "email": "gabriel.falkenberg@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alexej Yaroshevich", + "email": "alex@qfox.ru", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Quim Calpe", + "email": "quim@kalpe.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Steve Mason", + "email": "stevem@brandwatch.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Wil Moore III", + "email": "wil.moore@wilmoore.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Sergey Belov", + "email": "peimei@ya.ru", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tom Huang", + "email": "hzlhu.dargon@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "CamilleM", + "email": "camille.moulin@alterway.fr", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "S\u00e9bastien Santoro", + "email": "dereckson@espace-win.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Evan Lucas", + "email": "evan@btc.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Quinn Slack", + "email": "qslack@qslack.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alex Kocharin", + "email": "alex@kocharin.ru", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Daniel Santiago", + "email": "daniel.santiago@highlevelwebs.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Denis Gladkikh", + "email": "outcoldman@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrew Horton", + "email": "andrew.j.horton@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Zeke Sikelianos", + "email": "zeke@sikelianos.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Dylan Greene", + "email": "dylang@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Franck Cuny", + "email": "franck.cuny@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Yeonghoon Park", + "email": "sola92@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Rafael de Oleza", + "email": "rafa@spotify.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mikola Lysenko", + "email": "mikolalysenko@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Yazhong Liu", + "email": "yorkiefixer@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Neil Gentleman", + "email": "ngentleman@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kris Kowal", + "email": "kris.kowal@cixar.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alex Gorbatchev", + "email": "alex.gorbatchev@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Shawn Wildermuth", + "email": "shawn@wildermuth.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Wesley de Souza", + "email": "wesleywex@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "yoyoyogi", + "email": "yogesh.k@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "J. Tangelder", + "email": "j.tangelder@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jean Lauliac", + "email": "jean@lauliac.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrey Kislyuk", + "email": "kislyuk@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Thorsten Lorenz", + "email": "thlorenz@gmx.de", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Julian Gruber", + "email": "julian@juliangruber.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Benjamin Coe", + "email": "bencoe@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alex Ford", + "email": "Alex.Ford@CodeTunnel.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Matt Hickford", + "email": "matt.hickford@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Sean McGivern", + "email": "sean.mcgivern@rightscale.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "C J Silverio", + "email": "ceejceej@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Robin Tweedie", + "email": "robin@songkick.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Miroslav Bajto\u0161", + "email": "miroslav@strongloop.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "David Glasser", + "email": "glasser@davidglasser.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Gianluca Casati", + "email": "casati_gianluca@yahoo.it", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Forrest L Norvell", + "email": "ogd@aoaioxxysz.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Karsten Tinnefeld", + "email": "k.tinnefeld@googlemail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Bryan Burgers", + "email": "bryan@burgers.io", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "David Beitey", + "email": "david@davidjb.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Evan You", + "email": "yyou@google.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Zach Pomerantz", + "email": "zmp@umich.edu", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Chris Williams", + "email": "cwilliams88@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "sudodoki", + "email": "smd.deluzion@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mick Thompson", + "email": "dthompson@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Felix Rabe", + "email": "felix@rabe.io", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Michael Hayes", + "email": "michael@hayes.io", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Chris Dickinson", + "email": "christopher.s.dickinson@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Bradley Meck", + "email": "bradley.meck@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "GeJ", + "email": "geraud@gcu.info", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrew Terris", + "email": "atterris@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Michael Nisi", + "email": "michael.nisi@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "fengmk2", + "email": "fengmk2@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Adam Meadows", + "email": "adam.meadows@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Chulki Lee", + "email": "chulki.lee@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "\u4e0d\u56db", + "email": "busi.hyy@taobao.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "dead_horse", + "email": "dead_horse@qq.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kenan Yildirim", + "email": "kenan@kenany.me", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Laurie Voss", + "email": "git@seldo.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Rebecca Turner", + "email": "me@re-becca.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Hunter Loftis", + "email": "hunter@hunterloftis.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Peter Richardson", + "email": "github@zoomy.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jussi Kalliokoski", + "email": "jussi.kalliokoski@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Filip Weiss", + "email": "me@fiws.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Timo Wei\u00df", + "email": "timoweiss@Timo-MBP.local", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Christopher Hiller", + "email": "chiller@badwing.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "J\u00e9r\u00e9my Lal", + "email": "kapouer@melix.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Anders Janmyr", + "email": "anders@janmyr.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Chris Meyers", + "email": "chris.meyers.fsu@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ludwig Magnusson", + "email": "ludwig@mediatool.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Wout Mertens", + "email": "Wout.Mertens@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nick Santos", + "email": "nick@medium.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Terin Stock", + "email": "terinjokes@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Faiq Raza", + "email": "faiqrazarizvi@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Thomas Torp", + "email": "thomas@erupt.no", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Sam Mikes", + "email": "smikes@cubane.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mat Tyndall", + "email": "mat.tyndall@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tauren Mills", + "email": "tauren@sportzing.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ron Martinez", + "email": "ramartin.net@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kazuhito Hokamura", + "email": "k.hokamura@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tristan Davies", + "email": "github@tristan.io", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "David Volm", + "email": "david@volminator.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Lin Clark", + "email": "lin.w.clark@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ben Page", + "email": "bpage@dewalch.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jeff Jo", + "email": "jeffjo@squareup.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "martinvd", + "email": "martinvdpub@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mark J. Titorenko", + "email": "nospam-github.com@titorenko.net", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Oddur Sigurdsson", + "email": "oddurs@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Eric Mill", + "email": "eric@konklone.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Gabriel Barros", + "email": "descartavel1@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "KevinSheedy", + "email": "kevinsheedy@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Aleksey Smolenchuk", + "email": "aleksey@uber.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ed Morley", + "email": "emorley@mozilla.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Blaine Bublitz", + "email": "blaine@iceddev.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrey Fedorov", + "email": "anfedorov@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Daijiro Wachi", + "email": "daijiro.wachi@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Luc Thevenard", + "email": "lucthevenard@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Aria Stewart", + "email": "aredridel@nbtsc.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Charlie Rudolph", + "email": "charles.w.rudolph@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Vladimir Rutsky", + "email": "rutsky@users.noreply.github.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Isaac Murchie", + "email": "isaac@saucelabs.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Marcin Wosinek", + "email": "marcin.wosinek@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "David Marr", + "email": "davemarr@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Bryan English", + "email": "bryan@bryanenglish.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Anthony Zotti", + "email": "amZotti@users.noreply.github.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Karl Horky", + "email": "karl.horky@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Gu\u00f0laugur Stef\u00e1n Egilsson", + "email": "gulli@kolibri.is", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Helge Skogly Holm", + "email": "helge.holm@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Peter A. Shevtsov", + "email": "petr.shevtsov@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Alain Kalker", + "email": "a.c.kalker@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Bryant Williams", + "email": "b.n.williams@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jonas Weber", + "email": "github@jonasw.de", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Tim Whidden", + "email": "twhid@twhid.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andreas", + "email": "functino@users.noreply.github.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Karolis Narkevicius", + "email": "karolis.n@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Adrian Lynch", + "email": "adi_ady_ade@hotmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Richard Littauer", + "email": "richard.littauer@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Oli Evans", + "email": "oli@zilla.org.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Matt Brennan", + "email": "mattyb1000@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jeff Barczewski", + "email": "jeff.barczewski@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Danny Fritz", + "email": "dannyfritz@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Takaya Kobayashi", + "email": "jigsaw@live.jp", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ra'Shaun Stovall", + "email": "rashaunstovall@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Julien Meddah", + "email": "julien.meddah@deveryware.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Michiel Sikma", + "email": "michiel@wedemandhtml.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jakob Krigovsky", + "email": "jakob.krigovsky@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Charmander", + "email": "~@charmander.me", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Erik Wienhold", + "email": "git@ewie.name", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "James Butler", + "email": "james.butler@sandfox.co.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kevin Kragenbrink", + "email": "kevin@gaikai.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Arnaud Rinquin", + "email": "rinquin.arnaud@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Mike MacCana", + "email": "mike.maccana@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Antti Mattila", + "email": "anttti@fastmail.fm", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "laiso", + "email": "laiso@lai.so", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Matt Zorn", + "email": "zornme@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kyle Mitchell", + "email": "kyle@kemitchell.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Michael Klein", + "email": "mischkl@users.noreply.github.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Simen Bekkhus", + "email": "sbekkhus91@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Victor", + "email": "victor.shih@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "thefourtheye", + "email": "thechargingvolcano@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Clay Carpenter", + "email": "claycarpenter@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "bangbang93", + "email": "bangbang93@163.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nick Malaguti", + "email": "nmalaguti@palantir.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Cedric Nelson", + "email": "cedric.nelson@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kat March\u00e1n", + "email": "kzm@sykosomatic.org", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrew", + "email": "talktome@aboutandrew.co.uk", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Eduardo Pinho", + "email": "enet4mikeenet@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Rachel Hutchison", + "email": "rhutchix@intel.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Ryan Temple", + "email": "ryantemple145@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Eugene Sharygin", + "email": "eush77@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Nick Heiner", + "email": "nick.heiner@opower.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "James Talmage", + "email": "james@talmage.io", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "jane arc", + "email": "jane@uber.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Joseph Dykstra", + "email": "josephdykstra@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Joshua Egan", + "email": "josh-egan@users.noreply.github.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Thomas Cort", + "email": "thomasc@ssimicro.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Thaddee Tyl", + "email": "thaddee.tyl@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Steve Klabnik", + "email": "steve@steveklabnik.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Andrew Murray", + "email": "radarhere@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Stephan B\u00f6nnemann", + "email": "stephan@excellenteasy.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Kyle M. Tarplee", + "email": "kyle.tarplee@numerica.us", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Derek Peterson", + "email": "derekpetey@gmail.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "Greg Whiteley", + "email": "greg.whiteley@atomos.com", + "url": null + }, + { + "type": "person", + "role": "contributor", + "name": "murgatroid99", + "email": "mlumish@google.com", + "url": null + }, + { + "type": "person", + "role": "maintainer", + "name": "isaacs", + "email": "isaacs@npmjs.com", + "url": null + }, + { + "type": "person", + "role": "maintainer", + "name": "othiym23", + "email": "ogd@aoaioxxysz.net", + "url": null + }, + { + "type": "person", + "role": "maintainer", + "name": "iarna", + "email": "me@re-becca.org", + "url": null + }, + { + "type": "person", + "role": "maintainer", + "name": "zkat", + "email": "kat@sykosomatic.org", + "url": null + } + ], + "keywords": [ + "package manager", + "modules", + "install", + "package.json" + ], + "homepage_url": "https://docs.npmjs.com/", + "download_url": "https://registry.npmjs.org/npm/-/npm-2.13.5.tgz", + "size": null, + "sha1": "a124386bce4a90506f28ad4b1d1a804a17baaf32", + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": "http://github.com/npm/npm/issues", + "code_view_url": null, + "vcs_url": "git+https://github.com/npm/npm.git@fc7bbf03e39cc48a8924b90696d28345a6a90f3c", + "copyright": null, + "license_expression": "artistic-2.0", + "declared_license": [ + "Artistic-2.0" + ], + "notice_text": null, + "root_path": "scan", + "dependencies": [ + { + "purl": "pkg:npm/abbrev", + "requirement": "~1.0.7", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/ansi", + "requirement": "~0.3.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/ansicolors", + "requirement": "~0.3.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/ansistyles", + "requirement": "~0.1.3", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/archy", + "requirement": "~1.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/async-some", + "requirement": "~1.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/block-stream", + "requirement": "0.0.8", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/char-spinner", + "requirement": "~1.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/chmodr", + "requirement": "~1.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/chownr", + "requirement": "0.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/cmd-shim", + "requirement": "~2.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/columnify", + "requirement": "~1.5.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/config-chain", + "requirement": "~1.1.9", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/dezalgo", + "requirement": "~1.0.3", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/editor", + "requirement": "~1.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/fs-vacuum", + "requirement": "~1.2.6", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/fs-write-stream-atomic", + "requirement": "~1.0.3", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/fstream", + "requirement": "~1.0.7", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/fstream-npm", + "requirement": "~1.0.4", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/github-url-from-git", + "requirement": "~1.4.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/github-url-from-username-repo", + "requirement": "~1.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/glob", + "requirement": "~5.0.14", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/graceful-fs", + "requirement": "~4.1.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/hosted-git-info", + "requirement": "~2.1.4", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/inflight", + "requirement": "~1.0.4", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/inherits", + "requirement": "~2.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/ini", + "requirement": "~1.3.4", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/init-package-json", + "requirement": "~1.7.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/lockfile", + "requirement": "~1.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/lru-cache", + "requirement": "~2.6.5", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/minimatch", + "requirement": "~2.0.10", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/mkdirp", + "requirement": "~0.5.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/node-gyp", + "requirement": "~2.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/nopt", + "requirement": "~3.0.3", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/normalize-git-url", + "requirement": "~3.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/normalize-package-data", + "requirement": "~2.3.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-cache-filename", + "requirement": "~1.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-install-checks", + "requirement": "~1.0.6", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-package-arg", + "requirement": "~4.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-registry-client", + "requirement": "~6.5.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-user-validate", + "requirement": "~0.1.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/npmlog", + "requirement": "~1.2.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/once", + "requirement": "~1.3.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/opener", + "requirement": "~1.4.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/osenv", + "requirement": "~0.1.3", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/path-is-inside", + "requirement": "~1.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/read", + "requirement": "~1.0.6", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/read-installed", + "requirement": "~4.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/read-package-json", + "requirement": "~2.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/readable-stream", + "requirement": "~1.1.13", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/realize-package-specifier", + "requirement": "~3.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/request", + "requirement": "~2.60.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/retry", + "requirement": "~0.6.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/rimraf", + "requirement": "~2.4.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/semver", + "requirement": "~5.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/sha", + "requirement": "~1.3.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/slide", + "requirement": "~1.1.6", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/sorted-object", + "requirement": "~1.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/spdx", + "requirement": "~0.4.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/tar", + "requirement": "~2.1.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/text-table", + "requirement": "~0.2.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/uid-number", + "requirement": "0.0.6", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/umask", + "requirement": "~1.1.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/validate-npm-package-name", + "requirement": "~2.2.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/which", + "requirement": "~1.1.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/wrappy", + "requirement": "~1.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/write-file-atomic", + "requirement": "~1.1.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/validate-npm-package-license", + "requirement": "*", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/deep-equal", + "requirement": "~1.0.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/marked", + "requirement": "~0.3.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/marked-man", + "requirement": "~0.1.5", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/nock", + "requirement": "~2.10.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-registry-couchapp", + "requirement": "~2.6.7", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/npm-registry-mock", + "requirement": "~1.0.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/require-inject", + "requirement": "~1.2.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/sprintf-js", + "requirement": "~1.0.2", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/tap", + "requirement": "~1.3.1", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + } + ], + "contains_source_code": null, + "source_packages": [], + "extra_data": {}, + "purl": "pkg:npm/npm@2.13.5", + "repository_homepage_url": "https://www.npmjs.com/package/npm", + "repository_download_url": "https://registry.npmjs.org/npm/-/npm-2.13.5.tgz", + "api_data_url": "https://registry.npmjs.org/npm/2.13.5", + "files": [ + { + "path": "scan/package.json", + "type": "file" + } + ] + } + ] + }, + "summary_by_facet": [ + { + "facet": "core", + "summary": { + "license_expressions": [ + { + "value": "zlib", + "count": 9 + }, + { + "value": "artistic-2.0", + "count": 1 + }, + { + "value": "cc0-1.0", + "count": 1 + }, + { + "value": "mit-old-style", + "count": 1 + } + ], + "copyrights": [ + { + "value": "Copyright (c) Jean-loup Gailly", + "count": 4 + }, + { + "value": "Copyright (c) Jean-loup Gailly and Mark Adler", + "count": 3 + }, + { + "value": "Copyright (c) Mark Adler", + "count": 2 + }, + { + "value": "Copyright (c) Christian Michelsen Research AS Advanced Computing", + "count": 1 + } + ], + "holders": [ + { + "value": "Jean-loup Gailly", + "count": 4 + }, + { + "value": "Jean-loup Gailly and Mark Adler", + "count": 3 + }, + { + "value": "Mark Adler", + "count": 2 + }, + { + "value": "Christian Michelsen Research AS Advanced Computing", + "count": 1 + } + ], + "authors": [ + { + "value": "name' Isaac Z.", + "count": 1 + } + ], + "programming_language": [ + { + "value": "C", + "count": 10 + } + ], + "packages": [] + } + }, + { + "facet": "dev", + "summary": { + "license_expressions": [ + { + "value": "lgpl-2.1-plus", + "count": 3 + }, + { + "value": "boost-1.0", + "count": 1 + }, + { + "value": "cc-by-2.5", + "count": 1 + }, + { + "value": "gpl-2.0-plus WITH ada-linking-exception", + "count": 1 + } + ], + "copyrights": [ + { + "value": "Copyright (c) Brian Goetz and Tim Peierls", + "count": 1 + }, + { + "value": "Copyright (c) Dmitriy Anisimkov", + "count": 1 + }, + { + "value": "Copyright (c) by Henrik Ravn", + "count": 1 + }, + { + "value": "Copyright Henrik Ravn", + "count": 1 + }, + { + "value": "Copyright JBoss Inc., and individual contributors", + "count": 1 + }, + { + "value": "Copyright Red Hat Middleware LLC, and individual contributors", + "count": 1 + }, + { + "value": "Copyright Red Hat, Inc. and individual contributors", + "count": 1 + } + ], + "holders": [ + { + "value": "Henrik Ravn", + "count": 2 + }, + { + "value": "Brian Goetz and Tim Peierls", + "count": 1 + }, + { + "value": "Dmitriy Anisimkov", + "count": 1 + }, + { + "value": "JBoss Inc., and individual contributors", + "count": 1 + }, + { + "value": "Red Hat Middleware LLC, and individual contributors", + "count": 1 + }, + { + "value": "Red Hat, Inc. and individual contributors", + "count": 1 + } + ], + "authors": [ + { + "value": "Bela Ban", + "count": 4 + } + ], + "programming_language": [ + { + "value": "Java", + "count": 7 + }, + { + "value": "C#", + "count": 2 + } + ], + "packages": [] + } + }, + { + "facet": "tests", + "summary": { + "license_expressions": [ + { + "value": "zlib", + "count": 2 + } + ], + "copyrights": [ + { + "value": "Copyright (c) Mark Adler", + "count": 2 + } + ], + "holders": [ + { + "value": "Mark Adler", + "count": 2 + } + ], + "authors": [], + "programming_language": [ + { + "value": "C", + "count": 2 + } + ], + "packages": [] + } + }, + { + "facet": "docs", + "summary": { + "license_expressions": [], + "copyrights": [], + "holders": [], + "authors": [], + "programming_language": [], "packages": [] } }, diff --git a/tests/summarycode/data/full_summary/summary_details.expected.json b/tests/summarycode/data/full_summary/summary_details.expected.json index 38cb516cb55..c96debd5a0a 100644 --- a/tests/summarycode/data/full_summary/summary_details.expected.json +++ b/tests/summarycode/data/full_summary/summary_details.expected.json @@ -27,10 +27,6 @@ "value": "zlib", "count": 12 }, - { - "value": null, - "count": 5 - }, { "value": "lgpl-2.1-plus", "count": 3 @@ -191,10 +187,6 @@ "value": "Java", "count": 7 }, - { - "value": null, - "count": 4 - }, { "value": "C#", "count": 2 @@ -203,8 +195,7 @@ "value": "GAS", "count": 1 } - ], - "packages": [] + ] }, "files": [ { @@ -239,10 +230,6 @@ "value": "zlib", "count": 12 }, - { - "value": null, - "count": 5 - }, { "value": "lgpl-2.1-plus", "count": 3 @@ -403,10 +390,6 @@ "value": "Java", "count": 7 }, - { - "value": null, - "count": 4 - }, { "value": "C#", "count": 2 @@ -415,8 +398,7 @@ "value": "GAS", "count": 1 } - ], - "packages": [] + ] }, "files_count": 26, "dirs_count": 9, @@ -451,10 +433,6 @@ "packages": [], "summary": { "license_expressions": [ - { - "value": null, - "count": 3 - }, { "value": "lgpl-2.1-plus", "count": 3 @@ -523,8 +501,7 @@ "value": "Java", "count": 7 } - ], - "packages": [] + ] }, "files_count": 7, "dirs_count": 1, @@ -559,10 +536,6 @@ "packages": [], "summary": { "license_expressions": [ - { - "value": null, - "count": 3 - }, { "value": "lgpl-2.1-plus", "count": 3 @@ -631,8 +604,7 @@ "value": "Java", "count": 7 } - ], - "packages": [] + ] }, "files_count": 7, "dirs_count": 0, @@ -748,8 +720,7 @@ "value": "Java", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -871,8 +842,7 @@ "value": "Java", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -988,8 +958,7 @@ "value": "Java", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -1058,8 +1027,7 @@ "value": "Java", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -1128,8 +1096,7 @@ "value": "Java", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -1245,8 +1212,7 @@ "value": "Java", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -1315,8 +1281,7 @@ "value": "Java", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -1379,8 +1344,7 @@ "value": null, "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -1459,8 +1423,7 @@ "value": "C", "count": 3 } - ], - "packages": [] + ] }, "files_count": 3, "dirs_count": 0, @@ -1578,8 +1541,7 @@ "value": "C", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -1695,8 +1657,7 @@ "value": "C", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -1814,8 +1775,7 @@ "value": "C", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -1919,8 +1879,7 @@ "value": null, "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -4875,12 +4834,6 @@ "value": null, "count": 1 } - ], - "packages": [ - { - "value": "pkg:npm/npm@2.13.5", - "count": 1 - } ] }, "files_count": 0, @@ -4920,10 +4873,6 @@ "value": "zlib", "count": 9 }, - { - "value": null, - "count": 1 - }, { "value": "boost-1.0", "count": 1 @@ -5020,16 +4969,11 @@ "value": "C#", "count": 2 }, - { - "value": null, - "count": 1 - }, { "value": "GAS", "count": 1 } - ], - "packages": [] + ] }, "files_count": 13, "dirs_count": 5, @@ -5087,13 +5031,7 @@ "count": 1 } ], - "programming_language": [ - { - "value": null, - "count": 1 - } - ], - "packages": [] + "programming_language": [] }, "files_count": 1, "dirs_count": 0, @@ -5249,8 +5187,7 @@ "value": null, "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -5368,8 +5305,7 @@ "value": "C", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -5487,8 +5423,7 @@ "value": "C", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -5606,8 +5541,7 @@ "value": "C", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -5642,10 +5576,6 @@ "packages": [], "summary": { "license_expressions": [ - { - "value": null, - "count": 1 - }, { "value": "boost-1.0", "count": 1 @@ -5678,8 +5608,7 @@ "value": "C#", "count": 2 } - ], - "packages": [] + ] }, "files_count": 2, "dirs_count": 0, @@ -5754,8 +5683,7 @@ "value": "C#", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -5873,8 +5801,7 @@ "value": "C#", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -5937,8 +5864,7 @@ "value": "GAS", "count": 1 } - ], - "packages": [] + ] }, "files_count": 1, "dirs_count": 0, @@ -6060,8 +5986,7 @@ "value": "GAS", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -6124,8 +6049,7 @@ "value": "C", "count": 2 } - ], - "packages": [] + ] }, "files_count": 2, "dirs_count": 0, @@ -6243,8 +6167,7 @@ "value": "C", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -6362,8 +6285,7 @@ "value": "C", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -6426,8 +6348,7 @@ "value": "C", "count": 1 } - ], - "packages": [] + ] }, "files_count": 1, "dirs_count": 0, @@ -6543,8 +6464,7 @@ "value": "C", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -6660,8 +6580,7 @@ "value": "C", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -6779,8 +6698,7 @@ "value": "C", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, @@ -6898,8 +6816,7 @@ "value": "C", "count": 1 } - ], - "packages": [] + ] }, "files_count": 0, "dirs_count": 0, diff --git a/tests/summarycode/data/full_summary/summary_key_files-details.expected.json-lines b/tests/summarycode/data/full_summary/summary_key_files-details.expected.json-lines index bb9c7852863..fefb41bcff2 100644 --- a/tests/summarycode/data/full_summary/summary_key_files-details.expected.json-lines +++ b/tests/summarycode/data/full_summary/summary_key_files-details.expected.json-lines @@ -14,6 +14,7 @@ "--summary-key-files": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { @@ -30,10 +31,6 @@ "value": "zlib", "count": 12 }, - { - "value": null, - "count": 5 - }, { "value": "lgpl-2.1-plus", "count": 3 @@ -194,10 +191,6 @@ "value": "Java", "count": 7 }, - { - "value": null, - "count": 4 - }, { "value": "C#", "count": 2 @@ -212,10 +205,6 @@ { "summary_of_key_files": { "license_expressions": [ - { - "value": null, - "count": 1 - }, { "value": "artistic-2.0", "count": 1 @@ -225,34 +214,15 @@ "count": 1 } ], - "copyrights": [ - { - "value": null, - "count": 3 - } - ], - "holders": [ - { - "value": null, - "count": 3 - } - ], + "copyrights": [], + "holders": [], "authors": [ - { - "value": null, - "count": 2 - }, { "value": "name' Isaac Z.", "count": 1 } ], - "programming_language": [ - { - "value": null, - "count": 3 - } - ] + "programming_language": [] } }, { diff --git a/tests/summarycode/data/full_summary/summary_key_files.expected.json b/tests/summarycode/data/full_summary/summary_key_files.expected.json index d4f0d90a9cf..8a2ee3f2cb9 100644 --- a/tests/summarycode/data/full_summary/summary_key_files.expected.json +++ b/tests/summarycode/data/full_summary/summary_key_files.expected.json @@ -13,6 +13,7 @@ "--summary-key-files": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { @@ -27,10 +28,6 @@ "value": "zlib", "count": 12 }, - { - "value": null, - "count": 5 - }, { "value": "lgpl-2.1-plus", "count": 3 @@ -191,10 +188,6 @@ "value": "Java", "count": 7 }, - { - "value": null, - "count": 4 - }, { "value": "C#", "count": 2 @@ -207,10 +200,6 @@ }, "summary_of_key_files": { "license_expressions": [ - { - "value": null, - "count": 1 - }, { "value": "artistic-2.0", "count": 1 @@ -220,34 +209,15 @@ "count": 1 } ], - "copyrights": [ - { - "value": null, - "count": 3 - } - ], - "holders": [ - { - "value": null, - "count": 3 - } - ], + "copyrights": [], + "holders": [], "authors": [ - { - "value": null, - "count": 2 - }, { "value": "name' Isaac Z.", "count": 1 } ], - "programming_language": [ - { - "value": null, - "count": 3 - } - ] + "programming_language": [] }, "files": [ { diff --git a/tests/summarycode/data/generated/cli.expected.json b/tests/summarycode/data/generated/cli.expected.json index 176fbec972f..306c64d08bb 100644 --- a/tests/summarycode/data/generated/cli.expected.json +++ b/tests/summarycode/data/generated/cli.expected.json @@ -8,6 +8,7 @@ "--json-pp": "" }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/packages/expected.json b/tests/summarycode/data/packages/expected.json index 030242570ab..8481c0b5e36 100644 --- a/tests/summarycode/data/packages/expected.json +++ b/tests/summarycode/data/packages/expected.json @@ -19,7 +19,660 @@ } ], "summary": { - "packages": [] + "packages": [ + { + "type": "maven", + "namespace": "aopalliance", + "name": "aopalliance", + "version": "1.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "Java", + "description": "AOP alliance\nAOP Alliance", + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": "http://aopalliance.sourceforge.net", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "license_expression": "public-domain", + "declared_license": [ + { + "name": "Public Domain", + "url": null, + "comments": null, + "distribution": null + } + ], + "notice_text": null, + "root_path": "scan/aopalliance/aopalliance/1.0", + "dependencies": [], + "contains_source_code": null, + "source_packages": [ + "pkg:maven/aopalliance/aopalliance@1.0?classifier=sources" + ], + "extra_data": {}, + "purl": "pkg:maven/aopalliance/aopalliance@1.0", + "repository_homepage_url": "https://repo1.maven.org/maven2/aopalliance/aopalliance/1.0/", + "repository_download_url": "https://repo1.maven.org/maven2/aopalliance/aopalliance/1.0/aopalliance-1.0.jar", + "api_data_url": "https://repo1.maven.org/maven2/aopalliance/aopalliance/1.0/aopalliance-1.0.pom", + "files": [ + { + "path": "scan/aopalliance/aopalliance/1.0/aopalliance-1.0.pom", + "type": "file" + } + ] + }, + { + "type": "freebsd", + "namespace": null, + "name": "dmidecode", + "version": "2.12", + "qualifiers": { + "arch": "freebsd:10:x86:64", + "origin": "sysutils/dmidecode" + }, + "subpath": null, + "primary_language": null, + "description": "Dmidecode is a tool or dumping a computer's DMI (some say SMBIOS) table\ncontents in a human-readable format. The output contains a description of the\nsystem's hardware components, as well as other useful pieces of information\nsuch as serial numbers and BIOS revision.\n\nWWW: http://www.nongnu.org/dmidecode/", + "release_date": null, + "parties": [ + { + "type": "person", + "role": "maintainer", + "name": null, + "email": "anders@FreeBSD.org", + "url": null + } + ], + "keywords": [ + "sysutils" + ], + "homepage_url": "http://www.nongnu.org/dmidecode/", + "download_url": "https://pkg.freebsd.org/freebsd:10:x86:64/latest/All/dmidecode-2.12.txz", + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": "https://svnweb.freebsd.org/ports/head/sysutils/dmidecode", + "vcs_url": null, + "copyright": null, + "license_expression": "gpl-2.0", + "declared_license": { + "licenses": [ + "GPLv2" + ], + "licenselogic": "single" + }, + "notice_text": null, + "root_path": "scan/freebsd/basic", + "dependencies": [], + "contains_source_code": null, + "source_packages": [], + "extra_data": {}, + "purl": "pkg:freebsd/dmidecode@2.12?arch=freebsd:10:x86:64&origin=sysutils/dmidecode", + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "files": [ + { + "path": "scan/freebsd/basic/+COMPACT_MANIFEST", + "type": "file" + } + ] + }, + { + "type": "npm", + "namespace": "@ionic", + "name": "app-scripts", + "version": "3.0.1-201710301651", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": "Scripts for Ionic Projects", + "release_date": null, + "parties": [ + { + "type": "person", + "role": "author", + "name": "Ionic Team", + "email": "hi@ionic.io", + "url": "https://ionic.io" + } + ], + "keywords": [], + "homepage_url": "https://ionicframework.com/", + "download_url": "https://registry.npmjs.org/@ionic/app-scripts/-/app-scripts-3.0.1-201710301651.tgz", + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": "https://github.com/ionic-team/ionic-app-scripts/issues", + "code_view_url": null, + "vcs_url": "git+https://github.com/ionic-team/ionic-app-scripts.git", + "copyright": null, + "license_expression": "mit", + "declared_license": [ + "MIT" + ], + "notice_text": null, + "root_path": "scan/scoped1", + "dependencies": [ + { + "purl": "pkg:npm/%40angular-devkit/build-optimizer", + "requirement": "^0.0.31", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/autoprefixer", + "requirement": "^7.1.6", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/chalk", + "requirement": "^2.3.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/chokidar", + "requirement": "^1.7.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/clean-css", + "requirement": "^4.1.9", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/cross-spawn", + "requirement": "^5.1.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/express", + "requirement": "^4.16.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/fs-extra", + "requirement": "^4.0.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/glob", + "requirement": "^7.1.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/json-loader", + "requirement": "^0.5.7", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/node-sass", + "requirement": "^4.5.3", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/os-name", + "requirement": "^2.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/postcss", + "requirement": "^6.0.13", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/proxy-middleware", + "requirement": "^0.15.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/reflect-metadata", + "requirement": "^0.1.10", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/rollup", + "requirement": "0.50.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/rollup-plugin-commonjs", + "requirement": "8.2.6", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/rollup-plugin-node-resolve", + "requirement": "3.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/source-map", + "requirement": "^0.6.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/tiny-lr", + "requirement": "^1.0.5", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/tslint", + "requirement": "^5.8.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/tslint-eslint-rules", + "requirement": "^4.1.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/uglify-es", + "requirement": "^3.1.6", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/webpack", + "requirement": "^3.8.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/ws", + "requirement": "^3.2.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/xml2js", + "requirement": "^0.4.19", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40angular/animations", + "requirement": "4.4.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40angular/common", + "requirement": "4.4.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40angular/compiler", + "requirement": "4.4.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40angular/compiler-cli", + "requirement": "4.4.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40angular/core", + "requirement": "4.4.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40angular/forms", + "requirement": "4.4.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40angular/http", + "requirement": "4.4.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40angular/platform-browser", + "requirement": "4.4.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40angular/platform-browser-dynamic", + "requirement": "4.4.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40angular/platform-server", + "requirement": "4.4.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40angular/tsc-wrapped", + "requirement": "4.4.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40types/chokidar", + "requirement": "^1.7.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40types/clean-css", + "requirement": "^3.4.29", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40types/express", + "requirement": "^4.0.39", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40types/fs-extra", + "requirement": "^4.0.3", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40types/glob", + "requirement": "^5.0.30", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40types/jest", + "requirement": "^21.1.5", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40types/mock-fs", + "requirement": "^3.6.30", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40types/node", + "requirement": "^8.0.47", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40types/node-sass", + "requirement": "^3.10.32", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40types/rewire", + "requirement": "^2.5.27", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40types/webpack", + "requirement": "^3.0.14", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/%40types/ws", + "requirement": "^3.2.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/conventional-changelog-cli", + "requirement": "^1.3.1", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/github", + "requirement": "0.2.4", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/ionic-cz-conventional-changelog", + "requirement": "^1.0.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/jest", + "requirement": "^21.2.1", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/mock-fs", + "requirement": "^4.4.2", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/rewire", + "requirement": "^2.5.2", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/rimraf", + "requirement": "^2.6.1", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/rxjs", + "requirement": "^5.5.2", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/sw-toolbox", + "requirement": "^3.6.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/tslint-ionic-rules", + "requirement": "^0.0.11", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/typescript", + "requirement": "~2.3.4", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + }, + { + "purl": "pkg:npm/zone.js", + "requirement": "^0.8.17", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_resolved": false + } + ], + "contains_source_code": null, + "source_packages": [], + "extra_data": {}, + "purl": "pkg:npm/%40ionic/app-scripts@3.0.1-201710301651", + "repository_homepage_url": "https://www.npmjs.com/package/@ionic/app-scripts", + "repository_download_url": "https://registry.npmjs.org/@ionic/app-scripts/-/app-scripts-3.0.1-201710301651.tgz", + "api_data_url": "https://registry.npmjs.org/@ionic%2fapp-scripts", + "files": [ + { + "path": "scan/scoped1/package.json", + "type": "file" + } + ] + } + ] }, "files": [ { diff --git a/tests/summarycode/data/plugin_consolidate/component-package-build-expected.json b/tests/summarycode/data/plugin_consolidate/component-package-build-expected.json index 63c4186cf54..22f1edab78c 100644 --- a/tests/summarycode/data/plugin_consolidate/component-package-build-expected.json +++ b/tests/summarycode/data/plugin_consolidate/component-package-build-expected.json @@ -12,6 +12,7 @@ "--package": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/plugin_consolidate/component-package-expected.json b/tests/summarycode/data/plugin_consolidate/component-package-expected.json index d85013a9ab3..f1671d50cb5 100644 --- a/tests/summarycode/data/plugin_consolidate/component-package-expected.json +++ b/tests/summarycode/data/plugin_consolidate/component-package-expected.json @@ -4,7 +4,6 @@ "tool_name": "scancode-toolkit", "options": { "input": "", - "--consolidate": true, "--copyright": true, "--info": true, "--json": "", @@ -12,6 +11,41 @@ "--package": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", + "message": null, + "errors": [], + "extra_data": { + "spdx_license_list_version": "3.14", + "files_count": 7 + } + }, + { + "tool_name": "scancode-toolkit", + "options": { + "input": "", + "--consolidate": true, + "--from-json": true, + "--json": "" + }, + "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", + "message": null, + "errors": [], + "extra_data": { + "spdx_license_list_version": "3.14", + "files_count": 7 + } + }, + { + "tool_name": "scancode-toolkit", + "options": { + "input": "", + "--consolidate": true, + "--from-json": true, + "--json": "" + }, + "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/plugin_consolidate/e2fsprogs-expected.json b/tests/summarycode/data/plugin_consolidate/e2fsprogs-expected.json index cd508f46843..fe8814cfc51 100644 --- a/tests/summarycode/data/plugin_consolidate/e2fsprogs-expected.json +++ b/tests/summarycode/data/plugin_consolidate/e2fsprogs-expected.json @@ -17,6 +17,7 @@ "--url": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": null, "message": null, "errors": [], "extra_data": { @@ -32,9 +33,11 @@ "--json": "" }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { + "spdx_license_list_version": "3.14", "files_count": 2183 } } diff --git a/tests/summarycode/data/plugin_consolidate/license-holder-rollup-expected.json b/tests/summarycode/data/plugin_consolidate/license-holder-rollup-expected.json index d8a62c3af85..9f4bd6aeb56 100644 --- a/tests/summarycode/data/plugin_consolidate/license-holder-rollup-expected.json +++ b/tests/summarycode/data/plugin_consolidate/license-holder-rollup-expected.json @@ -12,6 +12,7 @@ "--package": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/plugin_consolidate/multiple-same-holder-and-license-expected.json b/tests/summarycode/data/plugin_consolidate/multiple-same-holder-and-license-expected.json index 82b0eb67444..2f860cdbf9b 100644 --- a/tests/summarycode/data/plugin_consolidate/multiple-same-holder-and-license-expected.json +++ b/tests/summarycode/data/plugin_consolidate/multiple-same-holder-and-license-expected.json @@ -12,9 +12,11 @@ "--package": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { + "spdx_license_list_version": "3.14", "files_count": 2 } } diff --git a/tests/summarycode/data/plugin_consolidate/package-files-not-counted-in-license-holders-expected.json b/tests/summarycode/data/plugin_consolidate/package-files-not-counted-in-license-holders-expected.json index ecd07d18f28..fcb1703fc99 100644 --- a/tests/summarycode/data/plugin_consolidate/package-files-not-counted-in-license-holders-expected.json +++ b/tests/summarycode/data/plugin_consolidate/package-files-not-counted-in-license-holders-expected.json @@ -12,6 +12,7 @@ "--package": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/plugin_consolidate/package-fileset-expected.json b/tests/summarycode/data/plugin_consolidate/package-fileset-expected.json index 4142198cf76..d8df74f0ced 100644 --- a/tests/summarycode/data/plugin_consolidate/package-fileset-expected.json +++ b/tests/summarycode/data/plugin_consolidate/package-fileset-expected.json @@ -12,6 +12,7 @@ "--package": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/plugin_consolidate/package-manifest-expected.json b/tests/summarycode/data/plugin_consolidate/package-manifest-expected.json index 285a16a5db2..3bd9b54bf2a 100644 --- a/tests/summarycode/data/plugin_consolidate/package-manifest-expected.json +++ b/tests/summarycode/data/plugin_consolidate/package-manifest-expected.json @@ -12,6 +12,7 @@ "--package": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/plugin_consolidate/report-subdirectory-with-minority-origin-expected.json b/tests/summarycode/data/plugin_consolidate/report-subdirectory-with-minority-origin-expected.json index 77a29331245..c2bfddba196 100644 --- a/tests/summarycode/data/plugin_consolidate/report-subdirectory-with-minority-origin-expected.json +++ b/tests/summarycode/data/plugin_consolidate/report-subdirectory-with-minority-origin-expected.json @@ -12,9 +12,11 @@ "--package": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { + "spdx_license_list_version": "3.14", "files_count": 4 } } diff --git a/tests/summarycode/data/plugin_consolidate/return-nested-local-majority-expected.json b/tests/summarycode/data/plugin_consolidate/return-nested-local-majority-expected.json index 3a40072840d..404d49f812e 100644 --- a/tests/summarycode/data/plugin_consolidate/return-nested-local-majority-expected.json +++ b/tests/summarycode/data/plugin_consolidate/return-nested-local-majority-expected.json @@ -12,6 +12,7 @@ "--package": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/plugin_consolidate/zlib-expected.json b/tests/summarycode/data/plugin_consolidate/zlib-expected.json index 7447e60e6d2..12c05d09759 100644 --- a/tests/summarycode/data/plugin_consolidate/zlib-expected.json +++ b/tests/summarycode/data/plugin_consolidate/zlib-expected.json @@ -17,6 +17,7 @@ "--url": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": null, "message": null, "errors": [], "extra_data": { @@ -32,9 +33,11 @@ "--json": "" }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { + "spdx_license_list_version": "3.14", "files_count": 253 } } diff --git a/tests/summarycode/data/score/basic-expected.json b/tests/summarycode/data/score/basic-expected.json index 001451e7886..2a82c61a202 100644 --- a/tests/summarycode/data/score/basic-expected.json +++ b/tests/summarycode/data/score/basic-expected.json @@ -12,6 +12,7 @@ "--license-clarity-score": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/score/consistent_licenses-expected.json b/tests/summarycode/data/score/consistent_licenses-expected.json index dcf8317c37c..c59fc4c5aa1 100644 --- a/tests/summarycode/data/score/consistent_licenses-expected.json +++ b/tests/summarycode/data/score/consistent_licenses-expected.json @@ -12,6 +12,7 @@ "--license-clarity-score": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/score/consistent_licenses_not-expected.json b/tests/summarycode/data/score/consistent_licenses_not-expected.json index 0ca45230fec..5ddb0d1a2b3 100644 --- a/tests/summarycode/data/score/consistent_licenses_not-expected.json +++ b/tests/summarycode/data/score/consistent_licenses_not-expected.json @@ -12,6 +12,7 @@ "--license-clarity-score": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/score/consistent_licenses_not_spdx-expected.json b/tests/summarycode/data/score/consistent_licenses_not_spdx-expected.json index 842b825e56c..b5ea438b41b 100644 --- a/tests/summarycode/data/score/consistent_licenses_not_spdx-expected.json +++ b/tests/summarycode/data/score/consistent_licenses_not_spdx-expected.json @@ -12,6 +12,7 @@ "--license-clarity-score": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/score/file_coverage-expected.json b/tests/summarycode/data/score/file_coverage-expected.json index 5781fbb4b60..8e1f2f250ca 100644 --- a/tests/summarycode/data/score/file_coverage-expected.json +++ b/tests/summarycode/data/score/file_coverage-expected.json @@ -12,6 +12,7 @@ "--license-clarity-score": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/score/full_text-expected.json b/tests/summarycode/data/score/full_text-expected.json index 64d748e60a0..b0930bc1330 100644 --- a/tests/summarycode/data/score/full_text-expected.json +++ b/tests/summarycode/data/score/full_text-expected.json @@ -12,6 +12,7 @@ "--license-clarity-score": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/score/full_text_in_key_files-expected.json b/tests/summarycode/data/score/full_text_in_key_files-expected.json index 095522e4491..cdc1ea80879 100644 --- a/tests/summarycode/data/score/full_text_in_key_files-expected.json +++ b/tests/summarycode/data/score/full_text_in_key_files-expected.json @@ -12,6 +12,7 @@ "--license-clarity-score": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/score/single_file-expected.json b/tests/summarycode/data/score/single_file-expected.json index fdadfcedb20..4a0598fee5a 100644 --- a/tests/summarycode/data/score/single_file-expected.json +++ b/tests/summarycode/data/score/single_file-expected.json @@ -12,6 +12,7 @@ "--license-clarity-score": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/score/spdx_licenses-expected.json b/tests/summarycode/data/score/spdx_licenses-expected.json index 4ea6f51f464..8ecd2e962a1 100644 --- a/tests/summarycode/data/score/spdx_licenses-expected.json +++ b/tests/summarycode/data/score/spdx_licenses-expected.json @@ -12,6 +12,7 @@ "--license-clarity-score": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/score/spdx_licenses_not-expected.json b/tests/summarycode/data/score/spdx_licenses_not-expected.json index a76d4eda205..424170e1e08 100644 --- a/tests/summarycode/data/score/spdx_licenses_not-expected.json +++ b/tests/summarycode/data/score/spdx_licenses_not-expected.json @@ -12,6 +12,7 @@ "--license-clarity-score": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { @@ -369,4 +370,4 @@ "scan_errors": [] } ] -} +} \ No newline at end of file diff --git a/tests/summarycode/data/score/top_declared-expected.json b/tests/summarycode/data/score/top_declared-expected.json index ce36332a42c..4a703f6abab 100644 --- a/tests/summarycode/data/score/top_declared-expected.json +++ b/tests/summarycode/data/score/top_declared-expected.json @@ -12,6 +12,7 @@ "--license-clarity-score": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { diff --git a/tests/summarycode/data/score/top_declared_not-expected.json b/tests/summarycode/data/score/top_declared_not-expected.json index 6468da76e08..7b910b44b2f 100644 --- a/tests/summarycode/data/score/top_declared_not-expected.json +++ b/tests/summarycode/data/score/top_declared_not-expected.json @@ -12,6 +12,7 @@ "--license-clarity-score": true }, "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "output_format_version": "1.0.0", "message": null, "errors": [], "extra_data": { From d37bb1679df7aa095dd53f126de21b93a24c4858 Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Sat, 25 Sep 2021 23:50:58 +0200 Subject: [PATCH 2/2] Bump to 30.1.0 Signed-off-by: Philippe Ombredanne --- CHANGELOG.rst | 20 +++++++++++++++++++- setup-mini.cfg | 2 +- setup.cfg | 2 +- src/scancode_config.py | 2 +- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 2f2d41dbefb..1810e0ba373 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -64,12 +64,30 @@ Outputs: +30.1.0 - 2021-09-25 +-------------------- + +This is a bug fix release for these bugs: + +- https://github.com/nexB/scancode-toolkit/issues/2717 + +We now return the package in the summaries as before. + +There is also a minor API change: we no longer return a count of "null" empty +values in the summaries for license, copyrights, etc. + + +Thank you to: +- Thomas Druez @tdruez + + + 30.0.1 - 2021-09-24 -------------------- This is a minor bug fix release for these bugs: -- https://github.com/nexB/scancode-toolkit/issues/2713 +- https://github.com/nexB/commoncode/issues/31 - https://github.com/nexB/scancode-toolkit/issues/2713 We now correctly work with all supported Click versions. diff --git a/setup-mini.cfg b/setup-mini.cfg index 21346e5e910..87daed372ed 100644 --- a/setup-mini.cfg +++ b/setup-mini.cfg @@ -1,6 +1,6 @@ [metadata] name = scancode-toolkit-mini -version = 30.0.1 +version = 30.1.0 license = Apache-2.0 AND CC-BY-4.0 AND LicenseRef-scancode-other-permissive AND LicenseRef-scancode-other-copyleft description = ScanCode is a tool to scan code for license, copyright, package and their documented dependencies and other interesting facts. scancode-toolkit-mini is a special build that does not come with pre-built binary dependencies by default. These are instead installed separately or with the extra_requires scancode-toolkit-mini[full] diff --git a/setup.cfg b/setup.cfg index 5b613aefa60..a7e9cc7a600 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = scancode-toolkit -version = 30.0.1 +version = 30.1.0 license = Apache-2.0 AND CC-BY-4.0 AND LicenseRef-scancode-other-permissive AND LicenseRef-scancode-other-copyleft description = ScanCode is a tool to scan code for license, copyright, package and their documented dependencies and other interesting facts. diff --git a/src/scancode_config.py b/src/scancode_config.py index 73ff23e5936..570e1f98f8a 100644 --- a/src/scancode_config.py +++ b/src/scancode_config.py @@ -77,7 +77,7 @@ def _create_dir(location): # in case package is not installed or we do not have setutools/pkg_resources # on hand fall back to this version -__version__ = '30.0.1' +__version__ = '30.1.0' # used to warn user when the version is out of date __release_date__ = datetime.datetime(2021, 9, 24)