diff --git a/matchcode/tests/__init__.py b/matchcode/tests/__init__.py index e69de29b..55c388e9 100644 --- a/matchcode/tests/__init__.py +++ b/matchcode/tests/__init__.py @@ -0,0 +1,13 @@ +# +# Copyright (c) nexB Inc. and others. All rights reserved. +# purldb is a trademark of nexB Inc. +# SPDX-License-Identifier: Apache-2.0 +# See http://www.apache.org/licenses/LICENSE-2.0 for the license text. +# See https://github.com/nexB/purldb for support or download. +# See https://aboutcode.org for more information about nexB OSS projects. +# + +import os + + +FIXTURES_REGEN = os.environ.get("MATCHCODE_TEST_FIXTURES_REGEN", False) diff --git a/matchcode/tests/test_api.py b/matchcode/tests/test_api.py index 8decc568..0ce92322 100644 --- a/matchcode/tests/test_api.py +++ b/matchcode/tests/test_api.py @@ -16,6 +16,7 @@ from matchcode.indexing import index_package_directories from matchcode.utils import load_resources_from_scan from matchcode.utils import MatchcodeTestCase +from matchcode.tests import FIXTURES_REGEN class ApproximateDirectoryStructureIndexAPITestCase(MatchcodeTestCase): diff --git a/matchcode/tests/test_index_packages.py b/matchcode/tests/test_index_packages.py index c1db948c..c86e0bd7 100644 --- a/matchcode/tests/test_index_packages.py +++ b/matchcode/tests/test_index_packages.py @@ -28,6 +28,7 @@ from matchcode.utils import MatchcodeTestCase from packagedb.models import Package from packagedb.models import Resource +from matchcode.tests import FIXTURES_REGEN class IndexPackagesTestCase(MatchcodeTestCase): diff --git a/matchcode/tests/test_match.py b/matchcode/tests/test_match.py index 3b12e7d2..e7c5d64b 100644 --- a/matchcode/tests/test_match.py +++ b/matchcode/tests/test_match.py @@ -25,6 +25,7 @@ from matchcode.utils import index_packages_sha1 from matchcode.utils import load_resources_from_scan from matchcode.utils import MatchcodeTestCase +from matchcode.tests import FIXTURES_REGEN def run_do_match_from_scan(scan_file_location, match_type): @@ -108,25 +109,25 @@ def test_do_match_package_archive_match(self): input_file = self.get_test_loc('models/match-test.json') vc = run_do_match_from_scan(input_file, EXACT_PACKAGE_ARCHIVE_MATCH) expected = self.get_test_loc('models/match-test-exact-package-results.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) def test_do_match_approximate_directory_structure_match(self): input_file = self.get_test_loc('models/match-test.json') vc = run_do_match_from_scan(input_file, APPROXIMATE_DIRECTORY_STRUCTURE_MATCH) expected = self.get_test_loc('models/match-test-approximate-directory-structure-results.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) def test_do_match_approximate_directory_content_match(self): input_file = self.get_test_loc('models/match-test.json') vc = run_do_match_from_scan(input_file, APPROXIMATE_DIRECTORY_CONTENT_MATCH) expected = self.get_test_loc('models/match-test-approximate-directory-content-results.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) def test_do_match_package_file_match(self): input_file = self.get_test_loc('models/match-test.json') vc = run_do_match_from_scan(input_file, EXACT_FILE_MATCH) expected = self.get_test_loc('models/match-test-exact-file-results.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) class MatchNestedPackagesTestCase(MatchcodeTestCase): @@ -166,7 +167,7 @@ def test_do_match_approximate_directory_structure_match(self): input_file = self.get_test_loc('match/nested/nested.json') vc = run_do_match_from_scan(input_file, APPROXIMATE_DIRECTORY_STRUCTURE_MATCH) expected = self.get_test_loc('match/nested/nested-expected.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) class MatchUtilityFunctionsTestCase(MatchcodeTestCase): @@ -275,52 +276,52 @@ def test_match_ApproximateDirectoryStructureIndex_abbrev_1_0_3(self): input_file = self.get_test_loc('match/directory-matching/abbrev-1.0.3-i.json') vc = run_do_match_from_scan(input_file, APPROXIMATE_DIRECTORY_STRUCTURE_MATCH) expected = self.get_test_loc('match/directory-matching/abbrev-1.0.3-i-expected.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) def test_match_ApproximateDirectoryStructureIndex_abbrev_1_0_4(self): input_file = self.get_test_loc('match/directory-matching/abbrev-1.0.4-i.json') vc = run_do_match_from_scan(input_file, APPROXIMATE_DIRECTORY_STRUCTURE_MATCH) expected = self.get_test_loc('match/directory-matching/abbrev-1.0.4-i-expected.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) def test_match_ApproximateDirectoryStructureIndex_abbrev_1_0_5(self): input_file = self.get_test_loc('match/directory-matching/abbrev-1.0.5-i.json') vc = run_do_match_from_scan(input_file, APPROXIMATE_DIRECTORY_STRUCTURE_MATCH) expected = self.get_test_loc('match/directory-matching/abbrev-1.0.5-i-expected.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) def test_match_ApproximateDirectoryStructureIndex_abbrev_1_0_6(self): input_file = self.get_test_loc('match/directory-matching/abbrev-1.0.6-i.json') vc = run_do_match_from_scan(input_file, APPROXIMATE_DIRECTORY_STRUCTURE_MATCH) expected = self.get_test_loc('match/directory-matching/abbrev-1.0.6-i-expected.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) def test_match_ApproximateDirectoryStructureIndex_abbrev_1_0_7(self): input_file = self.get_test_loc('match/directory-matching/abbrev-1.0.7-i.json') vc = run_do_match_from_scan(input_file, APPROXIMATE_DIRECTORY_STRUCTURE_MATCH) expected = self.get_test_loc('match/directory-matching/abbrev-1.0.7-i-expected.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) def test_match_ApproximateDirectoryStructureIndex_abbrev_1_0_9(self): input_file = self.get_test_loc('match/directory-matching/abbrev-1.0.9-i.json') vc = run_do_match_from_scan(input_file, APPROXIMATE_DIRECTORY_STRUCTURE_MATCH) expected = self.get_test_loc('match/directory-matching/abbrev-1.0.9-i-expected.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) def test_match_ApproximateDirectoryStructureIndex_abbrev_1_1_0(self): input_file = self.get_test_loc('match/directory-matching/abbrev-1.1.0-i.json') vc = run_do_match_from_scan(input_file, APPROXIMATE_DIRECTORY_STRUCTURE_MATCH) expected = self.get_test_loc('match/directory-matching/abbrev-1.1.0-i-expected.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) def test_match_ApproximateDirectoryStructureIndex_abbrev_1_1_1(self): input_file = self.get_test_loc('match/directory-matching/abbrev-1.1.1-i.json') vc = run_do_match_from_scan(input_file, APPROXIMATE_DIRECTORY_STRUCTURE_MATCH) expected = self.get_test_loc('match/directory-matching/abbrev-1.1.1-i-expected.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) def test_match_ApproximateDirectoryStructureIndex_get_stdin_3_0_2(self): input_file = self.get_test_loc('match/directory-matching/get-stdin-3.0.2-i.json') vc = run_do_match_from_scan(input_file, APPROXIMATE_DIRECTORY_STRUCTURE_MATCH) expected = self.get_test_loc('match/directory-matching/get-stdin-3.0.2-i-expected.json') - self.check_codebase(vc, expected, regen=False) + self.check_codebase(vc, expected, regen=FIXTURES_REGEN) diff --git a/matchcode/tests/test_models.py b/matchcode/tests/test_models.py index 5e5744f7..3df9794c 100644 --- a/matchcode/tests/test_models.py +++ b/matchcode/tests/test_models.py @@ -25,6 +25,7 @@ from matchcode.utils import index_package_files_sha1 from matchcode.utils import load_resources_from_scan from matchcode.utils import MatchcodeTestCase +from matchcode.tests import FIXTURES_REGEN EXACT_PACKAGE_ARCHIVE_MATCH = 0 @@ -127,7 +128,7 @@ def test_ExactFileIndex_match(self): resource.save(codebase) expected = self.get_test_loc('models/exact-file-matching-standalone-test-results.json') - self.check_codebase(codebase, expected, regen=False) + self.check_codebase(codebase, expected, regen=FIXTURES_REGEN) class ApproximateDirectoryMatchingIndexModelTestCase(MatchcodeTestCase): @@ -184,7 +185,7 @@ def test_ApproximateDirectoryStructureIndex_match_subdir(self): resource.save(codebase) expected = self.get_test_loc('models/directory-matching/async-0.2.9-i-expected-structure.json') - self.check_codebase(codebase, expected, regen=False) + self.check_codebase(codebase, expected, regen=FIXTURES_REGEN) def test_ApproximateDirectoryContentIndex_match_subdir(self): scan_location = self.get_test_loc('models/directory-matching/async-0.2.9-i.json') @@ -207,7 +208,7 @@ def test_ApproximateDirectoryContentIndex_match_subdir(self): resource.save(codebase) expected = self.get_test_loc('models/directory-matching/async-0.2.9-i-expected-content.json') - self.check_codebase(codebase, expected, regen=False) + self.check_codebase(codebase, expected, regen=FIXTURES_REGEN) class MatchcodeModelUtilsTestCase(MatchcodeTestCase): diff --git a/matchcode/utils.py b/matchcode/utils.py index c0427e5b..35fbc4f6 100644 --- a/matchcode/utils.py +++ b/matchcode/utils.py @@ -21,6 +21,8 @@ from matchcode_toolkit.fingerprinting import hexstring_to_binarray +from matchcode.tests import FIXTURES_REGEN + ############## TEST UTILITIES ############## """ @@ -48,7 +50,7 @@ def get_test_loc(cls, path): class CodebaseTester(object): def check_codebase(self, codebase, expected_codebase_json_loc, - regen=False, remove_file_date=True): + regen=FIXTURES_REGEN, remove_file_date=True): """ Check the Resources of the `codebase` Codebase objects are the same as the data in the `expected_codebase_json_loc` JSON file location, diff --git a/minecode/mappers/apache.py b/minecode/mappers/apache.py index 2496e3cd..4b3f6891 100644 --- a/minecode/mappers/apache.py +++ b/minecode/mappers/apache.py @@ -55,10 +55,10 @@ def get_packages(self, uri, resource_uri): package version. """ metadata = json.loads(resource_uri.data, object_pairs_hook=OrderedDict) - return build_packages_from_projects(metadata) + return build_packages_from_projects(metadata, uri=uri) -def build_packages_from_projects(metadata): +def build_packages_from_projects(metadata, uri=None): """ Yield Package built from Apache a `metadata` mapping which is a dictionary keyed by project name and values are project_metadata. @@ -70,6 +70,7 @@ def build_packages_from_projects(metadata): descriptions = [d for d in (short_desc, long_desc) if d and d.strip()] description = '\n'.join(descriptions) common_data = dict( + datasource_id="apache_json", type='apache', name=project_name, description=description, @@ -96,7 +97,7 @@ def build_packages_from_projects(metadata): parties = common_data.get('parties') if not parties: common_data['parties'] = [] - common_data['parties'].append(party) + common_data['parties'].append(party.to_dict()) # license is just a URL in the json file, for example: # http://usefulinc.com/doap/licenses/asl20 @@ -127,10 +128,16 @@ def build_packages_from_projects(metadata): rdata['release_date'] = parse_date(release.get('created')) else: logger.warn('Unexpected date format for release date: {}'.format(release.get('created'))) - package = scan_models.Package(**rdata) + package = scan_models.Package.from_package_data( + package_data=rdata, + datafile_path=uri, + ) yield package else: - package = scan_models.Package(**common_data) + package = scan_models.Package.from_package_data( + package_data=common_data, + datafile_path=uri, + ) yield package diff --git a/minecode/mappers/bower.py b/minecode/mappers/bower.py index 63c614c6..5567bf3a 100644 --- a/minecode/mappers/bower.py +++ b/minecode/mappers/bower.py @@ -55,7 +55,7 @@ def build_packages_from_jsonfile(metadata, uri=None, purl=None): if devdependencies: for key, value in devdependencies.items(): dev_dependencies.append( - DependentPackage(purl=key, extracted_requirement=value, scope='devdependency') + DependentPackage(purl=key, extracted_requirement=value, scope='devdependency').to_dict() ) dependencies = content.get('dependencies') @@ -63,7 +63,7 @@ def build_packages_from_jsonfile(metadata, uri=None, purl=None): if dependencies: for key, value in dependencies.items(): dependencies_build.append( - DependentPackage(purl=key, extracted_requirement=value, scope='runtime') + DependentPackage(purl=key, extracted_requirement=value, scope='runtime').to_dict() ) if name: @@ -80,6 +80,7 @@ def build_packages_from_jsonfile(metadata, uri=None, purl=None): vcs_url=vcs_repo, keywords=keywords_content, homepage_url=content.get('homepage'), + datasource_id='bower_json', ) if extracted_license_statement: @@ -90,7 +91,7 @@ def build_packages_from_jsonfile(metadata, uri=None, purl=None): parties = common_data.get('parties') if not parties: common_data['parties'] = [] - common_data['parties'].append(scan_models.Party(name=author_content, role='author',)) + common_data['parties'].append(scan_models.Party(name=author_content, role='author',).to_dict()) else: parties = common_data.get('parties') if not parties: @@ -99,7 +100,7 @@ def build_packages_from_jsonfile(metadata, uri=None, purl=None): for author in author_content: author_split = author.split(':') if len(author_split) > 1: - common_data['parties'].append(scan_models.Party(name=author_split[1].strip(), role='author',)) + common_data['parties'].append(scan_models.Party(name=author_split[1].strip(), role='author',).to_dict()) dependencies = [] if dependencies_build: @@ -108,7 +109,10 @@ def build_packages_from_jsonfile(metadata, uri=None, purl=None): dependencies.extend(dev_dependencies) if len(dependencies) > 0: common_data['dependencies'] = dependencies - package = scan_models.Package(**common_data) + package = scan_models.Package.from_package_data( + package_data=common_data, + datafile_path=uri, + ) package.set_purl(purl) yield package diff --git a/minecode/mappers/cpan.py b/minecode/mappers/cpan.py index 5a43d23e..ac25f47a 100644 --- a/minecode/mappers/cpan.py +++ b/minecode/mappers/cpan.py @@ -50,6 +50,7 @@ def build_packages_from_release_json(metadata, uri=None): extracted_license_statement = [l for l in release.get('license', []) if l and l.strip()] common_data = dict( + datasource_id="cpan_release_json", type='cpan', name=name, description=release.get('abstract'), @@ -58,7 +59,7 @@ def build_packages_from_release_json(metadata, uri=None): extracted_license_statement=extracted_license_statement, # the date format passing is like: # "2014-04-20T21:30:13" - release_date=parse_date(release.get('date')) + release_date=parse_date(release.get('date')), ) # Get the homepage_url, declared_license and vcs_repository/vcs_tool under resources section. @@ -101,9 +102,12 @@ def build_packages_from_release_json(metadata, uri=None): type=scan_models.party_person, name=release.get('author'), role='author') common_data['parties'] = common_data.get('parties', []) - common_data['parties'].append(party) + common_data['parties'].append(party.to_dict()) - package = scan_models.Package(**common_data) + package = scan_models.Package.from_package_data( + package_data=common_data, + datafile_path=uri, + ) package_url = PackageURL(type='cpan', name=release.get('name'), version=release.get('version')) package.set_purl(package_url.to_string()) yield package @@ -173,6 +177,7 @@ def build_packages_from_metafile(metadata, uri=None, purl=None): # https://spdx.org/spdx-specification-21-web-version#h.49x2ik5 vcs_repo = vcs_tool + '+' + vcs_repo common_data = dict( + datasource_id="cpan_metadata_json", type='cpan', name=name, description=content.get('abstract', name), @@ -201,9 +206,9 @@ def build_packages_from_metafile(metadata, uri=None, purl=None): email=author_email ) - parties.append(party) + parties.append(party.to_dict()) - package = scan_models.PackageData(**common_data) + package = scan_models.PackageData.from_data(package_data=common_data) package.set_purl(purl) yield package @@ -260,6 +265,7 @@ def build_packages_from_readmefile(metadata, uri=None, purl=None): vcs_repo = vcs_tool + '+' + vcs_repo copyr = content.get('COPYRIGHT and LICENSE') common_data = dict( + datasource_id="cpan_readme", type='cpan', name=name, description=content.get('ABSTRACT', name), @@ -284,7 +290,7 @@ def build_packages_from_readmefile(metadata, uri=None, purl=None): keywords_content = [content.get('KEYWORDS')] common_data['keywords'] = keywords_content - package = scan_models.PackageData(**common_data) + package = scan_models.PackageData.from_data(package_data=common_data) package.set_purl(purl) yield package diff --git a/minecode/mappers/cran.py b/minecode/mappers/cran.py index 3ed122fa..1da1fb94 100644 --- a/minecode/mappers/cran.py +++ b/minecode/mappers/cran.py @@ -47,7 +47,7 @@ def get_dependencies(depends): if not dependencies: return dep_pkgs for name in dependencies: - dep_pkgs.append(scan_models.DependentPackage(purl=name)) + dep_pkgs.append(scan_models.DependentPackage(purl=name).to_dict()) return dep_pkgs @@ -60,7 +60,7 @@ def comma_separated(text): return [t.strip() for t in text.split(',') if t and t.strip()] -def build_packages_from_html(metadata, uri, purl=None): +def build_packages_from_html(metadata, uri=None, purl=None): """ Yield Package built from Cpan a `metadata` content metadata: json metadata content @@ -69,6 +69,7 @@ def build_packages_from_html(metadata, uri, purl=None): """ # Parse the name from the url, for example: https://cloud.r-project.org/web/packages/ANN2/index.html common_data = dict( + datasource_id="cran_metadata", type='cran', name=uri.rpartition('/')[0].rpartition('/')[-1] ) @@ -115,7 +116,7 @@ def build_packages_from_html(metadata, uri, purl=None): if not parties: common_data['parties'] = [] party = scan_models.Party(type=scan_models.party_person, name=value, role='author') - common_data['parties'].append(party) + common_data['parties'].append(party.to_dict()) elif key == 'Maintainer:': maintainer_split = value.split('<') if len(maintainer_split) > 1: @@ -123,7 +124,7 @@ def build_packages_from_html(metadata, uri, purl=None): if not parties: common_data['parties'] = [] party = scan_models.Party(type=scan_models.party_person, name=maintainer_split[0].rstrip(), role='maintainer', email=maintainer_split[1].replace('>', '').replace(' at ', '@')) - common_data['parties'].append(party) + common_data['parties'].append(party.to_dict()) elif 'source' in key or 'binaries' in key: if type(value) == list: for url in value: @@ -140,12 +141,18 @@ def build_packages_from_html(metadata, uri, purl=None): if download_urls: # for else statement will have else running always if there is no break statement for download_url in download_urls: - package = scan_models.Package(**common_data) + package = scan_models.Package.from_package_data( + package_data=common_data, + datafile_path=uri, + ) package.download_url = download_url package.set_purl(purl) yield package else: # Yield a package without download_url - package = scan_models.Package(**common_data) + package = scan_models.Package.from_package_data( + package_data=common_data, + datafile_path=uri, + ) package.set_purl(purl) yield package diff --git a/minecode/mappers/debian.py b/minecode/mappers/debian.py index 8947e458..2a6b5ca3 100644 --- a/minecode/mappers/debian.py +++ b/minecode/mappers/debian.py @@ -377,6 +377,7 @@ def build_packages_from_dist_archive(metadata, uri): # version by analysing the uri version = uri[folder_length:uri.index('/', folder_length)] common_data = dict( + datasource_id="debian_archive_file", name=name, version=version, ) @@ -415,12 +416,18 @@ def get_resourceuri_by_uri(uri): if download_urls: for download_url in download_urls: - package = scan_models.Package(**common_data) + package = scan_models.Package.from_package_data( + package_data=common_data, + datafile_path=uri, + ) package['download_url'] = download_url yield package else: # yield package without a download_url value - package = scan_models.DebianPackage(**common_data) + package = scan_models.Package.from_package_data( + package_data=common_data, + datafile_path=uri, + ) # FIXME: this is NOT RIGHT: purl is not defined - package.set_purl(purl) + package.set_purl(package.purl) yield package diff --git a/minecode/mappers/eclipse.py b/minecode/mappers/eclipse.py index 6ab46e9c..53446fbb 100644 --- a/minecode/mappers/eclipse.py +++ b/minecode/mappers/eclipse.py @@ -29,10 +29,10 @@ def get_packages(self, uri, resource_uri): """ # FIXME: JSON deserialization should be handled eventually by the framework metadata = json.loads(resource_uri.data) - return build_packages_with_json(metadata, resource_uri.package_url) + return build_packages_with_json(metadata, resource_uri.package_url, uri) -def build_packages_with_json(metadata, purl=None): +def build_packages_with_json(metadata, purl=None, uri=None): """ Yield Package built from Eclipse a `metadata` mapping The package can contain multiple projects, and each project can contain @@ -44,6 +44,7 @@ def build_packages_with_json(metadata, purl=None): projects = metadata['projects'] for project, project_metadata in projects.items(): common_data = dict( + datasource_id="eclipse_metadata", type='eclipse', name=project, ) @@ -70,7 +71,10 @@ def build_packages_with_json(metadata, purl=None): durl = download_url.get('url') if durl: common_data['download_url'] = durl - package = scan_models.Package(**common_data) + package = scan_models.Package.from_package_data( + package_data=common_data, + datafile_path=uri, + ) package.set_purl(purl) yield package @@ -84,16 +88,19 @@ def get_packages(self, uri, resource_uri): Yield as many Package as there are download URLs. """ # FIXME: JSON deserialization should be handled eventually by the framework - return build_packages(resource_uri.data, resource_uri.package_url) + return build_packages(resource_uri.data, resource_uri.package_url, uri) -def build_packages(html_text, purl=None): +def build_packages(html_text, purl=None, uri=None): """ Yield Package objects built from `html_text`and the `purl` package URL string. """ page = BeautifulSoup(html_text, 'lxml') - common_data = dict(type='eclipse') + common_data = dict( + datasource_id="eclipse_html", + type='eclipse', + ) extracted_license_statement = [] for meta in page.find_all(name='meta'): @@ -126,7 +133,10 @@ def build_packages(html_text, purl=None): if str(a.contents[0]).strip() == 'Downloads': download_data = dict(download_url=a['href'],) download_data.update(common_data) - package = scan_models.Package(**download_data) + package = scan_models.Package.from_package_data( + package_data=download_data, + datafile_path=uri, + ) package.set_purl(purl) yield package @@ -151,8 +161,14 @@ def build_packages(html_text, purl=None): version = a.contents[0] href = a['href'] - download_data = dict(version=version, download_url=href) + download_data = dict( + version=version, + download_url=href, + ) download_data.update(common_data) - package = scan_models.Package(**download_data) + package = scan_models.Package.from_package_data( + package_data=download_data, + datafile_path=uri, + ) package.set_purl(purl) yield package diff --git a/minecode/mappers/fdroid.py b/minecode/mappers/fdroid.py index b53bbd8a..4e2e2c3a 100644 --- a/minecode/mappers/fdroid.py +++ b/minecode/mappers/fdroid.py @@ -126,14 +126,15 @@ def build_packages(purl, data): src_size = src['size'] download_url = f'https://f-droid.org/repo/{src_filename.strip("/")}' - src = PackageData( + package_mapping = dict( version=version_code, download_url=download_url, repository_download_url=download_url, sha256=src_sha256, size=src_size, - **shared_data, ) + package_mapping.update(shared_data) + src = PackageData.from_data(package_mapping) yield src source_package = PackageURL( @@ -150,15 +151,16 @@ def build_packages(purl, data): size = file['size'] download_url = f'https://f-droid.org/repo/{filename}' - yield PackageData( + package_mappping = dict( version=version_code, download_url=download_url, repository_download_url=download_url, sha256=sha256, size=size, source_packages=[source_package.to_string()], - **shared_data, ) + package_mapping.update(shared_data) + yield PackageData.from_data(package_mapping) def build_description(metadata, language='en-US'): diff --git a/minecode/mappers/googlecode.py b/minecode/mappers/googlecode.py index e9d368cb..16bd8f11 100644 --- a/minecode/mappers/googlecode.py +++ b/minecode/mappers/googlecode.py @@ -29,10 +29,10 @@ def get_packages(self, uri, resource_uri): # FIXME: JSON deserialization should be handled eventually by the # framework metadata = json.loads(resource_uri.data) - return build_packages_from_projectsjson_v2(metadata, resource_uri.package_url) + return build_packages_from_projectsjson_v2(metadata, resource_uri.package_url, uri) -def build_packages_from_projectsjson_v2(metadata, purl=None): +def build_packages_from_projectsjson_v2(metadata, purl=None, uri=None): """ Yield Package built from Googlecode API json `metadata` mapping which is a dictionary keyed by project name and values are metadatadata. @@ -45,6 +45,7 @@ def build_packages_from_projectsjson_v2(metadata, purl=None): descriptions = [d for d in (short_desc, long_desc) if d and d.strip()] description = '\n'.join(descriptions) common_data = dict( + datasource_id='googlecode_api_json', type='googlecode', name=metadata.get('name'), description=description @@ -61,7 +62,10 @@ def build_packages_from_projectsjson_v2(metadata, purl=None): keywords.append(label.strip()) common_data['keywords'] = keywords - package = scan_models.Package(**common_data) + package = scan_models.Package.from_package_data( + package_data=common_data, + datafile_path=uri, + ) package.set_purl(purl) yield package @@ -77,16 +81,17 @@ def get_packages(self, uri, resource_uri): # FIXME: JSON deserialization should be handled eventually by the # framework metadata = json.loads(resource_uri.data) - return build_packages_from_projectsjson_v1(metadata, resource_uri.package_url) + return build_packages_from_projectsjson_v1(metadata, resource_uri.package_url, uri) -def build_packages_from_projectsjson_v1(metadata, purl=None): +def build_packages_from_projectsjson_v1(metadata, purl=None, uri=None): """Yield Package from the project.json passed by the google code v1 API metadata: json metadata content from API call purl: String value of the package url of the ResourceURI object """ if metadata.get('name'): common_data = dict( + datasource_id="googlecode_json", type='googlecode', name=metadata.get('name'), description=metadata.get('description') @@ -112,6 +117,9 @@ def build_packages_from_projectsjson_v1(metadata, purl=None): # created_time = metadata.get('creationTime') # if created_time: # common_data['release_date'] = date.fromtimestamp(created_time) - package = scan_models.Package(**common_data) + package = scan_models.Package.from_package_data( + package_data=common_data, + datafile_path=uri, + ) package.set_purl(purl) yield package diff --git a/minecode/mappers/nuget.py b/minecode/mappers/nuget.py index 704d3629..e4a8d63d 100644 --- a/minecode/mappers/nuget.py +++ b/minecode/mappers/nuget.py @@ -57,7 +57,7 @@ def build_packages_with_json(metadata, purl=None): long_desc = None descriptions = [d for d in (short_desc, long_desc) if d and d.strip()] description = '\n'.join(descriptions) - package = scan_models.PackageData( + package_mapping = dict( type='nuget', name=metadata['id'], version=metadata['version'], @@ -68,6 +68,7 @@ def build_packages_with_json(metadata, purl=None): parties=authors, keywords=keywords, ) + package = scan_models.PackageData.from_data(package_data=package_mapping) package.set_purl(purl) yield package @@ -158,7 +159,8 @@ def build_packages_from_html(metadata, uri, purl=None): continue version = version.strip() download_url = download_url_format.format(name=name, version=version) - package = scan_models.Package( + package_mapping = dict( + datasource_id="nuget_metadata_json", name=name, type='nuget', version=version, @@ -168,5 +170,9 @@ def build_packages_from_html(metadata, uri, purl=None): extracted_license_statement=license_value, copyright=copyright_value ) + package = scan_models.Package.from_package_data( + package_data=package_mapping, + datafile_path=uri, + ) package.set_purl(purl) yield package diff --git a/minecode/mappers/openssl.py b/minecode/mappers/openssl.py index d7fc6c83..0881e245 100644 --- a/minecode/mappers/openssl.py +++ b/minecode/mappers/openssl.py @@ -45,6 +45,7 @@ def build_packages(resource_uri, purl=None): version = file_name.replace('.tar.gz', '').replace('openssl-', '').replace('.tar.gz', '').replace( '.asc', '').replace('.md5', '').replace('.sha1', '').replace('.sha256', '') common_data = dict( + datasource_id="openssl_metadeta", type='generic', name=file_name, description='The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, fully featured, and Open Source toolkit implementing the Transport Layer Security (TLS) protocols (including SSLv3) as well as a full-strength general purpose cryptographic library.', @@ -59,6 +60,9 @@ def build_packages(resource_uri, purl=None): code_view_url='https://github.com/openssl/openssl', bug_tracking_url='https://github.com/openssl/openssl/issues', ) - package = scan_models.Package(**common_data) + package = scan_models.Package.from_package_data( + package_data=common_data, + datafile_path=uri, + ) package.set_purl(purl) yield package diff --git a/minecode/mappers/openwrt.py b/minecode/mappers/openwrt.py index 2ff8a258..4145e484 100644 --- a/minecode/mappers/openwrt.py +++ b/minecode/mappers/openwrt.py @@ -38,10 +38,10 @@ def get_packages(self, uri, resource_uri): version. Yield as many Package as there are download URLs. """ metadata = json.loads(resource_uri.data) - return build_packages(metadata, resource_uri.package_url) + return build_packages(metadata, resource_uri.package_url, uri) -def build_packages(metadata, purl=None): +def build_packages(metadata, purl=None, uri=None): """ Yield ScannedPackage built from the passing metadata. metadata: metadata mapping @@ -49,6 +49,7 @@ def build_packages(metadata, purl=None): """ common_data = dict( type='openwrt', + datasource_id='openwrt_metadata', name=metadata.get('Package'), version=metadata.get('Version'), description=metadata.get('Description'), @@ -80,6 +81,9 @@ def build_packages(metadata, purl=None): architecture = metadata.get('Architecture') if architecture: common_data['keywords'].append(architecture) - package = scan_models.Package(**common_data) + package = scan_models.Package.from_package_data( + package_data=common_data, + datafile_path=uri, + ) package.set_purl(purl) yield package diff --git a/minecode/mappers/packagist.py b/minecode/mappers/packagist.py index 56cbdc07..b4713216 100644 --- a/minecode/mappers/packagist.py +++ b/minecode/mappers/packagist.py @@ -27,10 +27,10 @@ def get_packages(self, uri, resource_uri): Yield as many Package as there are multiple versions. """ metadata = json.loads(resource_uri.data) - return build_packages_with_json(metadata, resource_uri.package_url) + return build_packages_with_json(metadata, resource_uri.package_url, uri) -def build_packages_with_json(metadata, purl=None): +def build_packages_with_json(metadata, purl=None, uri=None): """ Yield Package built from Packist package json content. metadata: json metadata content @@ -42,10 +42,12 @@ def build_packages_with_json(metadata, purl=None): primary_language = package.get('language') for version_content in package.get('versions').values(): common = dict( + datasource_id='composer_json', type='composer', name=version_content.get('name'), description=version_content.get('description'), - primary_language=primary_language) + primary_language=primary_language, + ) common['version'] = version_content.get('version') common['keywords'] = version_content.get('keywords') common['homepage_url'] = version_content.get('homepage') @@ -66,7 +68,9 @@ def build_packages_with_json(metadata, purl=None): parties = common.get('parties') if not parties: common['parties'] = [] - common['parties'].append(scan_models.Party(name=author.get('name'), role='author', url=author.get('homepage'), email=author.get('email'))) + common['parties'].append( + scan_models.Party(name=author.get('name'), role='author', url=author.get('homepage'), email=author.get('email')).to_dict() + ) extracted_license_statement = set([]) for lic in version_content.get('license'): @@ -77,11 +81,14 @@ def build_packages_with_json(metadata, purl=None): dependencies = [] for name, version in version_content.get('require', {}).items(): dependencies.append( - DependentPackage(purl=name, extracted_requirement=version, scope='runtime') + DependentPackage(purl=name, extracted_requirement=version, scope='runtime').to_dict() ) if dependencies: common['dependencies'] = dependencies # FIXME: We should create a composer package - package = scan_models.Package(**common) + package = scan_models.Package.from_package_data( + package_data=common, + datafile_path=uri, + ) package.set_purl(purl) yield package diff --git a/minecode/mappers/pypi.py b/minecode/mappers/pypi.py index 1bfd5595..c97e84f3 100644 --- a/minecode/mappers/pypi.py +++ b/minecode/mappers/pypi.py @@ -108,13 +108,13 @@ def build_packages(metadata, purl=None): # FIXME: do not prioritize the download_url outside Pypi over actual exact Pypi donwload URL download_url = info.get('download_url') if download_url and download_url != 'UNKNOWN': - download_data = dict(download_url=download_url) - download_data.update(common_data) - package = scan_models.PackageData( + download_data = dict( datasource_id='pypi_sdist_pkginfo', type='pypi', - **download_data + download_url=download_url, ) + download_data.update(common_data) + package = scan_models.PackageData.from_data(download_data) # TODO: Consider creating a DatafileHandler for PyPI API metadata package.datasource_id = 'pypi_api_metadata' package.set_purl(purl) @@ -130,15 +130,13 @@ def build_packages(metadata, purl=None): download_url=url, size=download.get('size'), release_date=parse_date(download.get('upload_time')), + datasource_id='pypi_sdist_pkginfo', + type='pypi', ) # TODO: Check for other checksums download_data['md5'] = download.get('md5_digest') download_data.update(common_data) - package = scan_models.PackageData( - datasource_id='pypi_sdist_pkginfo', - type='pypi', - **download_data - ) + package = scan_models.PackageData.from_data(download_data) package.datasource_id = 'pypi_api_metadata' package.set_purl(purl) yield package diff --git a/minecode/mappers/rubygems.py b/minecode/mappers/rubygems.py index e6bce124..aee34e85 100644 --- a/minecode/mappers/rubygems.py +++ b/minecode/mappers/rubygems.py @@ -86,7 +86,7 @@ def build_rubygem_packages_from_api_data(metadata, name, purl=None): extracted_license_statement.append(lic) if extracted_license_statement: package['extracted_license_statement'] = extracted_license_statement - package = PackageData(**package) + package = PackageData.from_data(package) package.set_purl(purl) yield package @@ -155,7 +155,7 @@ def build_rubygem_packages_from_metadata(metadata, download_url=None, purl=None) version1 = content.get('version') or {} version = version1.get('version') or None package['version'] = version - package = PackageData(**package) + package = PackageData.from_data(package) package.set_purl(purl) yield package diff --git a/minecode/mappers/sourceforge.py b/minecode/mappers/sourceforge.py index 157bf691..48dc8086 100644 --- a/minecode/mappers/sourceforge.py +++ b/minecode/mappers/sourceforge.py @@ -26,10 +26,10 @@ def get_packages(self, uri, resource_uri): Yield as many Package as there are download URLs. """ metadata = json.loads(resource_uri.data) - return build_packages_from_metafile(metadata, resource_uri.package_url) + return build_packages_from_metafile(metadata, resource_uri.package_url, uri) -def build_packages_from_metafile(metadata, purl=None): +def build_packages_from_metafile(metadata, purl=None, uri=None): """ Yield Package built from package a `metadata` content metadata: json metadata content @@ -46,6 +46,7 @@ def build_packages_from_metafile(metadata, purl=None): name = metadata.get('name') if name: common_data = dict( + datasource_id='sourceforge_metadata', type='sourceforge', name=metadata.get('shortname', metadata.get('name')), description=description, @@ -59,7 +60,8 @@ def build_packages_from_metafile(metadata, purl=None): common_data['parties'] = [] if dev.get('name'): common_data['parties'].append( - scan_models.Party(name=dev.get('name'), role='contributor', url=dev.get('url'))) + scan_models.Party(name=dev.get('name'), role='contributor', url=dev.get('url')).to_dict() + ) categories = metadata.get('categories', {}) languages = categories.get('language', []) @@ -88,6 +90,9 @@ def build_packages_from_metafile(metadata, purl=None): for topic in topics: keywords.append(topic.get('shortname')) common_data['keywords'] = keywords or None - package = scan_models.Package(**common_data) + package = scan_models.Package.from_package_data( + package_data=common_data, + datafile_path=uri, + ) package.set_purl(purl) yield package diff --git a/minecode/tests/__init__.py b/minecode/tests/__init__.py index 2eb8f9f0..e27909e9 100644 --- a/minecode/tests/__init__.py +++ b/minecode/tests/__init__.py @@ -6,3 +6,8 @@ # See https://github.com/nexB/purldb for support or download. # See https://aboutcode.org for more information about nexB OSS projects. # + +import os + + +FIXTURES_REGEN = os.environ.get("MINECODE_TEST_FIXTURES_REGEN", False) diff --git a/minecode/tests/test_apache.py b/minecode/tests/test_apache.py index 9411a186..a3ddca9c 100644 --- a/minecode/tests/test_apache.py +++ b/minecode/tests/test_apache.py @@ -20,6 +20,7 @@ from minecode.utils_test import mocked_requests_get from minecode.utils_test import JsonBasedTesting from minecode.visitors import apache +from minecode.tests import FIXTURES_REGEN class ApacheVistorTest(JsonBasedTesting, DjangoTestCase): @@ -33,7 +34,7 @@ def test_ApacheDistIndexVisitor(self): uris, _, _ = apache.ApacheDistIndexVisitor(uri) expected_loc = self.get_test_loc('apache/find-ls.gz_uris-expected.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_ApacheChecksumVisitor(self): uri = 'http://archive.apache.org/dist/abdera/1.1.3/apache-abdera-1.1.3-src.zip.md5' @@ -64,9 +65,9 @@ def test_ApacheProjectsJsonVisitor(self): uris, result, _ = apache.ApacheProjectsJsonVisitor()(uri) expected_loc = self.get_test_loc('apache/projects_uris-expected.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) - self.check_expected_results(result, test_loc, regen=False) + self.check_expected_results(result, test_loc, regen=FIXTURES_REGEN) def test_ApacheSingleProjectJsonVisitor(self): uri = 'https://projects.apache.org/json/projects/ant-dotnet.json' @@ -77,7 +78,7 @@ def test_ApacheSingleProjectJsonVisitor(self): _, result, _ = apache.ApacheSingleProjectJsonVisitor()(uri) expected_loc = self.get_test_loc('apache/ant-dotnet_expected.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) def test_ApacheSingleProjectJsonVisitor_error1_json(self): uri = 'https://projects.apache.org/json/projects/felix.json' @@ -88,7 +89,7 @@ def test_ApacheSingleProjectJsonVisitor_error1_json(self): _, result, _ = apache.ApacheSingleProjectJsonVisitor()(uri) expected_loc = self.get_test_loc('apache/felix_expected.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) def test_ApacheSingleProjectJsonVisitor_error2_json(self): uri = 'https://projects.apache.org/json/projects/attic-mrunit.json' @@ -99,7 +100,7 @@ def test_ApacheSingleProjectJsonVisitor_error2_json(self): _, result, _ = apache.ApacheSingleProjectJsonVisitor()(uri) expected_loc = self.get_test_loc('apache/attic-mrunit_expected.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) def test_ApacheSingleProjectJsonVisitor_error3_json(self): uri = 'https://projects.apache.org/json/projects/metamodel.json' @@ -110,7 +111,7 @@ def test_ApacheSingleProjectJsonVisitor_error3_json(self): _, result, _ = apache.ApacheSingleProjectJsonVisitor()(uri) expected_loc = self.get_test_loc('apache/metamodel_expected.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) def test_ApachePodlingsJsonVisitor(self): uri = 'https://projects.apache.org/json/foundation/podlings.json' @@ -121,10 +122,10 @@ def test_ApachePodlingsJsonVisitor(self): uris, result, _ = apache.ApachePodlingsJsonVisitor()(uri) expected_loc = self.get_test_loc('apache/podlings_expected_uris.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) expected_loc = self.get_test_loc('apache/podlings_expected.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) class ApacheMapperTest(JsonBasedTesting, DjangoTestCase): @@ -135,14 +136,14 @@ def test_build_package_from_download(self): 'http://archive.apache.org/dist/groovy/2.4.6/sources/apache-groovy-src-2.4.6.zip', 'pkg:apache/groovy@2.4.6') expected_loc = self.get_test_loc('apache/map-groovy_expected.json') - self.check_expected_results(package.to_dict(), expected_loc, regen=False) + self.check_expected_results(package.to_dict(), expected_loc, regen=FIXTURES_REGEN) def test_build_package_from_download2(self): package = mappers.apache.build_package_from_download( 'http://archive.apache.org/dist/turbine/maven/turbine-webapp-2.3.3-1.0.0-source-release.zip', 'pkg:apache/turbine-webapp@2.3.3-1.0.0-source-release') expected_loc = self.get_test_loc('apache/map-turbine-webapp_expected.json') - self.check_expected_results(package.to_dict(), expected_loc, regen=False) + self.check_expected_results(package.to_dict(), expected_loc, regen=FIXTURES_REGEN) # TODO: add tests for checksums @@ -153,7 +154,7 @@ def test_build_packages_from_projects_json(self): packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('apache/projects_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_packages_from_one_podling_json(self): with open(self.get_test_loc('apache/podling_amaterasu.json')) as podlings_meta: @@ -162,7 +163,7 @@ def test_build_packages_from_one_podling_json(self): packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('apache/podling_amaterasu_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) # TODO: add real mapper class tests c diff --git a/minecode/tests/test_bitbucket.py b/minecode/tests/test_bitbucket.py index c62d4c4b..f99eb6ac 100644 --- a/minecode/tests/test_bitbucket.py +++ b/minecode/tests/test_bitbucket.py @@ -25,6 +25,8 @@ from minecode.visitors.bitbucket import BitbucketIndexVisitor from minecode.visitors.bitbucket import BitbucketSingleRepoVisitor +from minecode.tests import FIXTURES_REGEN + class BitbucketVisitorTest(JsonBasedTesting): test_data_dir = os.path.join(os.path.dirname(__file__), 'testfiles') @@ -38,10 +40,10 @@ def test_BitbucketIndexVisitor(self): uris, data, _ = BitbucketIndexVisitor(uri) expected_uri_loc = self.get_test_loc('bitbucket/visit/index-repositories_expected_uris.json') - self.check_expected_uris(uris, expected_uri_loc, regen=False) + self.check_expected_uris(uris, expected_uri_loc, regen=FIXTURES_REGEN) expected_data_loc = self.get_test_loc('bitbucket/visit/index-repositories_expected_data.json') - self.check_expected_results(data, expected_data_loc, regen=False) + self.check_expected_results(data, expected_data_loc, regen=FIXTURES_REGEN) def test_BitbucketSingleRepoVisitor(self): uri = 'https://api.bitbucket.org/2.0/repositories/bastiand/mercurialeclipse/' @@ -52,10 +54,10 @@ def test_BitbucketSingleRepoVisitor(self): uris, data, _ = BitbucketSingleRepoVisitor(uri) expected_data_loc = self.get_test_loc('bitbucket/visit/singlerepo_expected_data.json') - self.check_expected_results(data, expected_data_loc, regen=False) + self.check_expected_results(data, expected_data_loc, regen=FIXTURES_REGEN) expected_uris_loc = self.get_test_loc('bitbucket/visit/singlerepo_expected_uris.json') - self.check_expected_uris(uris, expected_uris_loc, regen=False) + self.check_expected_uris(uris, expected_uris_loc, regen=FIXTURES_REGEN) def test_BitbucketDetailsVisitorPaginated(self): uri = 'https://api.bitbucket.org/2.0/repositories/bastiand/mercurialeclipse/refs/tags?pagelen=2' @@ -66,10 +68,10 @@ def test_BitbucketDetailsVisitorPaginated(self): uris, data, _ = BitbucketDetailsVisitorPaginated(uri) expected_data_loc = self.get_test_loc('bitbucket/visit/paginated_tags_expected_data.json') - self.check_expected_results(data, expected_data_loc, regen=False) + self.check_expected_results(data, expected_data_loc, regen=FIXTURES_REGEN) expected_uris_loc = self.get_test_loc('bitbucket/visit/paginated_tags_expected_uris.json') - self.check_expected_uris(uris, expected_uris_loc, regen=False) + self.check_expected_uris(uris, expected_uris_loc, regen=FIXTURES_REGEN) class BitbucketMapperTest(JsonBasedTesting): @@ -99,7 +101,7 @@ def test_build_bitbucket_repo_package(self): purl = 'pkg:bitbucket/bastiand/mercurialeclipse' package = build_bitbucket_repo_package(repo_data, purl) expected_loc = self.get_test_loc('bitbucket/map/repository_expected.json') - self.check_expected_results(package.to_dict(), expected_loc, regen=False) + self.check_expected_results(package.to_dict(), expected_loc, regen=FIXTURES_REGEN) def test_build_bitbucket_repo_package_with_issues(self): with open(self.get_test_loc('bitbucket/map/tweakmsg.json')) as pck: @@ -107,7 +109,7 @@ def test_build_bitbucket_repo_package_with_issues(self): purl = 'pkg:bitbucket/phlogistonjohn/tweakmsg' package = build_bitbucket_repo_package(repo_data, purl) expected_loc = self.get_test_loc('bitbucket/map/tweakmsg_expected.json') - self.check_expected_results(package.to_dict(), expected_loc, regen=False) + self.check_expected_results(package.to_dict(), expected_loc, regen=FIXTURES_REGEN) def test_build_bitbucket_download_packages_single(self): with open(self.get_test_loc('bitbucket/map/downloads.json')) as pck: @@ -116,7 +118,7 @@ def test_build_bitbucket_download_packages_single(self): packages = build_bitbucket_download_packages(dnl_data, purl) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('bitbucket/map/downloads_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_bitbucket_download_packages_many(self): with open(self.get_test_loc('bitbucket/map/downloads_many.json')) as pck: @@ -125,4 +127,4 @@ def test_build_bitbucket_download_packages_many(self): packages = build_bitbucket_download_packages(dnl_data, purl) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('bitbucket/map/downloads_many_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_bower.py b/minecode/tests/test_bower.py index f985d7d0..811454db 100644 --- a/minecode/tests/test_bower.py +++ b/minecode/tests/test_bower.py @@ -18,6 +18,7 @@ from minecode.utils_test import JsonBasedTesting from minecode.visitors import bower +from minecode.tests import FIXTURES_REGEN from minecode import mappers @@ -31,7 +32,7 @@ def test_visit_findls_file(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = bower.BowerTopJsonVisitor(uri) expected_loc = self.get_test_loc('bower/packages_expected_uris.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_visit_bower_json_file(self): uri = 'https://coding.net/u/QiaoButang/p/jquery.easing-qbt/git/raw/master/bower.json' @@ -41,7 +42,7 @@ def test_visit_bower_json_file(self): _, data, _ = bower.BowerJsonVisitor(uri) result = json.loads(data, object_pairs_hook=OrderedDict) expected_loc = self.get_test_loc('bower/expected_example1_bower.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) class BowerMapperTest(JsonBasedTesting): @@ -54,7 +55,7 @@ def test_build_packages_metafile_from_bowerjson1(self): metadata, 'https://raw.githubusercontent.com/28msec/28.io-angularjs/master/bower.json', 'pkg:bower/1140-grid') result = [p.to_dict() for p in result] expected_loc = self.get_test_loc('bower/expected_28msec_bower.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) def test_build_packages_metafile_from_bowerjson2(self): with open(self.get_test_loc('bower/example1_bower.json')) as bower_metadata: @@ -63,4 +64,4 @@ def test_build_packages_metafile_from_bowerjson2(self): metadata, 'https://coding.net/u/QiaoButang/p/jquery.easing-qbt/git/raw/master/bower.json', 'pkg:bower/1140-grid') result = [p.to_dict() for p in result] expected_loc = self.get_test_loc('bower/expected_mapper_example1_bower.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_cpan.py b/minecode/tests/test_cpan.py index bd227b9e..845a7944 100644 --- a/minecode/tests/test_cpan.py +++ b/minecode/tests/test_cpan.py @@ -19,6 +19,7 @@ from minecode import mappers from minecode.visitors import cpan +from minecode.tests import FIXTURES_REGEN class CpanVisitorTest(JsonBasedTesting): @@ -31,7 +32,7 @@ def test_metacpanauthorurlvisitors(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = cpan.CpanModulesVisitors(uri) expected_loc = self.get_test_loc('cpan/expected_search_email_a.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_release_search_from_author_visitors(self): uri = 'https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000' @@ -40,7 +41,7 @@ def test_release_search_from_author_visitors(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) _, data, _ = cpan.CpanModulesVisitors(uri) expected_loc = self.get_test_loc('cpan/expected_release_from_author_ABERNDT.json') - self.check_expected_results(data, expected_loc, regen=False) + self.check_expected_results(data, expected_loc, regen=FIXTURES_REGEN) def test_visit_html_modules(self): uri = 'http://www.cpan.org/modules/01modules.index.html' @@ -49,7 +50,7 @@ def test_visit_html_modules(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = cpan.CpanModulesVisitors(uri) expected_loc = self.get_test_loc('cpan/expected_html_modules.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_visit_html_files(self): uri = 'http://www.cpan.org/authors/id/L/LD/LDS/' @@ -58,7 +59,7 @@ def test_visit_html_files(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = cpan.CpanProjectHTMLVisitors(uri) expected_loc = self.get_test_loc('cpan/expected_html_files.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_visit_readme_file(self): uri = 'http://www.cpan.org/authors/id/A/AM/AMIRITE/Mojolicious-Plugin-Nour-Config-0.09.readme' @@ -68,7 +69,7 @@ def test_visit_readme_file(self): _, data, _ = cpan.CpanReadmeVisitors(uri) result = json.loads(data, object_pairs_hook=OrderedDict) expected_file = self.get_test_loc('cpan/expected_readme.json') - self.check_expected_results(result, expected_file, regen=False) + self.check_expected_results(result, expected_file, regen=FIXTURES_REGEN) class CpanMapperTest(JsonBasedTesting): @@ -81,7 +82,7 @@ def test_build_from_release_search_json(self): metadata, 'https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('cpan/expected_release_search.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_from_release_search_json2(self): with open(self.get_test_loc('cpan/MIYAGAWA_author_release_search.json')) as cpan_metadata: @@ -90,7 +91,7 @@ def test_build_from_release_search_json2(self): metadata, 'https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('cpan/expected_release_search_author_MIYAGAWA.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_packages_metafile_from_yaml(self): with open(self.get_test_loc('cpan/variable-2009110702.meta')) as cpan_metadata: @@ -99,7 +100,7 @@ def test_build_packages_metafile_from_yaml(self): metadata, 'http://www.cpan.org/authors/id/A/AB/ABIGAIL/variable-2009110702.metadata', 'pkg:cpan/variable@2009110702') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('cpan/expected_yaml_cpanmapper.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_packages_metafile_from_json(self): with open(self.get_test_loc('cpan/Regexp-Common-2016010701.meta')) as cpan_metadata: @@ -108,7 +109,7 @@ def test_build_packages_metafile_from_json(self): metadata, 'http://www.cpan.org/authors/id/A/AB/ABIGAIL/Regexp-Common-2016010701.metadata', 'pkg:cpan/Regexp-Common@2016010701') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('cpan/expected_json_cpanmapper.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_packages_readme_from_json(self): uri = 'http://www.cpan.org/authors/id/A/AM/AMIRITE/Mojolicious-Plugin-Nour-Config-0.09.readme' @@ -120,7 +121,7 @@ def test_build_packages_readme_from_json(self): data, 'http://www.cpan.org/authors/id/A/AM/AMIRITE/Mojolicious-Plugin-Nour-Config-0.09.readme', 'pkg:cpan/Mojolicious-Plugin-Nour-Config@0.09') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('cpan/expected_json_readmefile_cpanmapper.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_packages_readme_from_json2(self): uri = 'http://www.cpan.org/authors/id/A/AB/ABIGAIL/Algorithm-Graphs-TransitiveClosure-2009110901.readme' @@ -133,4 +134,4 @@ def test_build_packages_readme_from_json2(self): 'http://www.cpan.org/authors/id/A/AB/ABIGAIL/Algorithm-Graphs-TransitiveClosure-2009110901.readme') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('cpan/expected_json_readmefile_cpanmapper2.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_cran.py b/minecode/tests/test_cran.py index 62c1255a..2534cbbf 100644 --- a/minecode/tests/test_cran.py +++ b/minecode/tests/test_cran.py @@ -20,6 +20,7 @@ from minecode.mappers.cran import get_download_url from minecode.models import ResourceURI from minecode.visitors import cran +from minecode.tests import FIXTURES_REGEN class CranVistorTest(JsonBasedTesting): @@ -32,7 +33,7 @@ def test_visit_metacpan_api_projects(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = cran.CranPackagesVisitors(uri) expected_loc = self.get_test_loc('cran/expected_cran_pacakges.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) class CranMapperTest(JsonBasedTesting, DjangoTestCase): @@ -45,7 +46,7 @@ def test_build_packages_from_directory_listing(self): packages = mappers.cran.build_packages_from_html(metadata, 'https://cloud.r-project.org/web/packages/ANN2/index.html', 'pkg:cran/ANN2') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('cran/mapper_ANN2_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=True) def test_build_packages_from_directory_listing2(self): ResourceURI.objects.create(uri='https://cloud.r-project.org/web/packages/abe/index.html') @@ -54,7 +55,7 @@ def test_build_packages_from_directory_listing2(self): packages = mappers.cran.build_packages_from_html(metadata, 'https://cloud.r-project.org/web/packages/abe/index.htm', 'pkg:cran/abe') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('cran/mapper_abe_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=True) def test_replace_downloadurl(self): url = "../../../src/contrib/Archive/ANN2" diff --git a/minecode/tests/test_debian.py b/minecode/tests/test_debian.py index e208927c..ea3b93c4 100644 --- a/minecode/tests/test_debian.py +++ b/minecode/tests/test_debian.py @@ -23,12 +23,13 @@ from minecode import debutils from minecode.mappers import debian as debian_mapper from minecode.visitors import debian as debian_visitor +from minecode.tests import FIXTURES_REGEN class BaseDebianTest(JsonBasedTesting): test_data_dir = os.path.join(os.path.dirname(__file__), 'testfiles') - def check_objects_expected(self, results, expected_loc, regen=False): + def check_objects_expected(self, results, expected_loc, regen=FIXTURES_REGEN): """ Check that an iterable of `results` against the expected results in the file at `expected_loc` location. @@ -54,7 +55,7 @@ def check_objects_expected(self, results, expected_loc, regen=False): expected = expect.read() self.assertEqual(expected, result) - def check_expected_deb822(self, deb_object, expected_loc, regen=False): + def check_expected_deb822(self, deb_object, expected_loc, regen=FIXTURES_REGEN): """ Check and compare the Debian `object` with the file at `expected_loc`. """ @@ -113,7 +114,7 @@ def test_parse_deb822_dsc(self): dsc_file = self.get_test_loc('debian/debutils/3dldf_2.0.3+dfsg-2.dsc') result = debcon.get_paragraph_data_from_file(dsc_file) expected_loc = self.get_test_loc('debian/debutils/3dldf_2.0.3+dfsg-2.dsc-expected') - self.check_expected_deb822(result, expected_loc, regen=False) + self.check_expected_deb822(result, expected_loc, regen=FIXTURES_REGEN) ################################################################# @@ -145,17 +146,15 @@ def test_comma_separated(self): class DebianReleaseTest(BaseDebianTest): - @expectedFailure def test_parse_release(self): release_file = self.get_test_loc('debian/release/Release') - result = debian_visitor.parse_release(release_file) + result = list(debian_visitor.parse_release(release_file)) expected_loc = self.get_test_loc('debian/release/Release_expected') self.check_expected_deb822(result, expected_loc) - @expectedFailure def test_parse_release_with_md5(self): release_file = self.get_test_loc('debian/release/Release_with_md5') - result = debian_visitor.parse_release(release_file) + result = list(debian_visitor.parse_release(release_file)) expected_loc = self.get_test_loc('debian/release/Release_with_md5_expected') self.check_expected_deb822(result, expected_loc) @@ -273,13 +272,13 @@ def test_collect_source_packages(self): index_file = self.get_test_loc('debian/sources/debian_Sources') source_info = [info for info in debian_visitor.collect_source_packages(index_file)] expected_loc = self.get_test_loc('debian/sources/debian_Sources_visit_expected') - self.check_objects_expected(source_info, expected_loc, regen=False) + self.check_objects_expected(source_info, expected_loc, regen=FIXTURES_REGEN) def test_collect_source_packages_ubuntu(self): index_file = self.get_test_loc('debian/sources/ubuntu_Sources') source_info = [info for info in debian_visitor.collect_source_packages(index_file)] expected_loc = self.get_test_loc('debian/sources/ubuntu_Sources_visit_expected') - self.check_objects_expected(source_info, expected_loc, regen=False) + self.check_objects_expected(source_info, expected_loc, regen=FIXTURES_REGEN) @expectedFailure def test_DebianSourcesVisitor(self): @@ -315,7 +314,7 @@ def test_parse_packages_index(self): index_file = self.get_test_loc('debian/packages/debian_Packages') package_info = [info for info in debian_visitor.parse_packages_index(index_file)] expected_loc = self.get_test_loc('debian/packages/debian_Packages-visit-expected.json') - self.check_objects_expected(package_info, expected_loc, regen=False) + self.check_objects_expected(package_info, expected_loc, regen=FIXTURES_REGEN) @expectedFailure def test_parse_packages_from_debian_Packages(self): @@ -323,7 +322,7 @@ def test_parse_packages_from_debian_Packages(self): packages = debian_mapper.parse_packages(packs.read()) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('debian/packages/debian_Packages-expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) @expectedFailure def test_parse_packages_from_ubuntu_Packages(self): @@ -331,7 +330,7 @@ def test_parse_packages_from_ubuntu_Packages(self): packages = debian_mapper.parse_packages(packs.read()) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('debian/packages/ubuntu_Packages-expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) @expectedFailure def test_parse_packages_from_installed_status(self): @@ -339,7 +338,7 @@ def test_parse_packages_from_installed_status(self): packages = debian_mapper.parse_packages(packs.read()) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('debian/packages/ubuntu_Packages-expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) class DebianLSLRTest(BaseDebianTest): diff --git a/minecode/tests/test_dockerhub.py b/minecode/tests/test_dockerhub.py index 336e082a..0dbde735 100644 --- a/minecode/tests/test_dockerhub.py +++ b/minecode/tests/test_dockerhub.py @@ -19,6 +19,7 @@ from minecode.utils_test import JsonBasedTesting from minecode.visitors import dockerhub +from minecode.tests import FIXTURES_REGEN from minecode import mappers @@ -32,13 +33,13 @@ class DockerHubVistorTest(DockerHubTest): def test_searching_condition(self): combinations = dockerhub.get_search_conditions() expected_file = self.get_test_loc('dockerhub/conditions_expected') - self.check_expected_results(combinations, expected_file, regen=False) + self.check_expected_results(combinations, expected_file, regen=FIXTURES_REGEN) def test_seeds(self): seed = dockerhub.DockerHubSeed() seeds = list(seed.get_seeds()) expected_file = self.get_test_loc('dockerhub/seeds_expected') - self.check_expected_results(seeds, expected_file, regen=False) + self.check_expected_results(seeds, expected_file, regen=FIXTURES_REGEN) def test_visit_dockerhub_exlpore_page(self): uri = 'https://hub.docker.com/explore/?page=1' @@ -48,7 +49,7 @@ def test_visit_dockerhub_exlpore_page(self): uris, _, _ = dockerhub.DockHubExplorePageVisitor(uri) expected_loc = self.get_test_loc( 'dockerhub/visitor_explore_page1_expected') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_visit_dockerhub_project(self): uri = 'https://hub.docker.com/_/elixir/' @@ -60,7 +61,7 @@ def test_visit_dockerhub_project(self): result = json.loads(data, object_pairs_hook=OrderedDict) expected_file = self.get_test_loc( 'dockerhub/visitor_library_elixir_expected') - self.check_expected_results(result, expected_file, regen=False) + self.check_expected_results(result, expected_file, regen=FIXTURES_REGEN) def test_visit_dockerhub_search_api(self): uri = 'https://index.docker.io/v1/search?q=1a&n=100&page=2' @@ -69,7 +70,7 @@ def test_visit_dockerhub_search_api(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = dockerhub.DockHubLibraryRESTJsonVisitor(uri) expected_loc = self.get_test_loc('dockerhub/visitor_search_expected') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) class DockerHubMapperTest(DockerHubTest): @@ -82,4 +83,4 @@ def test_build_packages_fromjson(self): packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc( 'dockerhub/expected_dockerhubmapper.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_eclipse.py b/minecode/tests/test_eclipse.py index 5e3e5c4f..8a0755c2 100644 --- a/minecode/tests/test_eclipse.py +++ b/minecode/tests/test_eclipse.py @@ -21,6 +21,7 @@ from minecode import mappers from minecode.visitors import URI from minecode.visitors import eclipse +from minecode.tests import FIXTURES_REGEN class EclipseVistorTest(JsonBasedTesting): @@ -33,7 +34,7 @@ def test_visit_eclipse_projects(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = eclipse.EclipseProjectVisitors(uri) expected_loc = self.get_test_loc('eclipse/eclipse_projects_expected') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_visit_eclipse_project(self): uri = 'https://projects.eclipse.org/projects/modeling.m2t.acceleo' @@ -51,7 +52,7 @@ def test_visit_eclipse_git_repo(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = eclipse.EclipseGitVisitor(uri) expected_loc = self.get_test_loc('eclipse/eclipse_git_repos_expected') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_visit_eclipse_packages(self): uri = 'http://www.eclipse.org/downloads/packages/all' @@ -60,7 +61,7 @@ def test_visit_eclipse_packages(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = eclipse.EclipsePackagesVisitor(uri) expected_loc = self.get_test_loc('eclipse/eclipse_packages_expected') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_visit_eclipse_package_releases(self): uri = 'http://www.eclipse.org/downloads/packages/release/Neon/R' @@ -69,7 +70,7 @@ def test_visit_eclipse_package_releases(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = eclipse.EclipseReleaseVisitor(uri) expected_loc = self.get_test_loc('eclipse/Neon_R-expected.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_visit_eclipse_projects_json(self): uri = 'http://projects.eclipse.org/json/projects/all' @@ -85,7 +86,7 @@ def test_visit_eclipse_projects_json(self): self.assertEqual(expected_uris, list(uris)) expected_loc = self.get_test_loc('eclipse/birt-expected.json') - self.check_expected_results(data, expected_loc, regen=False) + self.check_expected_results(data, expected_loc, regen=FIXTURES_REGEN) @unittest.skip('This requires a live internet connection to test requests timeouts') def test_visitor_eclipse_projects_json_download_timeout_error(self): @@ -107,7 +108,7 @@ def test_build_packages(self): packages = mappers.eclipse.build_packages_with_json(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('eclipse/eclipse_birt_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_eclipse_html_packages(self): with open(self.get_test_loc('eclipse/Acceleo_projects.eclipse.org.html')) as eclipse_metadata: @@ -115,4 +116,4 @@ def test_build_eclipse_html_packages(self): packages = mappers.eclipse.build_packages(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('eclipse/Acceleo_projects_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_fdroid.py b/minecode/tests/test_fdroid.py index 8a09509c..2405ad97 100644 --- a/minecode/tests/test_fdroid.py +++ b/minecode/tests/test_fdroid.py @@ -18,6 +18,7 @@ from minecode.mappers import fdroid as fdroid_mapper from minecode.visitors import fdroid as fdroid_visitor from minecode.visitors import URI +from minecode.tests import FIXTURES_REGEN class TestFdroidVisitor(JsonBasedTesting): @@ -33,7 +34,7 @@ def test_FdroidPackageRepoVisitor(self): # this is a non-persistent visitor, lets make sure we dont return any data assert not data expected_loc = self.get_test_loc('fdroid/index-v2-expected-visit.json',) - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) class TestFdroidMapper(JsonBasedTesting): @@ -52,4 +53,4 @@ def test_build_packages(self): packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('fdroid/index-v2-visited-expected-mapped.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_freebsd.py b/minecode/tests/test_freebsd.py index 27fdda28..7632d356 100644 --- a/minecode/tests/test_freebsd.py +++ b/minecode/tests/test_freebsd.py @@ -19,6 +19,7 @@ from minecode import mappers from minecode.visitors import freebsd +from minecode.tests import FIXTURES_REGEN class FreeBSDVistorTest(JsonBasedTesting): @@ -31,7 +32,7 @@ def test_visit_freebsd_seed(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = freebsd.FreeBSDBaseHTMLVisitors(uri) expected_loc = self.get_test_loc('freebsd/FreeBSD.org.html_expected') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_visit_freebsd_subHTML(self): uri = 'https://pkg.freebsd.org/FreeBSD:10:i386/release_0/' @@ -40,7 +41,7 @@ def test_visit_freebsd_subHTML(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = freebsd.FreeBSDSubHTMLVisitors(uri) expected_loc = self.get_test_loc('freebsd/FreeBSD-10-i386_release_0_.html_expected') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_visit_freebsd_indexvisitor(self): uri = 'https://pkg.freebsd.org/FreeBSD:10:i386/release_0/packagesite.txz' @@ -49,7 +50,7 @@ def test_visit_freebsd_indexvisitor(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) _, data, _ = freebsd.FreeBSDIndexVisitors(uri) expected_loc = self.get_test_loc('freebsd/indexfile_expected') - self.check_expected_results(data, expected_loc, regen=False) + self.check_expected_results(data, expected_loc, regen=FIXTURES_REGEN) class FreedesktopMapperTest(JsonBasedTesting): @@ -62,4 +63,4 @@ def test_map_index_file(self): packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc( 'freebsd/indexfile_expected_mapper.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_freedesktop.py b/minecode/tests/test_freedesktop.py index a67a2bd3..896ee593 100644 --- a/minecode/tests/test_freedesktop.py +++ b/minecode/tests/test_freedesktop.py @@ -17,6 +17,7 @@ from minecode import mappers from minecode.visitors import freedesktop +from minecode.tests import FIXTURES_REGEN class FreedesktopTest(JsonBasedTesting): @@ -47,7 +48,7 @@ def test_map_software_html_page_hal(self): purl='pkg:freedesktop/hal') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('freedesktop/hal_project_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_map_software_html_page_libinput(self): with open(self.get_test_loc('freedesktop/libinput.html')) as freedesktop_metadata: @@ -58,4 +59,4 @@ def test_map_software_html_page_libinput(self): purl='pkg:freedesktop/libinput') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('freedesktop/libinput_project_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_github.py b/minecode/tests/test_github.py index 8ee5ff08..dbf9ebb9 100644 --- a/minecode/tests/test_github.py +++ b/minecode/tests/test_github.py @@ -23,6 +23,7 @@ from minecode import mappers from minecode.visitors import github +from minecode.tests import FIXTURES_REGEN class GithubVisitorTest(JsonBasedTesting): @@ -87,7 +88,7 @@ def test_GithubRepoVisitor(self, mock_get_repo): uri = 'https://api.github.com/repos/mojombo/grit' _, data, _ = github.GithubSingleRepoVisitor(uri) expected_loc = self.get_test_loc('github/mojombo_grit_expected.json') - self.check_expected_results(data, expected_loc, regen=False) + self.check_expected_results(data, expected_loc, regen=FIXTURES_REGEN) @patch('github.MainClass.Github.get_repo') def test_GithubRepoVisitor_without_tag_without_download(self, mock_get_repo): @@ -127,7 +128,7 @@ def test_GithubRepoVisitor_without_tag_without_download(self, mock_get_repo): uri = 'https://api.github.com/repos/collectiveidea/calendar_builder' _, data, _ = github.GithubSingleRepoVisitor(uri) expected_loc = self.get_test_loc('github/calendar_builder-expected.json') - self.check_expected_results(data, expected_loc, regen=False) + self.check_expected_results(data, expected_loc, regen=FIXTURES_REGEN) def test_GithubReposVisitor(self): uri = 'https://api.github.com/repositories?since=0' @@ -148,7 +149,7 @@ def test_github_repo_mapper1(self): packages = mappers.github.build_github_packages(metadata, 'https://api.github.com/repos/collectiveidea/calendar_builder') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('github/mapper_calendar_builder_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_github_repo_mapper2(self): with open(self.get_test_loc('github/mojombo_grit_from_visitor_4mapper_input.json')) as json_metadata: @@ -156,4 +157,4 @@ def test_github_repo_mapper2(self): packages = mappers.github.build_github_packages(metadata, 'https://api.github.com/repos/mojombo/grit') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('github/mojombo_grit_result_mapper_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_gitlab.py b/minecode/tests/test_gitlab.py index 4afe7796..368c7192 100644 --- a/minecode/tests/test_gitlab.py +++ b/minecode/tests/test_gitlab.py @@ -17,6 +17,7 @@ from minecode.utils_test import JsonBasedTesting from minecode.visitors import gitlab +from minecode.tests import FIXTURES_REGEN from minecode import mappers @@ -42,7 +43,7 @@ def test_visit_metacpan_api_projects(self): uris, _, _ = gitlab.GitlabAPIVisitor(uri) expected_loc = self.get_test_loc( 'gitlab/expected_projects_visitor.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) class GitlabMapperTest(JsonBasedTesting): @@ -55,4 +56,4 @@ def test_map_software_html_page_hal(self): packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc( 'gitlab/microservice-express-mongo_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_golang.py b/minecode/tests/test_golang.py index 1dc9ea42..02113875 100644 --- a/minecode/tests/test_golang.py +++ b/minecode/tests/test_golang.py @@ -22,6 +22,7 @@ from minecode.visitors.golang import GodocSearchVisitor from minecode.visitors.golang import parse_package_path from minecode.mappers.golang import build_golang_package +from minecode.tests import FIXTURES_REGEN class GoLangVisitorTest(JsonBasedTesting): @@ -34,7 +35,7 @@ def test_GoLangGoDocAPIVisitor(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = GodocIndexVisitor(uri) expected_loc = self.get_test_loc('golang/packages_expected_uris.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_GodocSearchVisitor(self): uri = 'https://api.godoc.org/search?q=github.com/golang' @@ -43,7 +44,7 @@ def test_GodocSearchVisitor(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = GodocSearchVisitor(uri) expected_loc = self.get_test_loc('golang/godoc_search_expected_uris.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_GodocSearchVisitor_with_non_github_urls(self): uri = 'https://api.godoc.org/search?q=github.com/golang*' @@ -52,7 +53,7 @@ def test_GodocSearchVisitor_with_non_github_urls(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = GodocSearchVisitor(uri) expected_loc = self.get_test_loc('golang/godoc_search_off_github_expected_uris.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_parse_package_path(self): test_path = 'github.com/lambdasoup/go-netlink/log' @@ -73,7 +74,7 @@ def test_build_golang_package(self): package = build_golang_package(package_data, purl) package = package.to_dict() expected_loc = self.get_test_loc('golang/glog_expected.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_build_golang_package_bitbucket(self): purl = 'pkg:bitbucket/bitbucket.org/zombiezen/yaml?vcs_repository=https://bitbucket.org/zombiezen/yaml' @@ -82,7 +83,7 @@ def test_build_golang_package_bitbucket(self): package = build_golang_package(package_data, purl) package = package.to_dict() expected_loc = self.get_test_loc('golang/math3_expected.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_build_golang_package_non_well_known(self): purl = 'pkg:golang/winterdrache.de/bindings/sdl' @@ -91,4 +92,4 @@ def test_build_golang_package_non_well_known(self): package = build_golang_package(package_data, purl) package = package.to_dict() expected_loc = self.get_test_loc('golang/winter_expected.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_googlecode.py b/minecode/tests/test_googlecode.py index 9135d8ea..9eb704e7 100644 --- a/minecode/tests/test_googlecode.py +++ b/minecode/tests/test_googlecode.py @@ -20,6 +20,7 @@ from minecode import mappers from minecode.visitors import URI from minecode.visitors import googlecode +from minecode.tests import FIXTURES_REGEN class GoogleNewAPIVisitorsTest(JsonBasedTesting): @@ -67,7 +68,7 @@ def test_visit_google_json(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = googlecode.GoogleDownloadsPageJsonVisitor(uri) expected_loc = self.get_test_loc('googlecode/v2_api/hg4j_download_expected.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_visit_googleapi_project_json(self): uri = 'https://www.googleapis.com/storage/v1/b/google-code-archive/o/v2%2Fapache-extras.org%2F124799961-qian%2Fproject.json?alt=media' @@ -88,7 +89,7 @@ def test_build_packages_from_v2_projects_json(self): packages = mappers.googlecode.build_packages_from_projectsjson_v2(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('googlecode/v2_api/package_expected_project.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_packages_from_v1_projects_json(self): with open(self.get_test_loc('googlecode/v2_apache-extras.org_124799961-qian_project.json')) as projectsjson_meta: @@ -96,4 +97,4 @@ def test_build_packages_from_v1_projects_json(self): packages = mappers.googlecode.build_packages_from_projectsjson_v1(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('googlecode/mapper_expected_v2_apache-extras.org_124799961-qian_project.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_gstreamer.py b/minecode/tests/test_gstreamer.py index 845e9a35..bd8ab006 100644 --- a/minecode/tests/test_gstreamer.py +++ b/minecode/tests/test_gstreamer.py @@ -17,6 +17,7 @@ from minecode.utils_test import JsonBasedTesting from minecode.visitors import gstreamer +from minecode.tests import FIXTURES_REGEN from minecode import mappers @@ -54,4 +55,4 @@ def test_build_package_from_url(self): packages = mappers.gstreamer.build_package_from_url('https://gstreamer.freedesktop.org/src/gst-openmax/pre/gst-openmax-0.10.0.2.tar.bz2') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('gstreamer/mapper_build_from_url-expected') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_haxe.py b/minecode/tests/test_haxe.py index ad4564a1..116b666e 100644 --- a/minecode/tests/test_haxe.py +++ b/minecode/tests/test_haxe.py @@ -18,6 +18,7 @@ from minecode import mappers from minecode.visitors import haxe +from minecode.tests import FIXTURES_REGEN class HaxeVistorTest(JsonBasedTesting): @@ -30,7 +31,7 @@ def test_visit_haxe_projects(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = haxe.HaxeProjectsVisitor(uri) expected_loc = self.get_test_loc('haxe/all_haxelibs.html-expected') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_visit_haxe_versions(self): uri = 'https://lib.haxe.org/p/openfl/versions' @@ -39,7 +40,7 @@ def test_visit_haxe_versions(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = haxe.HaxeVersionsVisitor(uri) expected_loc = self.get_test_loc('haxe/all_versions_openfl.html-expected') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_visit_haxe_package_json(self): uri = 'https://lib.haxe.org/p/openfl/8.5.1/raw-files/openfl/package.json' @@ -48,7 +49,7 @@ def test_visit_haxe_package_json(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) _, data, _ = haxe.HaxePackageJsonVisitor(uri) expected_loc = self.get_test_loc('haxe/openfl-8.5.1-package.json-expected') - self.check_expected_results(data, expected_loc, regen=False) + self.check_expected_results(data, expected_loc, regen=FIXTURES_REGEN) class HaxeMappersTest(JsonBasedTesting): @@ -60,4 +61,4 @@ def test_build_project_package_json(self): packages = mappers.haxe.build_packages_with_json(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('haxe/project_package.json-expected') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_housekeeping.py b/minecode/tests/test_housekeeping.py index 8796a4c1..62b87077 100644 --- a/minecode/tests/test_housekeeping.py +++ b/minecode/tests/test_housekeeping.py @@ -27,6 +27,7 @@ from minecode.management.commands.run_visit import visit_uri from minecode.models import ResourceURI +from minecode.tests import FIXTURES_REGEN class PackageLicenseCheckTest(JsonBasedTesting, DjangoTestCase): @@ -41,7 +42,7 @@ def test_find_ambiguous_packages_declared_license(self): ) packages = [p.to_dict() for p in find_ambiguous_packages()] expected_loc = self.get_test_loc('housekeeping/declared_license_search_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_find_ambiguous_packages_license_expression(self): packagedb.models.Package.objects.create( @@ -53,7 +54,7 @@ def test_find_ambiguous_packages_license_expression(self): packages = [p.to_dict() for p in find_ambiguous_packages()] expected_loc = self.get_test_loc('housekeeping/license_expression_search_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_find_ambiguous_packages_license_expression_ignore_uppercase(self): packagedb.models.Package.objects.create( @@ -66,7 +67,7 @@ def test_find_ambiguous_packages_license_expression_ignore_uppercase(self): expected_loc = self.get_test_loc('housekeeping/ignore_upper_case_search_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_run_check_licenses_command(self): packagedb.models.Package.objects.create( @@ -84,7 +85,7 @@ def test_run_check_licenses_command(self): with open(results_loc) as results: res = json.load(results) - self.check_expected_results(res, expected_loc, regen=False) + self.check_expected_results(res, expected_loc, regen=FIXTURES_REGEN) def test_run_check_licenses_command_with_empty_package(self): output = StringIO() @@ -105,4 +106,4 @@ def test_visit_and_map_using_pom(self): map_uri(resource_uri) packages = [p.to_dict() for p in find_ambiguous_packages()] expected_loc = self.get_test_loc('housekeeping/bytejta-supports-0.5.0-ALPHA4.pom_search_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_indexing.py b/minecode/tests/test_indexing.py index 24d46b45..e502e6d4 100644 --- a/minecode/tests/test_indexing.py +++ b/minecode/tests/test_indexing.py @@ -16,6 +16,7 @@ from minecode.models import ScannableURI from minecode.utils_test import MiningTestCase from minecode.utils_test import JsonBasedTesting +from minecode.tests import FIXTURES_REGEN from packagedb.models import Package from packagedb.models import Resource @@ -41,7 +42,7 @@ def test_indexing_index_package_files(self): self.assertEqual(64, len(result)) results = [r.to_dict() for r in result] expected_resources_loc = self.get_test_loc('scancodeio/get_scan_data_expected_resources.json') - self.check_expected_results(results, expected_resources_loc, regen=False) + self.check_expected_results(results, expected_resources_loc, regen=FIXTURES_REGEN) def test_indexing_index_package(self): scan_data_loc = self.get_test_loc('scancodeio/get_scan_data.json') diff --git a/minecode/tests/test_ls.py b/minecode/tests/test_ls.py index 79d43d5d..637a7a05 100644 --- a/minecode/tests/test_ls.py +++ b/minecode/tests/test_ls.py @@ -13,6 +13,7 @@ import os from minecode.utils_test import JsonBasedTesting +from minecode.tests import FIXTURES_REGEN from minecode import ls @@ -30,7 +31,7 @@ def test_remove_inode_works_even_with_space_at_line_start(self): expected = u'drwxrwxr-x 4 svnwc svnwc 4096 May 4 15:57 ./perl' self.assertEqual(expected, ls.remove_inode(test)) - def check_listing(self, test_file, expected_file, from_find=True, regen=False): + def check_listing(self, test_file, expected_file, from_find=True, regen=FIXTURES_REGEN): test_file = self.get_test_loc(test_file) test_text = open(test_file).read() results = list(ls.parse_directory_listing(test_text, from_find=from_find)) @@ -47,20 +48,20 @@ def check_listing(self, test_file, expected_file, from_find=True, regen=False): def test_parse_listing_from_findls(self): test_file = 'directories/find-ls' expected_file = 'directories/find-ls-expected.json' - self.check_listing(test_file, expected_file, from_find=True, regen=False) + self.check_listing(test_file, expected_file, from_find=True, regen=FIXTURES_REGEN) def test_parse_listing_from_findls_from_apache_does_not_fail_on_first_line(self): test_file = 'directories/find-ls-apache-start' expected_file = 'directories/find-ls-apache-start-expected.json' - self.check_listing(test_file, expected_file, from_find=True, regen=False) + self.check_listing(test_file, expected_file, from_find=True, regen=FIXTURES_REGEN) def test_parse_listing_from_lslr(self): test_file = 'directories/ls-lr' expected_file = 'directories/ls-lr-expected.json' - self.check_listing(test_file, expected_file, from_find=False, regen=False) + self.check_listing(test_file, expected_file, from_find=False, regen=FIXTURES_REGEN) def test_parse_listing_from_lslr_at_ubuntu(self): test_file = 'directories/ls-lr-ubuntu' expected_file = 'directories/ls-lr-ubuntu-expected.json' self.maxDiff = None - self.check_listing(test_file, expected_file, from_find=False, regen=False) + self.check_listing(test_file, expected_file, from_find=False, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_maven.py b/minecode/tests/test_maven.py index 2375f20b..29ca649a 100644 --- a/minecode/tests/test_maven.py +++ b/minecode/tests/test_maven.py @@ -25,6 +25,7 @@ from minecode.utils_test import JsonBasedTesting from minecode.utils_test import model_to_dict from minecode.visitors import maven as maven_visitor +from minecode.tests import FIXTURES_REGEN import packagedb from packagedcode.maven import _parse @@ -54,7 +55,7 @@ def test_get_entries(self): fields = set(fields) result = list(maven_visitor.get_entries(index, fields=fields)) expected_loc = self.get_test_loc('maven/index/expected_entries.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) def test_get_entries_increment(self): index = self.get_test_loc('maven/index/increment/nexus-maven-repository-index.445.gz') @@ -62,7 +63,7 @@ def test_get_entries_increment(self): fields = set(fields) result = list(maven_visitor.get_entries(index, fields=fields)) expected_loc = self.get_test_loc('maven/index/increment/expected_entries.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) def test_get_entries_buggy(self): index = self.get_test_loc('maven/index/buggy/nexus-maven-repository-index.gz') @@ -70,7 +71,7 @@ def test_get_entries_buggy(self): fields = set(fields) result = list(maven_visitor.get_entries(index, fields=fields)) expected_loc = self.get_test_loc('maven/index/buggy/expected_entries.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) def test_get_artifacts_full(self): index = self.get_test_loc('maven/index/nexus-maven-repository-index.gz') @@ -84,7 +85,7 @@ def test_get_artifacts_full(self): result = [a.to_dict() for a in maven_visitor.get_artifacts(index, fields, include_all=True)] expected_loc = self.get_test_loc('maven/index/expected_artifacts.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) def test_get_artifacts_increment(self): index = self.get_test_loc('maven/index/increment/nexus-maven-repository-index.445.gz') @@ -92,7 +93,7 @@ def test_get_artifacts_increment(self): fields = set(fields) result = [a.to_dict() for a in maven_visitor.get_artifacts(index, fields, include_all=True)] expected_loc = self.get_test_loc('maven/index/increment/expected_artifacts.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) def test_get_artifacts_buggy(self): index = self.get_test_loc('maven/index/buggy/nexus-maven-repository-index.gz') @@ -100,7 +101,7 @@ def test_get_artifacts_buggy(self): fields = set(fields) result = [a.to_dict() for a in maven_visitor.get_artifacts(index, fields, include_all=True)] expected_loc = self.get_test_loc('maven/index/buggy/expected_artifacts.json') - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) def test_get_artifacts_defaults(self): index = self.get_test_loc('maven/index/nexus-maven-repository-index.gz') @@ -205,7 +206,7 @@ def test_MavenNexusIndexVisitor_uris(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _data, _errors = maven_visitor.MavenNexusIndexVisitor(uri) expected_loc = self.get_test_loc('maven/index/expected_uris.json') - self.check_expected_uris(uris, expected_loc, data_is_json=True, regen=False) + self.check_expected_uris(uris, expected_loc, data_is_json=True, regen=FIXTURES_REGEN) def test_MavenNexusIndexPropertiesVisitor(self): uri = 'https://repo1.maven.org/maven2/.index/nexus-maven-repository-index.properties' @@ -214,7 +215,7 @@ def test_MavenNexusIndexPropertiesVisitor(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _data, _errors = maven_visitor.MavenNexusPropertiesVisitor(uri) expected_loc = self.get_test_loc('maven/index/increment/expected_properties_uris.json') - self.check_expected_uris(uris, expected_loc, data_is_json=True, regen=False) + self.check_expected_uris(uris, expected_loc, data_is_json=True, regen=FIXTURES_REGEN) def test_MavenNexusIndexVisitor_uris_increment(self): uri = 'https://repo1.maven.org/maven2/.index/nexus-maven-repository-index.445.gz' @@ -223,7 +224,7 @@ def test_MavenNexusIndexVisitor_uris_increment(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _data, _errors = maven_visitor.MavenNexusIndexVisitor(uri) expected_loc = self.get_test_loc('maven/index/increment/expected_uris.json') - self.check_expected_uris(uris, expected_loc, data_is_json=True, regen=False) + self.check_expected_uris(uris, expected_loc, data_is_json=True, regen=FIXTURES_REGEN) def test_MavenNexusIndexVisitor_uris_buggy(self): uri = 'https://repo1.maven.org/maven2/.index/nexus-maven-repository-index.gz' @@ -232,7 +233,7 @@ def test_MavenNexusIndexVisitor_uris_buggy(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _data, _errors = maven_visitor.MavenNexusIndexVisitor(uri) expected_loc = self.get_test_loc('maven/index/buggy/expected_uris.json') - self.check_expected_uris(uris, expected_loc, data_is_json=True, regen=False) + self.check_expected_uris(uris, expected_loc, data_is_json=True, regen=FIXTURES_REGEN) def test_visit_uri_does_not_fail_on_incorrect_sha1(self): uri = 'https://repo1.maven.org/maven2/.index/nexus-maven-repository-index.gz' @@ -252,7 +253,7 @@ def test_visit_uri_does_not_fail_on_incorrect_sha1(self): results = [model_to_dict(rec, fields=['uri', 'sha1']) for rec in visited] results = sorted(results, key=itemgetter('uri')) expected_loc = self.get_test_loc('maven/index/buggy/expected_visited_uris.json') - self.check_expected_results(results, expected_loc, regen=False) + self.check_expected_results(results, expected_loc, regen=FIXTURES_REGEN) visited.delete() def test_MavenPOMVisitor_data(self): @@ -289,7 +290,7 @@ def test_MavenNexusIndexVisitor_with_run_visit_then_map_end2end(self): results = list(model_to_dict(rec, exclude=['id']) for rec in visited) results = sorted(results, key=itemgetter('uri')) expected_loc = self.get_test_loc('maven/end2end/expected_visited_uris.json') - self.check_expected_results(results, expected_loc, regen=False) + self.check_expected_results(results, expected_loc, regen=FIXTURES_REGEN) pre_visited_uris = ResourceURI.objects.filter( uri__contains='maven-index://').exclude(id__in=before) @@ -313,7 +314,7 @@ def test_MavenNexusIndexVisitor_with_run_visit_then_map_end2end(self): package_results = list(pac.to_dict() for pac in newly_mapped) expected_loc = self.get_test_loc('maven/end2end/expected_mapped_packages.json') - self.check_expected_results(package_results, expected_loc, fields_to_remove=['package_sets'], regen=False) + self.check_expected_results(package_results, expected_loc, fields_to_remove=['package_sets'], regen=FIXTURES_REGEN) # check that the map status has been updated correctly visited_then_mapped = ResourceURI.objects.filter(uri__contains='maven-index://') @@ -341,7 +342,7 @@ def test_visit_and_map_using_pom_with_unicode(self): uri_results = sorted(model_to_dict(rec, exclude=['id']) for rec in visited) expected_loc = self.get_test_loc('maven/end2end_unicode/expected_visited_commons-jaxrs-1.22.json') - self.check_expected_results(uri_results, expected_loc, regen=False) + self.check_expected_results(uri_results, expected_loc, regen=FIXTURES_REGEN) if before_pkg: mapped = packagedb.models.Package.objects.exclude(id__in=before_pkg) @@ -350,7 +351,7 @@ def test_visit_and_map_using_pom_with_unicode(self): package_results = sorted(pac.to_dict() for pac in mapped) expected_loc = self.get_test_loc('maven/end2end_unicode/expected_mapped_commons-jaxrs-1.22.json') - self.check_expected_results(package_results, expected_loc, regen=False) + self.check_expected_results(package_results, expected_loc, regen=FIXTURES_REGEN) def test_visit_and_map_using_pom_with_unicode_multisteps(self): # this test deals with a single POM and the results from @@ -373,7 +374,7 @@ def test_visit_and_map_using_pom_with_unicode_multisteps(self): package_results = sorted((pac.to_dict() for pac in mapped), key=lambda d: list(d.keys())) expected_loc = self.get_test_loc('maven/end2end_multisteps/expected_mapped_commons-jaxrs-1.21-from-index.json') - self.check_expected_results(package_results, expected_loc, fields_to_remove=['package_sets'], regen=False) + self.check_expected_results(package_results, expected_loc, fields_to_remove=['package_sets'], regen=FIXTURES_REGEN) # Step 2: map a POM @@ -390,7 +391,7 @@ def test_visit_and_map_using_pom_with_unicode_multisteps(self): package_results = sorted((pac.to_dict() for pac in mapped), key=lambda d: list(d.keys())) expected_loc = self.get_test_loc('maven/end2end_multisteps/expected_mapped_commons-jaxrs-1.21-from-pom.json') - self.check_expected_results(package_results, expected_loc, fields_to_remove=['package_sets'], regen=False) + self.check_expected_results(package_results, expected_loc, fields_to_remove=['package_sets'], regen=FIXTURES_REGEN) def test_visit_and_map_with_index(self): uri = 'https://repo1.maven.org/maven2/.index/nexus-maven-repository-index.properties' @@ -413,7 +414,7 @@ def test_visit_and_map_with_index(self): uri_results = list(model_to_dict(rec, exclude=['id']) for rec in visited) expected_loc = self.get_test_loc('maven/end2end_index/expected_visited_index.json') - self.check_expected_results(uri_results, expected_loc, regen=False) + self.check_expected_results(uri_results, expected_loc, regen=FIXTURES_REGEN) uri = 'https://repo1.maven.org/maven2/.index/nexus-maven-repository-index.543.gz' # Use a small index file for test cases @@ -432,7 +433,7 @@ def test_visit_and_map_with_index(self): uri_results = list(model_to_dict(rec, exclude=['id']) for rec in visited) expected_loc = self.get_test_loc('maven/end2end_index/expected_visited_increment_index.json') - self.check_expected_results(uri_results, expected_loc, regen=False) + self.check_expected_results(uri_results, expected_loc, regen=FIXTURES_REGEN) class MavenXmlMetadataVisitorTest(JsonBasedTesting): @@ -491,7 +492,7 @@ def test_visit_and_build_package_from_pom_axis(self): _, data, _ = maven_visitor.MavenPOMVisitor(uri) package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/mapper/axis-1.4.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_visit_and_build_package_from_pom_commons_pool(self): uri = 'https://repo1.maven.org/maven2/commons-pool/commons-pool/1.5.7/commons-pool-1.5.7.pom' @@ -501,7 +502,7 @@ def test_visit_and_build_package_from_pom_commons_pool(self): _, data, _ = maven_visitor.MavenPOMVisitor(uri) package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/mapper/commons-pool-1.5.7.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_visit_and_build_package_from_pom_struts(self): uri = 'https://repo1.maven.org/maven2/struts-menu/struts-menu/2.4.2/struts-menu-2.4.2.pom' @@ -511,7 +512,7 @@ def test_visit_and_build_package_from_pom_struts(self): _, data, _ = maven_visitor.MavenPOMVisitor(uri) package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/mapper/struts-menu-2.4.2.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_visit_and_build_package_from_pom_mysql(self): uri = 'https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.27/mysql-connector-java-5.1.27.pom' @@ -521,7 +522,7 @@ def test_visit_and_build_package_from_pom_mysql(self): _, data, _ = maven_visitor.MavenPOMVisitor(uri) package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/mapper/mysql-connector-java-5.1.27.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_visit_and_build_package_from_pom_xbean(self): uri = 'https://repo1.maven.org/maven2/xbean/xbean-jmx/2.0/xbean-jmx-2.0.pom' @@ -531,7 +532,7 @@ def test_visit_and_build_package_from_pom_xbean(self): _, data, _ = maven_visitor.MavenPOMVisitor(uri) package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/mapper/xbean-jmx-2.0.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_visit_and_build_package_from_pom_maven_all(self): uri = 'https://repo1.maven.org/maven2/date/yetao/maven/maven-all/1.0-RELEASE/maven-all-1.0-RELEASE.pom' @@ -541,7 +542,7 @@ def test_visit_and_build_package_from_pom_maven_all(self): _, data, _ = maven_visitor.MavenPOMVisitor(uri) package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/mapper/maven-all-1.0-RELEASE.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_visit_and_build_package_from_pom_with_unicode(self): uri = 'https://repo1.maven.org/maven2/edu/psu/swe/commons/commons-jaxrs/1.21/commons-jaxrs-1.21.pom' @@ -551,7 +552,7 @@ def test_visit_and_build_package_from_pom_with_unicode(self): _, data, _ = maven_visitor.MavenPOMVisitor(uri) package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/mapper/commons-jaxrs-1.21.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) class MavenMapperGetPackageTest(JsonBasedTesting, DjangoTestCase): @@ -562,91 +563,91 @@ def test_get_package_from_pom_1(self): data = open(test_loc).read() package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/parsing/parse/jds-3.0.1.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_get_package_from_pom_2(self): test_loc = self.get_test_loc('maven/parsing/parse/springmvc-rest-docs-maven-plugin-1.0-RC1.pom') data = open(test_loc).read() package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/parsing/parse/springmvc-rest-docs-maven-plugin-1.0-RC1.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_get_package_from_pom_3(self): test_loc = self.get_test_loc('maven/parsing/parse/jds-2.17.0718b.pom') data = open(test_loc).read() package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/parsing/parse/jds-2.17.0718b.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_get_package_from_pom_4(self): test_loc = self.get_test_loc('maven/parsing/parse/maven-javanet-plugin-1.7.pom') data = open(test_loc).read() package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/parsing/parse/maven-javanet-plugin-1.7.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_get_package_from_pom_5(self): test_loc = self.get_test_loc('maven/parsing/loop/coreplugin-1.0.0.pom') data = open(test_loc).read() package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/parsing/loop/coreplugin-1.0.0.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_get_package_from_pom_6(self): test_loc = self.get_test_loc('maven/parsing/loop/argus-webservices-2.7.0.pom') data = open(test_loc).read() package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/parsing/loop/argus-webservices-2.7.0.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_get_package_from_pom_7(self): test_loc = self.get_test_loc('maven/parsing/loop/pkg-2.0.13.1005.pom') data = open(test_loc).read() package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/parsing/loop/pkg-2.0.13.1005.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_get_package_from_pom_8(self): test_loc = self.get_test_loc('maven/parsing/loop/ojcms-beans-0.1-beta.pom') data = open(test_loc).read() package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/parsing/loop/ojcms-beans-0.1-beta.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_get_package_from_pom_9(self): test_loc = self.get_test_loc('maven/parsing/loop/jacuzzi-annotations-0.2.1.pom') data = open(test_loc).read() package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/parsing/loop/jacuzzi-annotations-0.2.1.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_get_package_from_pom_10(self): test_loc = self.get_test_loc('maven/parsing/loop/argus-webservices-2.8.0.pom') data = open(test_loc).read() package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/parsing/loop/argus-webservices-2.8.0.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_get_package_from_pom_11(self): test_loc = self.get_test_loc('maven/parsing/loop/jacuzzi-database-0.2.1.pom') data = open(test_loc).read() package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/parsing/loop/jacuzzi-database-0.2.1.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_get_package_from_pom_12(self): test_loc = self.get_test_loc('maven/parsing/empty/common-object-1.0.2.pom') data = open(test_loc).read() package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/parsing/empty/common-object-1.0.2.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_get_package_from_pom_13(self): test_loc = self.get_test_loc('maven/parsing/empty/osgl-http-1.1.2.pom') data = open(test_loc).read() package = maven_mapper.get_package(data).to_dict() expected_loc = self.get_test_loc('maven/parsing/empty/osgl-http-1.1.2.pom.package.json') - self.check_expected_results(package, expected_loc, regen=False) + self.check_expected_results(package, expected_loc, regen=FIXTURES_REGEN) def test_regex_maven_pom_mapper_1(self): regex = re.compile(r'^https?://repo1.maven.org/maven2/.*\.pom$') @@ -661,7 +662,7 @@ def test_MavenNexusIndexVisitor_uris_increment_contain_correct_purl(self): uris, _data, _errors = maven_visitor.MavenNexusIndexVisitor(uri) uris = [u for i, u in enumerate(uris) if i % 500 == 0] expected_loc = self.get_test_loc('maven/index/increment2/expected_uris.json') - self.check_expected_uris(uris, expected_loc, data_is_json=True, regen=False) + self.check_expected_uris(uris, expected_loc, data_is_json=True, regen=FIXTURES_REGEN) def test_MavenNexusIndexVisitor_then_get_mini_package_from_index_data(self): uri = 'https://repo1.maven.org/maven2/.index/nexus-maven-repository-index.457.gz' @@ -676,7 +677,7 @@ def test_MavenNexusIndexVisitor_then_get_mini_package_from_index_data(self): minip = maven_mapper.get_mini_package(u.data, u.uri, u.package_url) results.append(minip and minip.to_dict() or minip) expected_loc = self.get_test_loc('maven/index/increment2/expected_mini_package.json') - self.check_expected_results(results, expected_loc, regen=False) + self.check_expected_results(results, expected_loc, regen=FIXTURES_REGEN) def test_get_package_from_pom_does_create_a_correct_qualifier(self): 'https://repo1.maven.org/maven2/org/hspconsortium/reference/hspc-reference-auth-server-webapp/1.9.1/hspc-reference-auth-server-webapp-1.9.1.pom' @@ -688,8 +689,8 @@ class MavenPriorityQueueTests(JsonBasedTesting, DjangoTestCase): def setUp(self): super(MavenPriorityQueueTests, self).setUp() - expected_pom_loc = self.get_test_loc('maven/pom/classworlds-1.1.pom') - with open(expected_pom_loc) as f: + self.expected_pom_loc = self.get_test_loc('maven/pom/classworlds-1.1.pom') + with open(self.expected_pom_loc) as f: self.expected_pom_contents = f.read() self.scan_package = _parse( @@ -699,7 +700,7 @@ def setUp(self): text=self.expected_pom_contents, ) - def test_get_pom_text(self, regen=False): + def test_get_pom_text(self, regen=FIXTURES_REGEN): pom_contents = maven_visitor.get_pom_text( namespace=self.scan_package.namespace, name=self.scan_package.name, @@ -760,7 +761,7 @@ def test_process_request(self): (purl_sources_str, sources_download_url), purls ) - def test_fetch_parent(self, regen=False): + def test_fetch_parent(self, regen=FIXTURES_REGEN): pom_loc = self.get_test_loc('maven/pom/ant-antlr-1.10.1.pom') with open(pom_loc) as f: pom_text = f.read() @@ -791,7 +792,7 @@ def test_get_ancestry(self): expected_ancestor_pom_texts.append(expected_pom_text) self.assertEqual(expected_ancestor_pom_texts, ancestor_pom_texts) - def test_merge_parent(self, regen=False): + def test_merge_parent(self, regen=FIXTURES_REGEN): pom_loc = self.get_test_loc('maven/pom/ant-antlr-1.10.1.pom') with open(pom_loc) as f: pom_text = f.read() @@ -817,7 +818,7 @@ def test_merge_parent(self, regen=False): expected_after_loc = self.get_test_loc('maven/pom/ant-antlr-1.10.1-package_after.json') self.check_expected_results(package.to_dict(), expected_after_loc, regen=regen) - def test_merge_ancestors(self, regen=False): + def test_merge_ancestors(self, regen=FIXTURES_REGEN): pom_loc = self.get_test_loc('maven/pom/pulsar-client-1x-2.5.1.pom') with open(pom_loc) as f: pom_text = f.read() @@ -845,7 +846,7 @@ def test_merge_ancestors(self, regen=False): self.check_expected_results(package.to_dict(), expected_after_loc, regen=regen) @mock.patch("minecode.visitors.maven.get_pom_text") - def test_get_merged_ancestor_package_from_maven_package(self, get_pom_text_mock, regen=False): + def test_get_merged_ancestor_package_from_maven_package(self, get_pom_text_mock, regen=FIXTURES_REGEN): get_pom_text_mock.return_value = "" ancestor_pom_texts = [] with patch("minecode.visitors.maven.get_ancestry") as mock_get_ancestry: diff --git a/minecode/tests/test_model_utils.py b/minecode/tests/test_model_utils.py index 2ad10150..7aaf74f6 100644 --- a/minecode/tests/test_model_utils.py +++ b/minecode/tests/test_model_utils.py @@ -16,6 +16,7 @@ from minecode.model_utils import update_or_create_resource from minecode.utils_test import JsonBasedTesting from minecode.utils_test import MiningTestCase +from minecode.tests import FIXTURES_REGEN from packagedb.models import Package from packagedb.models import Resource @@ -46,7 +47,7 @@ def test_merge_or_create_package_create_package(self): package.to_dict(), expected_loc, fields_to_remove=['package_sets'], - regen=False, + regen=FIXTURES_REGEN, ) def test_merge_or_create_package_merge_package(self): @@ -64,7 +65,7 @@ def test_merge_or_create_package_merge_package(self): package.to_dict(), before_merge_loc, fields_to_remove=['package_sets'], - regen=False, + regen=FIXTURES_REGEN, ) package, created, merged, map_error = merge_or_create_package( self.scanned_package, @@ -80,7 +81,7 @@ def test_merge_or_create_package_merge_package(self): package.to_dict(), expected_loc, fields_to_remove=['package_sets'], - regen=False, + regen=FIXTURES_REGEN, ) history = package.get_history() self.assertEqual(1, len(history)) @@ -96,7 +97,7 @@ def test_merge_or_create_package_merge_package(self): data = entry['data'] updated_fields = data['updated_fields'] expected_updated_fields_loc = self.get_test_loc('model_utils/expected_updated_fields.json') - self.check_expected_results(updated_fields, expected_updated_fields_loc, regen=False) + self.check_expected_results(updated_fields, expected_updated_fields_loc, regen=FIXTURES_REGEN) class UpdateORCreateResourceTest(TransactionTestCase): diff --git a/minecode/tests/test_npm.py b/minecode/tests/test_npm.py index 745aabe2..8ad5bb18 100644 --- a/minecode/tests/test_npm.py +++ b/minecode/tests/test_npm.py @@ -26,6 +26,7 @@ from minecode.utils_test import JsonBasedTesting from minecode.utils_test import mocked_requests_get from minecode.visitors import npm +from minecode.tests import FIXTURES_REGEN class TestNPMVisit(JsonBasedTesting): @@ -41,7 +42,7 @@ def test_NpmRegistryVisitor(self): # this is a non-persistent visitor, lets make sure we dont return any data assert not data expected_loc = self.get_test_loc('npm/expected_doclimit_visitor.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_NpmRegistryVisitor_OverLimit(self): uri = 'https://replicate.npmjs.com/registry/_changes?include_docs=true&limit=1000&since=2300000' @@ -50,7 +51,7 @@ def test_NpmRegistryVisitor_OverLimit(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _data, _errors = npm.NpmRegistryVisitor(uri) expected_loc = self.get_test_loc('npm/expected_over_limit.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_NpmRegistryVisitor_1000records(self): uri = 'https://replicate.npmjs.com/registry/_changes?include_docs=true&limit=1000&since=77777' @@ -59,7 +60,7 @@ def test_NpmRegistryVisitor_1000records(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _data, _errors = npm.NpmRegistryVisitor(uri) expected_loc = self.get_test_loc('npm/expected_1000_records.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) class TestNPMMapper(JsonBasedTesting): @@ -71,7 +72,7 @@ def test_build_packages(self): packages = mappers.npm.build_packages(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('npm/0flux_npm_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_package2(self): with open(self.get_test_loc('npm/2112.json')) as npm_metadata: @@ -79,7 +80,7 @@ def test_build_package2(self): packages = mappers.npm.build_packages(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('npm/npm_2112_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_package3(self): with open(self.get_test_loc('npm/microdata.json')) as npm_metadata: @@ -87,7 +88,7 @@ def test_build_package3(self): packages = mappers.npm.build_packages(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('npm/microdata-node_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_package_with_visitor_data(self): uri = 'https://replicate.npmjs.com/registry/_changes?include_docs=true&limit=1000&since=77777' @@ -102,14 +103,14 @@ def test_build_package_with_visitor_data(self): packages = mappers.npm.build_packages(json.loads(metadata)) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('npm/29_record_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) # Randomly pick a record from 0-1000 metadata = uris_list[554].data packages = mappers.npm.build_packages(json.loads(metadata)) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('npm/554_record_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_package_with_ticket_439(self): uri = 'https://replicate.npmjs.com/registry/_changes?include_docs=true&limit=10&since=7333426' @@ -125,7 +126,7 @@ def test_build_package_with_ticket_439(self): packages = mappers.npm.build_packages(json.loads(metadata)) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('npm/expected_ticket_439.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_package_verify_ticket_440(self): uri = 'https://replicate.npmjs.com/registry/_changes?include_docs=true&limit=10&since=7632607' @@ -141,7 +142,7 @@ def test_build_package_verify_ticket_440(self): packages = mappers.npm.build_packages(json.loads(metadata)) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('npm/expected_ticket_440.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_npm_mapper(self): test_uri = 'https://registry.npmjs.org/angular-compare-validator' @@ -155,7 +156,7 @@ def test_npm_mapper(self): packages = mappers.npm.NpmPackageMapper(test_uri, test_res_uri) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('npm/mapper/index.expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_package_for_jsonp_filter(self): with open(self.get_test_loc('npm/jsonp-filter.json')) as npm_metadata: @@ -163,7 +164,7 @@ def test_build_package_for_jsonp_filter(self): packages = mappers.npm.build_packages(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('npm/jsonp-filter-expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_regex_npm_mapper(self): regex = re.compile(r'^https://registry.npmjs.org/[^\/]+$') @@ -175,23 +176,23 @@ class NpmPriorityQueueTests(JsonBasedTesting, DjangoTestCase): def setUp(self): super(NpmPriorityQueueTests, self).setUp() - expected_json_loc = self.get_test_loc('npm/lodash_package-expected.json') - with open(expected_json_loc) as f: + self.expected_json_loc = self.get_test_loc('npm/lodash_package-expected.json') + with open(self.expected_json_loc) as f: self.expected_json_contents = json.load(f) self.scan_package = NpmPackageJsonHandler._parse( json_data=self.expected_json_contents, ) - def test_get_package_json(self, regen=False): + def test_get_package_json(self, regen=FIXTURES_REGEN): json_contents = npm.get_package_json( namespace=self.scan_package.namespace, name=self.scan_package.name, version=self.scan_package.version ) if regen: - with open(self.expected_pom_loc, 'w') as f: - f.write(json_contents) + with open(self.expected_json_loc, 'w') as f: + json.dump(json_contents, f, indent=3, separators=(',', ':')) self.assertEqual(self.expected_json_contents, json_contents) def test_map_npm_package(self): diff --git a/minecode/tests/test_nuget.py b/minecode/tests/test_nuget.py index 2ff313fd..4977e50c 100644 --- a/minecode/tests/test_nuget.py +++ b/minecode/tests/test_nuget.py @@ -19,6 +19,7 @@ from minecode import mappers from minecode.visitors import nuget +from minecode.tests import FIXTURES_REGEN class NugetVisitorsTest(JsonBasedTesting): @@ -32,7 +33,7 @@ def test_NugetQueryVisitor(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _data, _errors = nuget.NugetQueryVisitor(uri) expected_loc = self.get_test_loc('nuget/nuget_query_expected') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_PackagesPageVisitor(self): uri = 'https://api-v2v3search-0.nuget.org/query?skip=0' @@ -41,7 +42,7 @@ def test_PackagesPageVisitor(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _data, _errors = nuget.PackagesPageVisitor(uri) expected_loc = self.get_test_loc('nuget/nuget_page_json_expected') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_NugetAPIJsonVisitor(self): uri = 'https://api.nuget.org/v3/registration1/entityframework/6.1.3.json' @@ -50,7 +51,7 @@ def test_NugetAPIJsonVisitor(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _data, _errors = nuget.NugetAPIJsonVisitor(uri) expected_loc = self.get_test_loc('nuget/nuget_downlloadvisitor_json_expected') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_NugetHTMLPageVisitor(self): uri = 'https://www.nuget.org/packages?page=1' @@ -59,7 +60,7 @@ def test_NugetHTMLPageVisitor(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) uris, _, _ = nuget.NugetHTMLPageVisitor(uri) expected_loc = self.get_test_loc('nuget/packages.html.expected.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_NugetHTMLPackageVisitor(self): uri = 'https://www.nuget.org/packages/log4net' @@ -81,7 +82,7 @@ def test_build_packages(self): packages = mappers.nuget.build_packages_with_json(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('nuget/nuget_mapper_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_regex_1(self): regex = re.compile(r'^https://api.nuget.org/packages/.*\.nupkg$') @@ -102,4 +103,4 @@ def test_build_packages_from_html(self): packages = mappers.nuget.build_packages_from_html(data, uri,) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('nuget/nuget_mapper_log4net_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_openssl.py b/minecode/tests/test_openssl.py index 891384f5..e088b3d1 100644 --- a/minecode/tests/test_openssl.py +++ b/minecode/tests/test_openssl.py @@ -21,6 +21,7 @@ from minecode.mappers.openssl import build_packages from minecode.models import ResourceURI from minecode.visitors import openssl +from minecode.tests import FIXTURES_REGEN class OpenSSLVisitorsTest(JsonBasedTesting): @@ -35,7 +36,7 @@ def test_OpenSSLVisitor(self): uris, _data, _errors = openssl.OpenSSLVisitor(uri) expected_loc = self.get_test_loc( 'openssl/expected_uri_openssl_index.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) def test_OpenSSLVisitor_sub_folder(self): uri = 'https://ftp.openssl.org/source/' @@ -45,7 +46,7 @@ def test_OpenSSLVisitor_sub_folder(self): uris, _data, _errors = openssl.OpenSSLVisitor(uri) expected_loc = self.get_test_loc( 'openssl/expected_uri_openssl_sourceindex.json') - self.check_expected_uris(uris, expected_loc, regen=False) + self.check_expected_uris(uris, expected_loc, regen=FIXTURES_REGEN) class OpenSSLTest(JsonBasedTesting, DjangoTestCase): @@ -63,4 +64,4 @@ def test_OpenSSL_mapper(self): packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc( 'openssl/openssl_mapper_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_openwrt.py b/minecode/tests/test_openwrt.py index 78e5d35d..23737714 100644 --- a/minecode/tests/test_openwrt.py +++ b/minecode/tests/test_openwrt.py @@ -18,6 +18,7 @@ from minecode import mappers from minecode.visitors import openwrt +from minecode.tests import FIXTURES_REGEN class OpenWRTVistorTest(JsonBasedTesting): @@ -62,7 +63,7 @@ def test_visitor_openwrt_ipk(self): result = json.loads(data) json_file = self.get_test_loc('openwrt/6to4_12-2_all_ipk_expected') - self.check_expected_results(result, json_file, regen=False) + self.check_expected_results(result, json_file, regen=FIXTURES_REGEN) @expectedFailure def test_visitor_openwrt_ipk2(self): diff --git a/minecode/tests/test_packagist.py b/minecode/tests/test_packagist.py index 6462ba52..138fa4ce 100644 --- a/minecode/tests/test_packagist.py +++ b/minecode/tests/test_packagist.py @@ -18,6 +18,7 @@ from minecode import mappers from minecode.visitors import packagist +from minecode.tests import FIXTURES_REGEN class PackagistVistorTest(JsonBasedTesting): @@ -42,4 +43,4 @@ def test_build_packages(self): packages = mappers.packagist.build_packages_with_json(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('packagist/packaglist_00f100_cakephp-opauth_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_pypi.py b/minecode/tests/test_pypi.py index f5eb4396..e007130e 100644 --- a/minecode/tests/test_pypi.py +++ b/minecode/tests/test_pypi.py @@ -27,6 +27,7 @@ from minecode.visitors import URI from minecode.models import ResourceURI from minecode.route import Router +from minecode.tests import FIXTURES_REGEN from minecode.management.commands.run_map import map_uri @@ -148,7 +149,7 @@ def test_build_packages_lxml(self): packages = mappers.pypi.build_packages(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('pypi/expected-lxml-3.2.0.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_packages_boolean(self): with open(self.get_test_loc('pypi/boolean.py-2.0.dev3.json')) as pypi_meta: @@ -156,7 +157,7 @@ def test_build_packages_boolean(self): packages = mappers.pypi.build_packages(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('pypi/expected-boolean.py-2.0.dev3.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_packages_cage13(self): with open(self.get_test_loc('pypi/cage_1.1.3.json')) as pypi_meta: @@ -164,7 +165,7 @@ def test_build_packages_cage13(self): packages = mappers.pypi.build_packages(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('pypi/expected-CAGE-1.1.3.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_packages_cage12(self): with open(self.get_test_loc('pypi/cage_1.1.2.json')) as pypi_meta: @@ -172,7 +173,7 @@ def test_build_packages_cage12(self): packages = mappers.pypi.build_packages(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('pypi/expected-CAGE-1.1.2.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_PypiPackageMapper_cage(self): data = open(self.get_test_loc('pypi/cage_1.1.2.json')).read() @@ -181,7 +182,7 @@ def test_PypiPackageMapper_cage(self): packages = mappers.pypi.PypiPackageMapper(uri, resuri) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('pypi/expected-CAGE-1.1.2.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_PypiPackageMapper_lxml(self): data = open(self.get_test_loc('pypi/lxml-3.2.0.json')).read() @@ -190,7 +191,7 @@ def test_PypiPackageMapper_lxml(self): packages = mappers.pypi.PypiPackageMapper(uri, resuri) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('pypi/expected-lxml-3.2.0.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_pypi_map(self): # setup: add a mappable URI @@ -202,7 +203,7 @@ def test_pypi_map(self): packages = mappers.pypi.PypiPackageMapper(resuri.uri, resuri) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('pypi/map/expected-3to2-1.1.1.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) # build a mock router router = Router() diff --git a/minecode/tests/test_repomd_parser.py b/minecode/tests/test_repomd_parser.py index 6d2d1ef3..03715519 100644 --- a/minecode/tests/test_repomd_parser.py +++ b/minecode/tests/test_repomd_parser.py @@ -22,6 +22,7 @@ from minecode.visitors.repodata import combine_dicts_using_pkgid from minecode.visitors.repomd_parser import generate_rpm_objects from minecode.visitors.repomd_parser import collect_rpm_packages_from_repomd +from minecode.tests import FIXTURES_REGEN # TODO: add redhat repo test! @@ -61,7 +62,7 @@ def test_collect_rpm_packages_from_repomd_cloudera(self): _uris, packages, _error = collect_rpm_packages_from_repomd(uri) expected_loc = self.get_test_loc('repodata_rpms/repomd_parser/cloudera/expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_collect_rpm_packages_from_repomd_centos(self): uri2loc = { @@ -88,7 +89,7 @@ def test_collect_rpm_packages_from_repomd_centos(self): self.assertEqual(expected_uris, uris) expected_loc = self.get_test_loc('repodata_rpms/repomd_parser/centos/expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_collect_rpm_packages_from_repomd_cloudera_2(self): uri2loc = { @@ -108,7 +109,7 @@ def test_collect_rpm_packages_from_repomd_cloudera_2(self): _uris, packages, _error = collect_rpm_packages_from_repomd(uri) expected_loc = self.get_test_loc('repodata_rpms/repomd_parser/cloudera2/expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_collect_rpm_packages_from_repomd_postgresql(self): uri2loc = { @@ -135,7 +136,7 @@ def test_collect_rpm_packages_from_repomd_postgresql(self): self.assertEqual(expected_uris, uris) expected_loc = self.get_test_loc('repodata_rpms/repomd_parser/postgresql/expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_collect_rpm_packages_from_repomd_opensuse(self): uri2loc = { @@ -155,7 +156,7 @@ def test_collect_rpm_packages_from_repomd_opensuse(self): _uris, packages, _error = collect_rpm_packages_from_repomd(uri) expected_loc = self.get_test_loc('repodata_rpms/repomd_parser/opensuse/expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_collect_rpm_packages_from_repomd_pgpool(self): uri2loc = { @@ -175,7 +176,7 @@ def test_collect_rpm_packages_from_repomd_pgpool(self): _uris, packages, _error = collect_rpm_packages_from_repomd(uri) expected_loc = self.get_test_loc('repodata_rpms/repomd_parser/pgpool/expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_combine_dicts_using_pkgid(self): all_dicts = [ diff --git a/minecode/tests/test_rubygems.py b/minecode/tests/test_rubygems.py index aea3e3ec..49f36f37 100644 --- a/minecode/tests/test_rubygems.py +++ b/minecode/tests/test_rubygems.py @@ -37,6 +37,7 @@ from minecode.visitors.rubygems import RubyGemsApiManyVersionsVisitor from minecode.visitors.rubygems import RubyGemsIndexVisitor from minecode.visitors.rubygems import RubyGemsPackageArchiveMetadataVisitor +from minecode.tests import FIXTURES_REGEN # @@ -67,7 +68,7 @@ def test_RubyGemsIndexVisitor_latest(self): expected_loc = self.get_test_loc('rubygems/index/latest_specs.4.8.gz.expected.json') uris_list = list(uris) self.assertTrue(len(uris_list) > 1000) - self.check_expected_uris(uris_list[0:1000], expected_loc, regen=False) + self.check_expected_uris(uris_list[0:1000], expected_loc, regen=FIXTURES_REGEN) def test_RubyGemsApiVersionVisitor(self): uri = 'https://rubygems.org/api/v1/versions/0xffffff.json' @@ -76,7 +77,7 @@ def test_RubyGemsApiVersionVisitor(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) _, data, _ = RubyGemsApiManyVersionsVisitor(uri) expected_loc = self.get_test_loc('rubygems/apiv1/expected_0xffffff.api.json') - self.check_expected_results(data, expected_loc, regen=False) + self.check_expected_results(data, expected_loc, regen=FIXTURES_REGEN) def test_RubyGemsApiVersionVisitor2(self): uri = 'https://rubygems.org/api/v1/versions/a1630ty_a1630ty.json' @@ -85,7 +86,7 @@ def test_RubyGemsApiVersionVisitor2(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) _, data, _ = RubyGemsApiManyVersionsVisitor(uri) expected_loc = self.get_test_loc('rubygems/apiv1/expected_a1630ty_a1630ty.api.json') - self.check_expected_results(data, expected_loc, regen=False) + self.check_expected_results(data, expected_loc, regen=FIXTURES_REGEN) def test_RubyGemsApiVersionVisitor3(self): uri = 'https://rubygems.org/api/v1/versions/zuck.json' @@ -94,7 +95,7 @@ def test_RubyGemsApiVersionVisitor3(self): mock_http_get.return_value = mocked_requests_get(uri, test_loc) _, data, _ = RubyGemsApiManyVersionsVisitor(uri) expected_loc = self.get_test_loc('rubygems/apiv1/expected_zuck.api.json') - self.check_expected_results(data, expected_loc, regen=False) + self.check_expected_results(data, expected_loc, regen=FIXTURES_REGEN) def test_RubyGemsPackageArchiveMetadataVisitor(self): uri = 'https://rubygems.org/downloads/a_okay-0.1.0.gem' @@ -116,7 +117,7 @@ def test_build_rubygem_packages_from_api_data_1(self): packages = build_rubygem_packages_from_api_data(apidata, '0xffffff') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('rubygems/apiv1/0xffffff.api.package.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_rubygem_packages_from_api_data_2(self): with open(self.get_test_loc('rubygems/apiv1/zuck.api.json')) as api: @@ -124,7 +125,7 @@ def test_build_rubygem_packages_from_api_data_2(self): packages = build_rubygem_packages_from_api_data(apidata, 'zuck') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('rubygems/apiv1/zuck.api.package.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_rubygem_packages_from_api_data_3(self): with open(self.get_test_loc('rubygems/apiv1/a1630ty_a1630ty.api.json')) as api: @@ -132,7 +133,7 @@ def test_build_rubygem_packages_from_api_data_3(self): packages = mappers.rubygems.build_rubygem_packages_from_api_data(apidata, 'a1630ty_a1630ty') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('rubygems/apiv1/a1630ty_a1630ty.api.package.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_rubygem_packages_from_api_data_with_deps(self): with open(self.get_test_loc('rubygems/apiv1/action_tracker.api.json')) as api: @@ -140,7 +141,7 @@ def test_build_rubygem_packages_from_api_data_with_deps(self): packages = mappers.rubygems.build_rubygem_packages_from_api_data(apidata, 'action_tracker') packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('rubygems/apiv1/action_tracker.api.package.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_RubyGemsApiVersionsJsonMapper(self): test_uri = 'https://rubygems.org/api/v1/versions/a1630ty_a1630ty.json' @@ -154,7 +155,7 @@ def test_RubyGemsApiVersionsJsonMapper(self): packages = RubyGemsApiVersionsJsonMapper(test_uri, test_res_uri) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('rubygems/apiv1/a1630ty_a1630ty.api.mapped.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) class RubyGemsArchiveMapperTest(JsonBasedTesting): @@ -172,9 +173,9 @@ def test_test_RubyGemsPackageArchiveMetadataMapper(self): packages = RubyGemsPackageArchiveMetadataMapper(test_uri, test_res_uri) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('rubygems/mysmallidea-address_standardization-0.4.1.gem.mapped.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) - def check_mapped_packages(self, test_loc, expected_loc, extract=True, regen=False): + def check_mapped_packages(self, test_loc, expected_loc, extract=True, regen=FIXTURES_REGEN): test_loc = self.get_test_loc(test_loc, copy=True) @@ -290,7 +291,7 @@ def test_visit_and_map_end2end(self): uri_results = [model_to_dict(rec, exclude=['id']) for rec in visited] expected_loc = self.get_test_loc('rubygems/sprockets-vendor_gems-0.1.3.gem.visited.json') - self.check_expected_results(uri_results, expected_loc, regen=False) + self.check_expected_results(uri_results, expected_loc, regen=FIXTURES_REGEN) if before_pkg: mapped = packagedb.models.Package.objects.exclude(id__in=before_pkg) @@ -299,4 +300,4 @@ def test_visit_and_map_end2end(self): package_results = [pac.to_dict() for pac in mapped] expected_loc = self.get_test_loc('rubygems/sprockets-vendor_gems-0.1.3.gem.mapped.json') - self.check_expected_results(package_results, expected_loc, fields_to_remove=['package_sets'], regen=False) + self.check_expected_results(package_results, expected_loc, fields_to_remove=['package_sets'], regen=FIXTURES_REGEN) diff --git a/minecode/tests/test_run_map.py b/minecode/tests/test_run_map.py index 316ffd02..e3738638 100644 --- a/minecode/tests/test_run_map.py +++ b/minecode/tests/test_run_map.py @@ -22,9 +22,11 @@ from minecode.route import Router from minecode.utils_test import JsonBasedTesting from minecode.utils_test import MiningTestCase +from minecode.tests import FIXTURES_REGEN import packagedb + class RunMapTest(JsonBasedTesting, MiningTestCase): BASE_DIR = os.path.join(os.path.dirname(__file__), 'testfiles') maxDiff = None @@ -369,7 +371,7 @@ def mock_mapper(uri, resource_uri): expected_updated_fields_loc = self.get_test_loc( 'run_map/test_map_uri_does_update_with_same_mining_level_expected_updated_fields.json' ) - self.check_expected_results(updated_fields, expected_updated_fields_loc, regen=False) + self.check_expected_results(updated_fields, expected_updated_fields_loc, regen=FIXTURES_REGEN) # check that the ResourceURI status has been updated correctly resource_uri = ResourceURI.objects.get(uri=uri) @@ -379,7 +381,7 @@ def mock_mapper(uri, resource_uri): # check that the Package has been updated correctly expected_loc = self.get_test_loc('run_map/test_map_uri_does_update_with_same_mining_level-expected.json') result = mapped_package.to_dict() - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) # Since we manually insert a Package without using `map_uri`, a # ScannableURI should not have been created. An update to a package @@ -470,7 +472,7 @@ def mock_mapper(uri, resource_uri): # check that the Package has been updated correctly expected_loc = self.get_test_loc('run_map/test_map_uri_update_only_empties_with_lesser_new_mining_level-expected.json') result = mapped[0].to_dict() - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) # Since we manually insert a Package without using `map_uri`, a # ScannableURI should not have been created. An update to a package @@ -541,7 +543,7 @@ def mock_mapper(uri, resource_uri): expected_updated_fields_loc = self.get_test_loc( 'run_map/test_map_uri_replace_with_new_with_higher_new_mining_level_expected_updated_fields.json' ) - self.check_expected_results(updated_fields, expected_updated_fields_loc, regen=False) + self.check_expected_results(updated_fields, expected_updated_fields_loc, regen=FIXTURES_REGEN) # check that the ResourceURI status has been updated correctly @@ -552,7 +554,7 @@ def mock_mapper(uri, resource_uri): # check that the Package has been updated correctly expected_loc = self.get_test_loc('run_map/test_map_uri_replace_with_new_with_higher_new_mining_level-expected.json') result = mapped[0].to_dict() - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) # Since we manually insert a Package without using `map_uri`, a # ScannableURI should not have been created. An update to a package @@ -580,7 +582,7 @@ def test_merge_packages_no_replace(self): merge_packages(existing_package, new_package_data, replace=False) expected_loc = self.get_test_loc('run_map/test_merge_packages_no_replace-expected.json') result = existing_package.to_dict() - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) def test_merge_packages_with_replace(self): download_url = 'http://testdomap3.com' @@ -602,7 +604,7 @@ def test_merge_packages_with_replace(self): merge_packages(existing_package, new_package_data, replace=True) expected_loc = self.get_test_loc('run_map/test_merge_packages_with_replace-expected.json') result = existing_package.to_dict() - self.check_expected_results(result, expected_loc, regen=False) + self.check_expected_results(result, expected_loc, regen=FIXTURES_REGEN) def test_merge_packages_different_sha1(self): download_url = 'http://testdomap3.com' diff --git a/minecode/tests/test_sourceforge.py b/minecode/tests/test_sourceforge.py index 9cd29bc1..ee19a7dd 100644 --- a/minecode/tests/test_sourceforge.py +++ b/minecode/tests/test_sourceforge.py @@ -17,6 +17,7 @@ from minecode import mappers from minecode.visitors import sourceforge +from minecode.tests import FIXTURES_REGEN class SourceforgeVisitorsTest(JsonBasedTesting): @@ -77,7 +78,7 @@ def test_build_packages(self): packages = mappers.sourceforge.build_packages_from_metafile(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('sourceforge/mapper_odanur_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_packages2(self): with open(self.get_test_loc('sourceforge/openstunts.json')) as sourceforge_metadata: @@ -85,7 +86,7 @@ def test_build_packages2(self): packages = mappers.sourceforge.build_packages_from_metafile(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('sourceforge/mapper_openstunts_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_packages3(self): with open(self.get_test_loc('sourceforge/monoql.json')) as sourceforge_metadata: @@ -93,7 +94,7 @@ def test_build_packages3(self): packages = mappers.sourceforge.build_packages_from_metafile(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('sourceforge/mapper_omonoql_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) def test_build_packages4(self): with open(self.get_test_loc('sourceforge/niftyphp.json')) as sourceforge_metadata: @@ -101,4 +102,4 @@ def test_build_packages4(self): packages = mappers.sourceforge.build_packages_from_metafile(metadata) packages = [p.to_dict() for p in packages] expected_loc = self.get_test_loc('sourceforge/mapper_niftyphp_expected.json') - self.check_expected_results(packages, expected_loc, regen=False) + self.check_expected_results(packages, expected_loc, regen=FIXTURES_REGEN) diff --git a/minecode/tests/testfiles/apache/projects_expected.json b/minecode/tests/testfiles/apache/projects_expected.json index a182f3e1..92a0ae71 100644 --- a/minecode/tests/testfiles/apache/projects_expected.json +++ b/minecode/tests/testfiles/apache/projects_expected.json @@ -40,7 +40,9 @@ "api_data_url":null, "package_uid":"pkg:apache/abdera@1.7.1?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/abdera@1.7.1" }, { @@ -93,7 +95,9 @@ "api_data_url":null, "package_uid":"pkg:apache/activemq?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/activemq" }, { @@ -145,7 +149,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.7.1?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.7.1" }, { @@ -197,7 +203,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.7.0?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.7.0" }, { @@ -249,7 +257,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.6.5?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.6.5" }, { @@ -301,7 +311,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.6.4?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.6.4" }, { @@ -353,7 +365,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.6.3?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.6.3" }, { @@ -405,7 +419,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.6.2?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.6.2" }, { @@ -457,7 +473,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.6.1?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.6.1" }, { @@ -509,7 +527,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.6.0?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.6.0" }, { @@ -561,7 +581,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.5.4?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.5.4" }, { @@ -613,7 +635,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.5.3?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.5.3" }, { @@ -665,7 +689,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.5.2?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.5.2" }, { @@ -717,7 +743,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.5.1?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.5.1" }, { @@ -769,7 +797,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.4.5?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.4.5" }, { @@ -821,7 +851,9 @@ "api_data_url":null, "package_uid":"pkg:apache/accumulo@1.3.6?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/accumulo@1.3.6" }, { @@ -873,7 +905,9 @@ "api_data_url":null, "package_uid":"pkg:apache/ace@0.8.1?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/ace@0.8.1" }, { @@ -927,7 +961,9 @@ "api_data_url":null, "package_uid":"pkg:apache/airavata@0.11?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "apache_json" + ], "purl":"pkg:apache/airavata@0.11" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/bower/expected_28msec_bower.json b/minecode/tests/testfiles/bower/expected_28msec_bower.json index e2e1e75b..ad8c0c07 100644 --- a/minecode/tests/testfiles/bower/expected_28msec_bower.json +++ b/minecode/tests/testfiles/bower/expected_28msec_bower.json @@ -45,8 +45,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:bower/28.io-angularjs@0.1.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://raw.githubusercontent.com/28msec/28.io-angularjs/master/bower.json" + ], + "datasource_ids":[ + "bower_json" + ], "purl":"pkg:bower/28.io-angularjs@0.1.1" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/bower/expected_mapper_example1_bower.json b/minecode/tests/testfiles/bower/expected_mapper_example1_bower.json index 120e66ac..56a791d8 100644 --- a/minecode/tests/testfiles/bower/expected_mapper_example1_bower.json +++ b/minecode/tests/testfiles/bower/expected_mapper_example1_bower.json @@ -79,8 +79,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:bower/jquery.easing@1.3.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://coding.net/u/QiaoButang/p/jquery.easing-qbt/git/raw/master/bower.json" + ], + "datasource_ids":[ + "bower_json" + ], "purl":"pkg:bower/jquery.easing@1.3.1" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/cpan/expected_json_cpanmapper.json b/minecode/tests/testfiles/cpan/expected_json_cpanmapper.json index df261d68..7f09c92e 100644 --- a/minecode/tests/testfiles/cpan/expected_json_cpanmapper.json +++ b/minecode/tests/testfiles/cpan/expected_json_cpanmapper.json @@ -72,7 +72,7 @@ "repository_homepage_url":null, "repository_download_url":null, "api_data_url":null, - "datasource_id":null, + "datasource_id":"cpan_metadata_json", "purl":"pkg:cpan/Regexp-Common@2016010701" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/cpan/expected_json_readmefile_cpanmapper.json b/minecode/tests/testfiles/cpan/expected_json_readmefile_cpanmapper.json index 8238c70f..e63346dd 100644 --- a/minecode/tests/testfiles/cpan/expected_json_readmefile_cpanmapper.json +++ b/minecode/tests/testfiles/cpan/expected_json_readmefile_cpanmapper.json @@ -46,7 +46,7 @@ "repository_homepage_url":null, "repository_download_url":null, "api_data_url":null, - "datasource_id":null, + "datasource_id":"cpan_readme", "purl":"pkg:cpan/Mojolicious::Plugin::Nour::Config%20-%20Robustly%20imports%20config%20from%20a%0A./config%20sub-directory%20loaded%20with%20nested%20YAML%20files@version%200.09" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/cpan/expected_json_readmefile_cpanmapper2.json b/minecode/tests/testfiles/cpan/expected_json_readmefile_cpanmapper2.json index b66c4dbf..f15b4cf4 100644 --- a/minecode/tests/testfiles/cpan/expected_json_readmefile_cpanmapper2.json +++ b/minecode/tests/testfiles/cpan/expected_json_readmefile_cpanmapper2.json @@ -38,7 +38,7 @@ "repository_homepage_url":null, "repository_download_url":null, "api_data_url":null, - "datasource_id":null, + "datasource_id":"cpan_readme", "purl":"pkg:cpan/Algorithms::Graphs::TransitiveClosure%20-%20Calculate%20the%20transitive%0Aclosure." } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/cpan/expected_release_search.json b/minecode/tests/testfiles/cpan/expected_release_search.json index 2531c185..bbec0cd3 100644 --- a/minecode/tests/testfiles/cpan/expected_release_search.json +++ b/minecode/tests/testfiles/cpan/expected_release_search.json @@ -68,8 +68,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-MPDJ-1.00@1.00?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-MPDJ-1.00@1.00" }, { @@ -141,8 +145,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Win32-Snarl-0.03@0.03?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Win32-Snarl-0.03@0.03" }, { @@ -214,8 +222,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-MPDJ-1.03@1.03?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-MPDJ-1.03@1.03" }, { @@ -287,8 +299,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-Snarl-1.09@1.09?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-Snarl-1.09@1.09" }, { @@ -360,8 +376,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-MPDJ-1.01@1.01?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-MPDJ-1.01@1.01" }, { @@ -433,8 +453,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/WWW-Jawbone-Up-1.32.1@1.32.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/WWW-Jawbone-Up-1.32.1@1.32.1" }, { @@ -506,8 +530,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-MPD-0.02@0.02?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-MPD-0.02@0.02" }, { @@ -579,8 +607,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-MPDJ-1.07@1.07?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-MPDJ-1.07@1.07" }, { @@ -652,8 +684,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Dancer-Plugin-IRCNotice-0.03@0.03?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Dancer-Plugin-IRCNotice-0.03@0.03" }, { @@ -725,8 +761,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-MPD-0.06@0.06?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-MPD-0.06@0.06" }, { @@ -798,8 +838,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-Sybil-0.1@0.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-Sybil-0.1@0.1" }, { @@ -871,8 +915,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-Snarl-0.02@0.02?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-Snarl-0.02@0.02" }, { @@ -944,8 +992,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-Snarl-0.01@0.01?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-Snarl-0.01@0.01" }, { @@ -1017,8 +1069,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Win32-Snarl-withoutworldwriteables@0.04?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Win32-Snarl-withoutworldwriteables@0.04" }, { @@ -1090,8 +1146,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Dancer-Plugin-IRCNotice-0.06@0.06?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Dancer-Plugin-IRCNotice-0.06@0.06" }, { @@ -1163,8 +1223,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-MPDJ-1.09@1.09?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-MPDJ-1.09@1.09" }, { @@ -1236,8 +1300,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/WWW-Jawbone-Up-1.32.4@1.32.4?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/WWW-Jawbone-Up-1.32.4@1.32.4" }, { @@ -1309,8 +1377,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-Snarl-0.04@0.04?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-Snarl-0.04@0.04" }, { @@ -1382,8 +1454,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-MPDSync-0.01@0.01?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-MPDSync-0.01@0.01" }, { @@ -1455,8 +1531,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Dancer-Plugin-IRCNotice-0.05@0.05?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Dancer-Plugin-IRCNotice-0.05@0.05" }, { @@ -1528,8 +1608,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/WWW-Jawbone-Up-1.32.2@1.32.2?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/WWW-Jawbone-Up-1.32.2@1.32.2" }, { @@ -1601,8 +1685,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-MPD-0.05@0.05?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-MPD-0.05@0.05" }, { @@ -1674,8 +1762,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/WWW-Jawbone-Up-1.32.3@1.32.3?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/WWW-Jawbone-Up-1.32.3@1.32.3" }, { @@ -1747,8 +1839,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Dancer-Plugin-IRCNotice-0.04@0.04?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Dancer-Plugin-IRCNotice-0.04@0.04" }, { @@ -1820,8 +1916,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-MPDJ-1.02@1.02?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-MPDJ-1.02@1.02" }, { @@ -1893,8 +1993,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/WWW-Jawbone-Up-1.32.0@1.32.0?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/WWW-Jawbone-Up-1.32.0@1.32.0" }, { @@ -1966,8 +2070,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Dancer-Plugin-IRCNotice-0.01@0.01?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Dancer-Plugin-IRCNotice-0.01@0.01" }, { @@ -2039,8 +2147,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-Snarl-1.08@1.08?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-Snarl-1.08@1.08" }, { @@ -2112,8 +2224,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-MPDJ-1.05@1.05?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-MPDJ-1.05@1.05" }, { @@ -2185,8 +2301,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-MPDJ-1.08@1.08?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-MPDJ-1.08@1.08" }, { @@ -2258,8 +2378,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-MPD-0.04@0.04?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-MPD-0.04@0.04" }, { @@ -2331,8 +2455,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-Snarl-0.05@0.05?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-Snarl-0.05@0.05" }, { @@ -2404,8 +2532,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/win32-snarl-1.01@0.04?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/win32-snarl-1.01@0.04" }, { @@ -2477,8 +2609,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-Sybil-0.4@0.4?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-Sybil-0.4@0.4" }, { @@ -2550,8 +2686,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-Snarl-1.10@1.10?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-Snarl-1.10@1.10" }, { @@ -2623,8 +2763,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-Snarl-1.1@1.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-Snarl-1.1@1.1" }, { @@ -2696,8 +2840,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-Snarl-1.07@1.07?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-Snarl-1.07@1.07" }, { @@ -2769,8 +2917,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-Snarl-1.06@1.06?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-Snarl-1.06@1.06" }, { @@ -2842,8 +2994,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Dancer-Plugin-IRCNotice-0.02@0.02?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Dancer-Plugin-IRCNotice-0.02@0.02" }, { @@ -2915,8 +3071,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-MPDJ-1.04@1.04?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-MPDJ-1.04@1.04" }, { @@ -2988,8 +3148,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-MPDJ-1.06@1.06?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-MPDJ-1.06@1.06" }, { @@ -3061,8 +3225,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-MPD-0.01@0.01?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-MPD-0.01@0.01" }, { @@ -3134,8 +3302,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-MPD-0.03@0.03?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-MPD-0.03@0.03" }, { @@ -3207,8 +3379,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-Snarl-0.03@0.03?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-Snarl-0.03@0.03" }, { @@ -3280,8 +3456,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-Snarl-0.02-withoutworldwriteables@0.02?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-Snarl-0.02-withoutworldwriteables@0.02" }, { @@ -3353,8 +3533,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Win32-Snarl-1.00@0.04?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Win32-Snarl-1.00@0.04" }, { @@ -3426,8 +3610,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-Sybil-0.2@0.2?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-Sybil-0.2@0.2" }, { @@ -3499,8 +3687,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-Sybil-0.3@0.3?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-Sybil-0.3@0.3" }, { @@ -3572,8 +3764,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Win32-Snarl-0.01@0.01?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Win32-Snarl-0.01@0.01" }, { @@ -3645,8 +3841,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Win32-Snarl-0.02@0.02?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Win32-Snarl-0.02@0.02" }, { @@ -3718,8 +3918,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-Snarl-1.09-TRIAL@1.09?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-Snarl-1.09-TRIAL@1.09" }, { @@ -3791,8 +3995,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-MPD-0.07@0.07?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-MPD-0.07@0.07" }, { @@ -3864,8 +4072,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-MPDSync-0.02@0.02?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-MPDSync-0.02@0.02" }, { @@ -3937,8 +4149,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/App-Sybil-0.5@0.5?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:ABERNDT&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/App-Sybil-0.5@0.5" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/cpan/expected_release_search_author_MIYAGAWA.json b/minecode/tests/testfiles/cpan/expected_release_search_author_MIYAGAWA.json index 1a7ea278..aede200e 100644 --- a/minecode/tests/testfiles/cpan/expected_release_search_author_MIYAGAWA.json +++ b/minecode/tests/testfiles/cpan/expected_release_search_author_MIYAGAWA.json @@ -68,8 +68,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0037@1.0037?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0037@1.0037" }, { @@ -141,8 +145,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0005@1.0005?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0005@1.0005" }, { @@ -214,8 +222,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0009@1.0009?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0009@1.0009" }, { @@ -287,8 +299,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0001@1.0001?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0001@1.0001" }, { @@ -360,8 +376,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0002@1.0002?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0002@1.0002" }, { @@ -433,8 +453,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0014@1.0014?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0014@1.0014" }, { @@ -506,8 +530,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0027@1.0027?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0027@1.0027" }, { @@ -579,8 +607,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0028@1.0028?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0028@1.0028" }, { @@ -652,8 +684,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0018@1.0018?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0018@1.0018" }, { @@ -725,8 +761,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0020@1.0020?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0020@1.0020" }, { @@ -798,8 +838,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0022@1.0022?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0022@1.0022" }, { @@ -871,8 +915,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0021@1.0021?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0021@1.0021" }, { @@ -944,8 +992,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Bundle-Sledge-0.04@0.04?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Bundle-Sledge-0.04@0.04" }, { @@ -1017,8 +1069,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Video-Subtitle-SRT-0.01@0.01?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Video-Subtitle-SRT-0.01@0.01" }, { @@ -1090,8 +1146,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0032@1.0032?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0032@1.0032" }, { @@ -1163,8 +1223,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Carmel-v0.1.34@v0.1.34?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Carmel-v0.1.34@v0.1.34" }, { @@ -1236,8 +1300,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Plack-1.0046@1.0046?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Plack-1.0046@1.0046" }, { @@ -1309,8 +1377,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Filesys-Notify-Simple-0.12@0.12?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Filesys-Notify-Simple-0.12@0.12" }, { @@ -1382,8 +1454,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/carton-v0.9.10@v0.9.10?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/carton-v0.9.10@v0.9.10" }, { @@ -1455,8 +1531,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/carton-v0.9_8@v0.9_8?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/carton-v0.9_8@v0.9_8" }, { @@ -1528,8 +1608,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/carton-v0.9.50-TRIAL@v0.9.50?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/carton-v0.9.50-TRIAL@v0.9.50" }, { @@ -1601,8 +1685,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/carton-v0.9.57-TRIAL@v0.9.57?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/carton-v0.9.57-TRIAL@v0.9.57" }, { @@ -1674,8 +1762,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/carton-v0.9.59-TRIAL@v0.9.59?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/carton-v0.9.59-TRIAL@v0.9.59" }, { @@ -1747,8 +1839,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/carton-v0.9.61-TRIAL@v0.9.61?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/carton-v0.9.61-TRIAL@v0.9.61" }, { @@ -1820,8 +1916,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/carton-v0.9.67-TRIAL@v0.9.67?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/carton-v0.9.67-TRIAL@v0.9.67" }, { @@ -1893,8 +1993,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/WebService-Google-Suggest-0.02@0.02?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/WebService-Google-Suggest-0.02@0.02" }, { @@ -1966,8 +2070,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/HTTP-MobileAgent-0.16@0.16?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/HTTP-MobileAgent-0.16@0.16" }, { @@ -2039,8 +2147,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Email-Find-0.09@0.09?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Email-Find-0.09@0.09" }, { @@ -2112,8 +2224,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/POE-Component-YahooMessenger-0.04@0.04?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/POE-Component-YahooMessenger-0.04@0.04" }, { @@ -2185,8 +2301,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Kwiki-Emoticon-0.01@0.01?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Kwiki-Emoticon-0.01@0.01" }, { @@ -2258,8 +2378,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Net-IPAddr-Find-0.01@0.01?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Net-IPAddr-Find-0.01@0.01" }, { @@ -2331,8 +2455,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Email-Valid-Loose-0.03@0.03?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Email-Valid-Loose-0.03@0.03" }, { @@ -2404,8 +2532,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Kwiki-TypeKey-0.07@0.07?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Kwiki-TypeKey-0.07@0.07" }, { @@ -2477,8 +2609,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cpan/Text-Emoticon-Yahoo-0.01@0.01?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://fastapi.metacpan.org/release/_search?q=author:MIYAGAWA&size=5000" + ], + "datasource_ids":[ + "cpan_release_json" + ], "purl":"pkg:cpan/Text-Emoticon-Yahoo-0.01@0.01" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/cpan/expected_yaml_cpanmapper.json b/minecode/tests/testfiles/cpan/expected_yaml_cpanmapper.json index 9a43ebba..b87b9ba6 100644 --- a/minecode/tests/testfiles/cpan/expected_yaml_cpanmapper.json +++ b/minecode/tests/testfiles/cpan/expected_yaml_cpanmapper.json @@ -69,7 +69,7 @@ "repository_homepage_url":null, "repository_download_url":null, "api_data_url":null, - "datasource_id":null, + "datasource_id":"cpan_metadata_json", "purl":"pkg:cpan/variable@2009110702" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/cran/mapper_ANN2_expected.json b/minecode/tests/testfiles/cran/mapper_ANN2_expected.json index 12603e0d..519297ed 100644 --- a/minecode/tests/testfiles/cran/mapper_ANN2_expected.json +++ b/minecode/tests/testfiles/cran/mapper_ANN2_expected.json @@ -90,8 +90,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cran/ANN2@1.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://cloud.r-project.org/web/packages/ANN2/index.html" + ], + "datasource_ids":[ + "cran_metadata" + ], "purl":"pkg:cran/ANN2@1.1" }, { @@ -185,8 +189,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cran/ANN2@1.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://cloud.r-project.org/web/packages/ANN2/index.html" + ], + "datasource_ids":[ + "cran_metadata" + ], "purl":"pkg:cran/ANN2@1.1" }, { @@ -280,8 +288,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cran/ANN2@1.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://cloud.r-project.org/web/packages/ANN2/index.html" + ], + "datasource_ids":[ + "cran_metadata" + ], "purl":"pkg:cran/ANN2@1.1" }, { @@ -375,8 +387,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cran/ANN2@1.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://cloud.r-project.org/web/packages/ANN2/index.html" + ], + "datasource_ids":[ + "cran_metadata" + ], "purl":"pkg:cran/ANN2@1.1" }, { @@ -470,8 +486,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cran/ANN2@1.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://cloud.r-project.org/web/packages/ANN2/index.html" + ], + "datasource_ids":[ + "cran_metadata" + ], "purl":"pkg:cran/ANN2@1.1" }, { @@ -565,8 +585,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cran/ANN2@1.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://cloud.r-project.org/web/packages/ANN2/index.html" + ], + "datasource_ids":[ + "cran_metadata" + ], "purl":"pkg:cran/ANN2@1.1" }, { @@ -660,8 +684,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cran/ANN2@1.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://cloud.r-project.org/web/packages/ANN2/index.html" + ], + "datasource_ids":[ + "cran_metadata" + ], "purl":"pkg:cran/ANN2@1.1" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/cran/mapper_abe_expected.json b/minecode/tests/testfiles/cran/mapper_abe_expected.json index b6591883..9c0cfcb6 100644 --- a/minecode/tests/testfiles/cran/mapper_abe_expected.json +++ b/minecode/tests/testfiles/cran/mapper_abe_expected.json @@ -127,8 +127,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cran/abe@3.0.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://cloud.r-project.org/web/packages/abe/index.htm" + ], + "datasource_ids":[ + "cran_metadata" + ], "purl":"pkg:cran/abe@3.0.1" }, { @@ -259,8 +263,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cran/abe@3.0.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://cloud.r-project.org/web/packages/abe/index.htm" + ], + "datasource_ids":[ + "cran_metadata" + ], "purl":"pkg:cran/abe@3.0.1" }, { @@ -391,8 +399,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cran/abe@3.0.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://cloud.r-project.org/web/packages/abe/index.htm" + ], + "datasource_ids":[ + "cran_metadata" + ], "purl":"pkg:cran/abe@3.0.1" }, { @@ -523,8 +535,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:cran/abe@3.0.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://cloud.r-project.org/web/packages/abe/index.htm" + ], + "datasource_ids":[ + "cran_metadata" + ], "purl":"pkg:cran/abe@3.0.1" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/debian/release/Release_expected b/minecode/tests/testfiles/debian/release/Release_expected index d17981a0..1a16db54 100644 --- a/minecode/tests/testfiles/debian/release/Release_expected +++ b/minecode/tests/testfiles/debian/release/Release_expected @@ -1 +1 @@ - +[{'archive': 'jessie-backports', 'origin': 'Debian Backports', 'label': 'Debian Backports', 'notautomatic': 'yes', 'butautomaticupgrades': 'yes', 'component': 'main', 'architecture': 'ppc64el'}] diff --git a/minecode/tests/testfiles/debian/release/Release_with_md5_expected b/minecode/tests/testfiles/debian/release/Release_with_md5_expected index d17981a0..c5a06967 100644 --- a/minecode/tests/testfiles/debian/release/Release_with_md5_expected +++ b/minecode/tests/testfiles/debian/release/Release_with_md5_expected @@ -1 +1 @@ - +[{'origin': 'Debian', 'label': 'Debian', 'suite': 'stable', 'version': '8.3', 'codename': 'jessie', 'date': 'Sat, 23 Jan 2016 13:17:38 UTC', 'architectures': 'amd64 arm64 armel armhf i386 mips mipsel powerpc ppc64el s390x', 'components': 'main contrib non-free', 'description': 'Debian 8.3 Released 23 January 2016', 'md5sum': 'f08bebee4d8727f4320c0ed6984a01c9 1194884 contrib/Contents-amd64\n c7f0b9213c9031cf89343a1bb8dbca3a 88565 contrib/Contents-amd64.gz\n 36d2e8055b0cc185c8c5b081b414f4ce 1021655 contrib/Contents-arm64\n 20bb294fefef1ab19e20ff0de7976ee2 72539 contrib/Contents-arm64.gz\n d2e1f415e05f53742b7133dd10ccf3af 1035687 contrib/Contents-armel\n 5f24794a69552fbb10f303e33d35d380 73710 contrib/Contents-armel.gz\n d70a5e2db762a9eb493607e16f8c423e 1028590 contrib/Contents-armhf\n 9b3beb4516ce2e25d77a7128d9096658 73612 contrib/Contents-armhf.gz\n 84baba2f8d4a5c6413559f3a0a4503ce 1191918 contrib/Contents-i386\n cb9d99bcb420615a9b95adc2e9e6bea6 88211 contrib/Contents-i386.gz\n 773e5fdbd00dafdd1fe948f5f48e0465 1037406 contrib/Contents-mips\n 86e4b7504d19e277b9ca28d28c40a169 73908 contrib/Contents-mips.gz\n e35a7c2468a3fa11c03315546b6c6df1 1037412 contrib/Contents-mipsel\n 8862ff388c0b2550a4761ec3b344da62 74013 contrib/Contents-mipsel.gz\n 199883a8abad50428f0c58b9ecfbe649 1038124 contrib/Contents-powerpc\n 32b379b7e92d4a9b600869680c5a9321 74092 contrib/Contents-powerpc.gz\n 4beb22058a086925d20ee15cbcc5ef8b 1018073 contrib/Contents-ppc64el\n 7ed94ed4c2707a4a66963642006f531b 72165 contrib/Contents-ppc64el.gz\n b89640cb7ea36d06c43b86b5b7d58e40 1033616 contrib/Contents-s390x\n a2ac8c3fe8e756fdc2275d323b29c7a9 73569 contrib/Contents-s390x.gz\n e81f2dc9e2f54de34f148584f837c046 3013607 contrib/Contents-source\n d4b048581d643e4c4f1964d27c3e961e 333917 contrib/Contents-source.gz\n 68292125276158d468c91a58be0f30b1 451 contrib/Contents-udeb-amd64\n b49002146fad4eb7e4dce23bc3f48e38 271 contrib/Contents-udeb-amd64.gz\n 68292125276158d468c91a58be0f30b1 451 contrib/Contents-udeb-arm64\n b49002146fad4eb7e4dce23bc3f48e38 271 contrib/Contents-udeb-arm64.gz\n 68292125276158d468c91a58be0f30b1 451 contrib/Contents-udeb-armel\n b49002146fad4eb7e4dce23bc3f48e38 271 contrib/Contents-udeb-armel.gz\n 68292125276158d468c91a58be0f30b1 451 contrib/Contents-udeb-armhf\n b49002146fad4eb7e4dce23bc3f48e38 271 contrib/Contents-udeb-armhf.gz\n 68292125276158d468c91a58be0f30b1 451 contrib/Contents-udeb-i386\n b49002146fad4eb7e4dce23bc3f48e38 271 contrib/Contents-udeb-i386.gz\n 68292125276158d468c91a58be0f30b1 451 contrib/Contents-udeb-mips\n b49002146fad4eb7e4dce23bc3f48e38 271 contrib/Contents-udeb-mips.gz\n 68292125276158d468c91a58be0f30b1 451 contrib/Contents-udeb-mipsel\n b49002146fad4eb7e4dce23bc3f48e38 271 contrib/Contents-udeb-mipsel.gz\n 68292125276158d468c91a58be0f30b1 451 contrib/Contents-udeb-powerpc\n b49002146fad4eb7e4dce23bc3f48e38 271 contrib/Contents-udeb-powerpc.gz\n 68292125276158d468c91a58be0f30b1 451 contrib/Contents-udeb-ppc64el\n b49002146fad4eb7e4dce23bc3f48e38 271 contrib/Contents-udeb-ppc64el.gz\n 68292125276158d468c91a58be0f30b1 451 contrib/Contents-udeb-s390x\n b49002146fad4eb7e4dce23bc3f48e38 271 contrib/Contents-udeb-s390x.gz\n 2144d7ae76517ef694cefee675ea945d 84088 contrib/binary-all/Packages\n 1627fe36bf75ca0f158e0c4aacdab00f 27068 contrib/binary-all/Packages.gz\n 08d40d3a5fd8af29724d6c23e322b728 23972 contrib/binary-all/Packages.xz\n 48e02fbe9978d3699ae43cf5b4b57e8c 95 contrib/binary-all/Release\n 44b4038441434b7034e5baa20255e033 197920 contrib/binary-amd64/Packages\n 80b0b38079c2156821dec40a73393cdd 59497 contrib/binary-amd64/Packages.gz\n 15b933f93d0b65fc6fffb220dc0c332a 50148 contrib/binary-amd64/Packages.xz\n 1e30730a1e9daf53e26c4392ca8385b5 97 contrib/binary-amd64/Release\n a13882847705d263b29d02e74dce742d 133412 contrib/binary-arm64/Packages\n 0b2098a23fb8027d85b60bdf6ae6e08e 41581 contrib/binary-arm64/Packages.gz\n a926dd2796c76d9889ab4dc1156ecedc 35820 contrib/binary-arm64/Packages.xz\n ec06af6157c083b41a751823efa416c9 97 contrib/binary-arm64/Release\n 9e9e5aebb9801b6dd4299a060055d603 139108 contrib/binary-armel/Packages\n b31c34813ff2d78f6f655623eeb01e0f 43303 contrib/binary-armel/Packages.gz\n df827148538093fd310f518606f2cf30 37080 contrib/binary-armel/Packages.xz\n 3d18dd170d9277e1f8d40359117ff646 97 contrib/binary-armel/Release\n e20deb4bc8260aa08f577a9e80f78ae3 144377 contrib/binary-armhf/Packages\n ea5e99ca3e8c2316ab495e96804650ae 44682 contrib/binary-armhf/Packages.gz\n a7abb09a437db348ffb93de8cb15d7cc 38120 contrib/binary-armhf/Packages.xz\n 142d1c591b8d86e60106ad8dc32aeab1 97 contrib/binary-armhf/Release\n f371d351ed96f87aa7002af6cf2a7fab 195791 contrib/binary-i386/Packages\n 81e8af87c2894f9c15e1faf9fcf7842b 59070 contrib/binary-i386/Packages.gz\n bc3e8fa532ff99e2c6b83a234dd14aeb 49664 contrib/binary-i386/Packages.xz\n c3db76cd08883567de9bd66460852769 96 contrib/binary-i386/Release\n e713a6e293987f75e62b8c7f55a52fc8 140769 contrib/binary-mips/Packages\n be4db47377a22b6a66ee02ae439a92f0 44128 contrib/binary-mips/Packages.gz\n e7b20b02e1f8fa5d179a25491bc33649 37528 contrib/binary-mips/Packages.xz\n 2885e8a1170091c2a2f9c83ac06e7ad7 96 contrib/binary-mips/Release\n f2b186f8660a48031846c070531d9e69 141032 contrib/binary-mipsel/Packages\n a1da0a43ca7cb87da87d5150c8b2a7ae 43643 contrib/binary-mipsel/Packages.gz\n d3e33270221beb99dd0a68e72a1ae8a3 37556 contrib/binary-mipsel/Packages.xz\n bfdb743f0f0c6f9ad5cb38bf271c48f8 98 contrib/binary-mipsel/Release\n c63134776b6a6285f6bb78e906a7649a 141785 contrib/binary-powerpc/Packages\n 24e404c397abc62aecf15baf46fbc7b2 44063 contrib/binary-powerpc/Packages.gz\n 16c63276764e0762945a5608c05fdf48 37680 contrib/binary-powerpc/Packages.xz\n ace9a3484026f286d2163e0a66504854 99 contrib/binary-powerpc/Release\n 8fa3252ab551e7d6f5b7ff5c68c36791 132657 contrib/binary-ppc64el/Packages\n 1a3f4e4ff86d2d438236671ab5e42b52 41474 contrib/binary-ppc64el/Packages.gz\n ed2326addb80112819f36a220c738295 35672 contrib/binary-ppc64el/Packages.xz\n 8797bb5d8137db73913dd21d924acbbf 99 contrib/binary-ppc64el/Release\n b98cf7f6281daad416253896f697cb77 137661 contrib/binary-s390x/Packages\n 37a58f35b816fd11dbdd60512d11df53 42808 contrib/binary-s390x/Packages.gz\n a5729def6a917f172722dec5f371561b 36736 contrib/binary-s390x/Packages.xz\n bcb2543a5e21aa0d8bd7cca26fcf9099 97 contrib/binary-s390x/Release\n d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-all/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 contrib/debian-installer/binary-all/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 contrib/debian-installer/binary-all/Packages.xz\n 48e02fbe9978d3699ae43cf5b4b57e8c 95 contrib/debian-installer/binary-all/Release\n d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-amd64/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 contrib/debian-installer/binary-amd64/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 contrib/debian-installer/binary-amd64/Packages.xz\n 1e30730a1e9daf53e26c4392ca8385b5 97 contrib/debian-installer/binary-amd64/Release\n d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-arm64/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 contrib/debian-installer/binary-arm64/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 contrib/debian-installer/binary-arm64/Packages.xz\n ec06af6157c083b41a751823efa416c9 97 contrib/debian-installer/binary-arm64/Release\n d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-armel/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 contrib/debian-installer/binary-armel/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 contrib/debian-installer/binary-armel/Packages.xz\n 3d18dd170d9277e1f8d40359117ff646 97 contrib/debian-installer/binary-armel/Release\n d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-armhf/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 contrib/debian-installer/binary-armhf/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 contrib/debian-installer/binary-armhf/Packages.xz\n 142d1c591b8d86e60106ad8dc32aeab1 97 contrib/debian-installer/binary-armhf/Release\n d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-i386/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 contrib/debian-installer/binary-i386/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 contrib/debian-installer/binary-i386/Packages.xz\n c3db76cd08883567de9bd66460852769 96 contrib/debian-installer/binary-i386/Release\n d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-mips/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 contrib/debian-installer/binary-mips/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 contrib/debian-installer/binary-mips/Packages.xz\n 2885e8a1170091c2a2f9c83ac06e7ad7 96 contrib/debian-installer/binary-mips/Release\n d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-mipsel/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 contrib/debian-installer/binary-mipsel/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 contrib/debian-installer/binary-mipsel/Packages.xz\n bfdb743f0f0c6f9ad5cb38bf271c48f8 98 contrib/debian-installer/binary-mipsel/Release\n d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-powerpc/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 contrib/debian-installer/binary-powerpc/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 contrib/debian-installer/binary-powerpc/Packages.xz\n ace9a3484026f286d2163e0a66504854 99 contrib/debian-installer/binary-powerpc/Release\n d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-ppc64el/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 contrib/debian-installer/binary-ppc64el/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 contrib/debian-installer/binary-ppc64el/Packages.xz\n 8797bb5d8137db73913dd21d924acbbf 99 contrib/debian-installer/binary-ppc64el/Release\n d41d8cd98f00b204e9800998ecf8427e 0 contrib/debian-installer/binary-s390x/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 contrib/debian-installer/binary-s390x/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 contrib/debian-installer/binary-s390x/Packages.xz\n bcb2543a5e21aa0d8bd7cca26fcf9099 97 contrib/debian-installer/binary-s390x/Release\n 875f29aa529443960202ddfdb1f66cf0 144545 contrib/i18n/Translation-en\n 6b8c00b809e9d34049c3de5d24234a8a 38501 contrib/i18n/Translation-en.bz2\n 5744c487aca3b2646edf9e2aacd98db3 98 contrib/source/Release\n 6ba276d8791fd855a5ff72f66d48483a 190771 contrib/source/Sources\n dab1929c5e38d303e13122e7c9e34894 59538 contrib/source/Sources.gz\n ac775390dbd711cdef4732efbf38b058 50732 contrib/source/Sources.xz\n 8b22ae72834cf1e1e9fff23d6f5d0e8c 388499395 main/Contents-amd64\n d83ff428c3b1c67e0759fb3c729c2dd6 27382772 main/Contents-amd64.gz\n 83012e911a38715c4430cb619b3c8672 377634498 main/Contents-arm64\n 1bcc0dce57a2cc92c3b5244461655632 26489323 main/Contents-arm64.gz\n 8229bed573efc8953f07bcc6500c8a00 385144337 main/Contents-armel\n 97b9ed5fc74fa2eca18ad3c65c78ef0d 27053197 main/Contents-armel.gz\n ce36086da4ef39cdc138ad82e3116833 384809198 main/Contents-armhf\n 571407c37e561f3ad4e4b21e6b96eca2 27043701 main/Contents-armhf.gz\n 40b781435f247fd1a6ccf5844a4623a7 389950180 main/Contents-i386\n a96849c7f1d34b916b50622743121b4c 27495288 main/Contents-i386.gz\n 7eb9da24d2d66fb99784d202a50382ae 384032305 main/Contents-mips\n 8ee7f06fdab08e7df8c29fc08ea2944f 26959777 main/Contents-mips.gz\n 898fab1a1faf9b41e5235acfa02ee1b0 384611228 main/Contents-mipsel\n eb3ee457d6a36bf7d0dbdc058b518126 26988306 main/Contents-mipsel.gz\n 6c248529429e6890778ac14597572141 386090513 main/Contents-powerpc\n 51a79ec185a0ca6b766ccee889643bb7 27155425 main/Contents-powerpc.gz\n 1c94ee0f65542264993e32656c5d8673 378557860 main/Contents-ppc64el\n 7cae7d01fb1268785fb5c9b78bf931a5 26552792 main/Contents-ppc64el.gz\n 35f27446b3ae9ccbd82c3ccbbaa8b8d6 379662245 main/Contents-s390x\n 41b53b7bfba45608a998193de392345d 26703046 main/Contents-s390x.gz\n 23adcc104b5e2ed059e5ac07a3da7db1 367351454 main/Contents-source\n 0363fc55e71a0a9be221350f8d0c6c0f 42438463 main/Contents-source.gz\n 13ffb2f355cb22f74e02ae144a433855 350284 main/Contents-udeb-amd64\n 4a191da64933fa6e22a51354ec2e7796 29237 main/Contents-udeb-amd64.gz\n 7395e24f0fe9bdbbb777dce6b865a723 292399 main/Contents-udeb-arm64\n ca26a9430f85151c3e8af681cecda8e1 25467 main/Contents-udeb-arm64.gz\n c43089b7f0ed6fff8b129b3df073e98a 333841 main/Contents-udeb-armel\n bb1a553cfd903179a61edf0a091c0628 27497 main/Contents-udeb-armel.gz\n 07e1e6aefe648084a3195eb61e05f299 335668 main/Contents-udeb-armhf\n 33e305f970b455b9fdc5af66fb539c63 28593 main/Contents-udeb-armhf.gz\n b7290e198fc84c0c435f79074405eb43 449459 main/Contents-udeb-i386\n 40dba2d2ac93b4c17f121edaf6f8cd45 35840 main/Contents-udeb-i386.gz\n 563edeb8785f15111fb4d76db84a6a39 459424 main/Contents-udeb-mips\n 054605ab7f77e73d6f566a087a3eae8d 35712 main/Contents-udeb-mips.gz\n 68c1c3247d740a984db990896772737a 577364 main/Contents-udeb-mipsel\n cc61653e21b3dfa457bc85ffa2494ab7 42940 main/Contents-udeb-mipsel.gz\n 65e82c3a6929339823819367e2447f68 416008 main/Contents-udeb-powerpc\n 30dda0e8644b94aa616326b8aceb4f87 33010 main/Contents-udeb-powerpc.gz\n 4c02ff75a0f937f729ea2275e3c17571 311289 main/Contents-udeb-ppc64el\n ff7e93f149fb6ce8c99acf06cc61f37e 26501 main/Contents-udeb-ppc64el.gz\n 31e83117a563201fbe583bd1396ee762 271386 main/Contents-udeb-s390x\n 9e2efa58ddbab0e9042e04ed0fa6eccb 23838 main/Contents-udeb-s390x.gz\n d94b01333ba0d7700f78c188972a1ec6 14026643 main/binary-all/Packages\n 82fdfe874f0957404837173bf2771788 3910282 main/binary-all/Packages.gz\n 94814d69c0bbc3fce8ca70e4d6b35955 2983148 main/binary-all/Packages.xz\n 995485f952399b3d3cbc092ff7a7186a 92 main/binary-all/Release\n e9cf2b0d474b383d80eea5904c57637a 33803992 main/binary-amd64/Packages\n a76b7f3f656d7855234345f6d7e706f4 9034031 main/binary-amd64/Packages.gz\n 2575ab7902542c6db8f455c6cb5131ff 6763012 main/binary-amd64/Packages.xz\n ce38c7703f5d143747dd3040f054805a 94 main/binary-amd64/Release\n 79b7c9b7a341527f98008525fc15e8ac 31834962 main/binary-arm64/Packages\n 92472cfeb93726f0139301af18aadb49 8530527 main/binary-arm64/Packages.gz\n 19f8ad1a462f63554b6510fc0b7ebeba 6393456 main/binary-arm64/Packages.xz\n c41af648f0d0a4e9d8f3c13feecedbce 94 main/binary-arm64/Release\n 95451011090c6e1a888c6997c1b1f14b 33019861 main/binary-armel/Packages\n 9670911fdf5e18d206fa564dc72b89c3 8836571 main/binary-armel/Packages.gz\n 13f9b8762df648791066152e49e317c1 6620072 main/binary-armel/Packages.xz\n 5cb8b2edf1be33df28dd3967f8504c8b 94 main/binary-armel/Release\n 20720169a02c23a04e949580f150c150 33011756 main/binary-armhf/Packages\n 8d34dac3637903b2c0a1bc728cfa0b41 8834875 main/binary-armhf/Packages.gz\n b52a8b7adcf72e897f0283a95246d961 6618916 main/binary-armhf/Packages.xz\n da66ea65fdabbcbd3e2505c2deb6ace3 94 main/binary-armhf/Release\n f97e1611a040ceaa586f3f7ded26195f 33776741 main/binary-i386/Packages\n 012b9a1fcfdaa4f48b4d3aa35ed2e9a0 9036604 main/binary-i386/Packages.gz\n 359e5ceee68df092c78713ecd226d247 6767908 main/binary-i386/Packages.xz\n c81f91c05f478ec96817b7daea357312 93 main/binary-i386/Release\n 5f6985e6c76fadb42f322c66059b987b 32706812 main/binary-mips/Packages\n def23ca3964d0beef35b99bca833c2c8 8777040 main/binary-mips/Packages.gz\n f9fa2b249ddd794d7829aa132436263a 6577212 main/binary-mips/Packages.xz\n 1fba2895cc7e9230d9642ee0221c98dc 93 main/binary-mips/Release\n ccaa92ec8b32efbdf258f798867cfc4b 32864681 main/binary-mipsel/Packages\n 45830ea646f6ff5f49eb9a897fda582a 8803154 main/binary-mipsel/Packages.gz\n bb874e1d945bc85e4e5524dd7174a3aa 6592348 main/binary-mipsel/Packages.xz\n 5ad4081c8ad47571308eb549a8dbcae2 95 main/binary-mipsel/Release\n 0713b97029c211b75b05cfe8bb7612bc 33334897 main/binary-powerpc/Packages\n fcaf3250fc40471911f78329b531093e 8899600 main/binary-powerpc/Packages.gz\n 50b45b143847ccabc063094350d6cdec 6661992 main/binary-powerpc/Packages.xz\n 1b919d93de997469acd58df8ed832dcc 96 main/binary-powerpc/Release\n 1b8d0a01083be1eb80b487634fea3897 32355461 main/binary-ppc64el/Packages\n 85aa3ed12acf6a4c37fae8ba9208babf 8643121 main/binary-ppc64el/Packages.gz\n e8fa490b1dd5929c88361e64511c5bf7 6475272 main/binary-ppc64el/Packages.xz\n d495a6e771fe34be20987e68b73d02df 96 main/binary-ppc64el/Release\n f900d06afb4938490cdc3d85507c7a2e 32544327 main/binary-s390x/Packages\n d5fe0178799c6ac90f0dec03b2f0a511 8731295 main/binary-s390x/Packages.gz\n 63953b23729e0b8e0fcdc6d9153a6bf1 6537136 main/binary-s390x/Packages.xz\n 9ccb46b82bac62b62ca5d7eed57438b2 94 main/binary-s390x/Release\n ffbfcf4afd8fb7a112ecb60c7368669e 67833 main/debian-installer/binary-all/Packages\n f293f545dcf04c6c13976bc8e73a8372 19761 main/debian-installer/binary-all/Packages.gz\n c7817df0bbae79736c2a1ba136f1bd52 17164 main/debian-installer/binary-all/Packages.xz\n 995485f952399b3d3cbc092ff7a7186a 92 main/debian-installer/binary-all/Release\n 415586386256d95b85e12f7b0b91cd8f 239258 main/debian-installer/binary-amd64/Packages\n c7c1bb691de1d6b3e92be7a9275753e4 68568 main/debian-installer/binary-amd64/Packages.gz\n b886d8f3f166431a848c4bc2846651be 57132 main/debian-installer/binary-amd64/Packages.xz\n ce38c7703f5d143747dd3040f054805a 94 main/debian-installer/binary-amd64/Release\n 72bdf079a978b3dd49fe59f909c4b88e 221891 main/debian-installer/binary-arm64/Packages\n 276937ed97be150a76ca1a4a2a6fdccb 64123 main/debian-installer/binary-arm64/Packages.gz\n 7eebeac012638386595e6a950185e525 53680 main/debian-installer/binary-arm64/Packages.xz\n c41af648f0d0a4e9d8f3c13feecedbce 94 main/debian-installer/binary-arm64/Release\n 524885b49944b4bdd3eaeb626587163d 266310 main/debian-installer/binary-armel/Packages\n c47d290d17dbe38af03ced42196c27a3 71883 main/debian-installer/binary-armel/Packages.gz\n 1238b8421fecece12c3e4071fc6e6038 60396 main/debian-installer/binary-armel/Packages.xz\n 5cb8b2edf1be33df28dd3967f8504c8b 94 main/debian-installer/binary-armel/Release\n 76adce9705fe895feb207ee9ff29dc40 223825 main/debian-installer/binary-armhf/Packages\n 0ef962c4e0197f6628f29b799580b0bc 65094 main/debian-installer/binary-armhf/Packages.gz\n 7d5aa71fb7198647431703507c0829e5 54328 main/debian-installer/binary-armhf/Packages.xz\n da66ea65fdabbcbd3e2505c2deb6ace3 94 main/debian-installer/binary-armhf/Release\n 73ce3ecc229bc9bbe76a6f3ff0ed937a 278560 main/debian-installer/binary-i386/Packages\n 89dc787bc9475a928da53862d24e6c11 75254 main/debian-installer/binary-i386/Packages.gz\n d95110b077e10362d587c6881b467daf 62948 main/debian-installer/binary-i386/Packages.xz\n c81f91c05f478ec96817b7daea357312 93 main/debian-installer/binary-i386/Release\n 5399f5b27d3ba098112bbe0e2bb025eb 315509 main/debian-installer/binary-mips/Packages\n facd9eabe7b4ecdb7128d0d8fe133d52 80641 main/debian-installer/binary-mips/Packages.gz\n a8f07347a9b79b31f844bc2ba897efe5 67488 main/debian-installer/binary-mips/Packages.xz\n 1fba2895cc7e9230d9642ee0221c98dc 93 main/debian-installer/binary-mips/Release\n 9eada55ad4032dcc908f70e88c09c629 360282 main/debian-installer/binary-mipsel/Packages\n f46589ec6fcae45e59cac9eb29b236ec 87159 main/debian-installer/binary-mipsel/Packages.gz\n 21521c4b619d205e4af61433d79a83fa 73104 main/debian-installer/binary-mipsel/Packages.xz\n 5ad4081c8ad47571308eb549a8dbcae2 95 main/debian-installer/binary-mipsel/Release\n 80d6db38fada19593160fa55dadeae00 270218 main/debian-installer/binary-powerpc/Packages\n 01ddb5ad9ba9a398f1550cdb71cb3dfe 73034 main/debian-installer/binary-powerpc/Packages.gz\n c1f64fd815e091ff3c66e926a5742d0d 61240 main/debian-installer/binary-powerpc/Packages.xz\n 1b919d93de997469acd58df8ed832dcc 96 main/debian-installer/binary-powerpc/Release\n 9f6ad38a4b1a27c488f779b428878494 226678 main/debian-installer/binary-ppc64el/Packages\n 31b70c7011444382abbd1271d98d3a89 64514 main/debian-installer/binary-ppc64el/Packages.gz\n cf2581e2948cb5df340d526460e3a9dc 54232 main/debian-installer/binary-ppc64el/Packages.xz\n d495a6e771fe34be20987e68b73d02df 96 main/debian-installer/binary-ppc64el/Release\n 0a60a109ee8101bf4a59d433db7a9621 206660 main/debian-installer/binary-s390x/Packages\n e5f5b324b0d6ad2b9d8022ea9e6b66ec 60710 main/debian-installer/binary-s390x/Packages.gz\n 0b15848c3fa05c54260dcb744fc1bd0f 51004 main/debian-installer/binary-s390x/Packages.xz\n 9ccb46b82bac62b62ca5d7eed57438b2 94 main/debian-installer/binary-s390x/Release\n 348635c0ff26a9daf03afc05e2ae9f8d 9627 main/i18n/Translation-ca\n 7769b51bb58472bb34d711bf635fa4e2 3865 main/i18n/Translation-ca.bz2\n 0927d045de9ea149e8b1fe08daf2a4ff 1893411 main/i18n/Translation-cs\n dd719c7148e2327b641271f0f3c680d4 494559 main/i18n/Translation-cs.bz2\n 8446964ffff316782c4a018e41bab84c 13166981 main/i18n/Translation-da\n 429907fbcb864d45f5a2274f5a967053 2901281 main/i18n/Translation-da.bz2\n d11cd1c53d0a3540e211f3f934cc874a 7664182 main/i18n/Translation-de\n d5eb8cfc7a184d1bd8bafc528587367d 1754517 main/i18n/Translation-de.bz2\n a344219bf0eec9139d5270017ecfceee 1347 main/i18n/Translation-de_DE\n 0fe0725f74bb5249f15f30ce965142d5 830 main/i18n/Translation-de_DE.bz2\n c26d1f5d454d59a734435115a463bc5e 8287 main/i18n/Translation-el\n a2e3d718b49885932660c9c5dbdc0570 1896 main/i18n/Translation-el.bz2\n 2a2a0c7f640438b9c9a56cd4e811d850 22310532 main/i18n/Translation-en\n 7f01df0c852edf5a9a4ca4eafc78c26d 4582125 main/i18n/Translation-en.bz2\n 0c8ebf866e74ebf2d13a6667b2de8898 2739 main/i18n/Translation-eo\n 20eada7675a89d6de9ef9f9d5bb50c9b 1344 main/i18n/Translation-eo.bz2\n 7b4d0aa1325b4152ce07cec6b4d425cf 1278186 main/i18n/Translation-es\n 4c61b5e2f94bf4204d9c4a869aef68ff 314368 main/i18n/Translation-es.bz2\n bd07e221727c32816e495848e7cd0f5b 17288 main/i18n/Translation-eu\n 18992bed6a6b01a12333635b1d94773d 6460 main/i18n/Translation-eu.bz2\n 69fe85558f11c0b1559101dcde685542 390801 main/i18n/Translation-fi\n 81dbe038b66ed6c0854c28c0631510a2 108973 main/i18n/Translation-fi.bz2\n c25501d80385928ee7e3f06916258c96 3701781 main/i18n/Translation-fr\n c024066a0c48fd9b7506954934bc9adf 846329 main/i18n/Translation-fr.bz2\n 32d079a7a5251723d01e7d44a501a68a 14962 main/i18n/Translation-hr\n 81cdaae6c7ecfed80125c6eb75efe310 5841 main/i18n/Translation-hr.bz2\n d4d76a6110bac15c7a69ff809219460b 101201 main/i18n/Translation-hu\n b21515add52faa84eda9e044f2af7d97 33209 main/i18n/Translation-hu.bz2\n 34ec59df8bca0339a18f33e475ec9965 7753 main/i18n/Translation-id\n c1adb75e39ecbdc6eadd353d22b47f7d 3093 main/i18n/Translation-id.bz2\n df4e81c737205744679ae0c8a3f72027 17993956 main/i18n/Translation-it\n 2b9a51f43f55e899ab0b6230ef5086a9 3656485 main/i18n/Translation-it.bz2\n 69582fcad0506a2b759b325ae5a25b70 4376703 main/i18n/Translation-ja\n e526f2a3797ecea54169187837f53202 794698 main/i18n/Translation-ja.bz2\n b63e768393ddb6060fab105db3c39605 21141 main/i18n/Translation-km\n 382da97227f82fb8baf5e7afb121787a 3796 main/i18n/Translation-km.bz2\n 20bae7cbe48fd0a36127b4541dcdca73 924206 main/i18n/Translation-ko\n 01651e0f40bdf6c3da8e0258152d5b2a 204449 main/i18n/Translation-ko.bz2\n d41d8cd98f00b204e9800998ecf8427e 0 main/i18n/Translation-ml\n 4059d198768f9f8dc9372dc1c54bc3c3 14 main/i18n/Translation-ml.bz2\n 5676b1dbf1afed1dfd2ed8c4d87d6f8e 2325 main/i18n/Translation-nb\n be1e645de35839db0778d87b8e903e43 1302 main/i18n/Translation-nb.bz2\n 34c113f41d99028bdb0709d2aa36479c 267344 main/i18n/Translation-nl\n 4223513a6e2e1872c62dfad54e8dd5ca 74095 main/i18n/Translation-nl.bz2\n 5cfb340cfad97a0a262b4c5ac90fe12c 2490134 main/i18n/Translation-pl\n 8ec7270b392b184961302dd86332c363 574404 main/i18n/Translation-pl.bz2\n d1b03ae2be31e5853195c11d0d0310fb 1712133 main/i18n/Translation-pt\n ff59118e6b9b99b5d8f361d9bbc3e3e5 413142 main/i18n/Translation-pt.bz2\n 5c86875535d6d5c8a7ffcede865ee530 3363311 main/i18n/Translation-pt_BR\n 983c9e3d823c946e64c542d4f9243684 802754 main/i18n/Translation-pt_BR.bz2\n 9574eddfdb6ee4fa59d2cf7e74a63aa3 2949 main/i18n/Translation-ro\n 82c63f5ea9cfd275bea9b476f34b6653 1463 main/i18n/Translation-ro.bz2\n 211ea3dd132616c2d8dd9d1789225fd8 2684275 main/i18n/Translation-ru\n ef6476298fc0a11e5ebbc5cd97d764de 437612 main/i18n/Translation-ru.bz2\n 895452b9a3e593d4c414eb990aac7840 2106842 main/i18n/Translation-sk\n 0d90fda69c024b6fc77a399284e4346a 509104 main/i18n/Translation-sk.bz2\n 1ac5fae7259a2d9005931e9d067347c2 455684 main/i18n/Translation-sr\n 0ecf73379f6a96cfa577007a358ca92a 81894 main/i18n/Translation-sr.bz2\n 66a4d41cf016d506d4d49e4fbe9787f9 132973 main/i18n/Translation-sv\n 7d33a2add5c76e5b5fb5ba576df43cf9 40142 main/i18n/Translation-sv.bz2\n 617fcb26803e9b2a60c2716ea4744451 902 main/i18n/Translation-tr\n 96c9deb10e4bb691e778589dec582fd7 530 main/i18n/Translation-tr.bz2\n b80c405f1ef48129f664b9ccb22beb1a 4630335 main/i18n/Translation-uk\n c7a6ff80d5640d5bed7f2af379cd2f03 734132 main/i18n/Translation-uk.bz2\n c67b37189067f0f61cac32ed56400701 36422 main/i18n/Translation-vi\n 9b85ff05670f25504a9e4baeaeccfb59 10243 main/i18n/Translation-vi.bz2\n 7717fa25bd691ec385bddacf42419c9f 2799 main/i18n/Translation-zh\n b5a4e7e47da47ac7596ed5d72fdeef93 1526 main/i18n/Translation-zh.bz2\n dc0784e7a66476e4816a019c6bd782e3 367410 main/i18n/Translation-zh_CN\n 1953e9197757a528dedc8dd068d1bf9d 100783 main/i18n/Translation-zh_CN.bz2\n c891d0ca7a79055ce8aeeba053751805 64019 main/i18n/Translation-zh_TW\n 666bbc4ff38def9af5bb1d06331f2b86 22485 main/i18n/Translation-zh_TW.bz2\n 0ff746454dcc6bb75da50e1e42e9607c 53815 main/installer-amd64/20150422+deb8u3/images/MD5SUMS\n d6114063a4b7014a2ceff5b40b081970 72131 main/installer-amd64/20150422+deb8u3/images/SHA256SUMS\n c06312d27a05b395a5a45ae7c2507ab5 53815 main/installer-amd64/20150422/images/MD5SUMS\n bc3feb487bafcbdfd06e06284000e368 72131 main/installer-amd64/20150422/images/SHA256SUMS\n 0ff746454dcc6bb75da50e1e42e9607c 53815 main/installer-amd64/current/images/MD5SUMS\n d6114063a4b7014a2ceff5b40b081970 72131 main/installer-amd64/current/images/SHA256SUMS\n 15673995331d47bac60113b648bea116 19148 main/installer-arm64/20150422+deb8u3/images/MD5SUMS\n 8106ba2ff6bbdec99e5b0d1b3f7c2c95 25912 main/installer-arm64/20150422+deb8u3/images/SHA256SUMS\n c52390d4695c984028c98a32f7a76dff 19148 main/installer-arm64/20150422/images/MD5SUMS\n f4160f9f0b4b49d8997ee2c920004594 25912 main/installer-arm64/20150422/images/SHA256SUMS\n 15673995331d47bac60113b648bea116 19148 main/installer-arm64/current/images/MD5SUMS\n 8106ba2ff6bbdec99e5b0d1b3f7c2c95 25912 main/installer-arm64/current/images/SHA256SUMS\n b7d00b448b75ea4358107359cc823fab 11455 main/installer-armel/20150422+deb8u3/images/MD5SUMS\n cbf380aac46563cfd06d3b3e3e80a8cc 16107 main/installer-armel/20150422+deb8u3/images/SHA256SUMS\n 42fdeb26bb11aeba2b73bb665394ed5d 8985 main/installer-armel/20150422/images/MD5SUMS\n 5508c992d754756a76d94459694d0846 12645 main/installer-armel/20150422/images/SHA256SUMS\n b7d00b448b75ea4358107359cc823fab 11455 main/installer-armel/current/images/MD5SUMS\n cbf380aac46563cfd06d3b3e3e80a8cc 16107 main/installer-armel/current/images/SHA256SUMS\n 263fafeaec8b268dec729475960f7464 19599 main/installer-armhf/20150422+deb8u3/images/MD5SUMS\n 5a41b617ebd526e8f93e417b25335313 28379 main/installer-armhf/20150422+deb8u3/images/SHA256SUMS\n 77d9da266c887d99f50e4a78770da16a 19599 main/installer-armhf/20150422/images/MD5SUMS\n e1ea97c8e0f0ab02e0acf66302b64072 28379 main/installer-armhf/20150422/images/SHA256SUMS\n 263fafeaec8b268dec729475960f7464 19599 main/installer-armhf/current/images/MD5SUMS\n 5a41b617ebd526e8f93e417b25335313 28379 main/installer-armhf/current/images/SHA256SUMS\n d9d42587b02cb41278253454a2cc9a95 52495 main/installer-i386/20150422+deb8u3/images/MD5SUMS\n ff5f82cf356a2675babfb55e6e91cb60 70875 main/installer-i386/20150422+deb8u3/images/SHA256SUMS\n 6945a44a20596ed6e81e3dea9c2f3ddf 52495 main/installer-i386/20150422/images/MD5SUMS\n 34ce5cc3c7b4ac330eb592aa8fb8c41e 70875 main/installer-i386/20150422/images/SHA256SUMS\n d9d42587b02cb41278253454a2cc9a95 52495 main/installer-i386/current/images/MD5SUMS\n ff5f82cf356a2675babfb55e6e91cb60 70875 main/installer-i386/current/images/SHA256SUMS\n 0f73e47a089c70895313915c5f41f96d 940 main/installer-mips/20150422+deb8u3/images/MD5SUMS\n bfa17bc6108eead7c6c3b1cf3f89461e 1496 main/installer-mips/20150422+deb8u3/images/SHA256SUMS\n 48639d5b34148741df2132cb9079bd79 940 main/installer-mips/20150422/images/MD5SUMS\n e592333fd6d054e559d15027b9c3ebaa 1496 main/installer-mips/20150422/images/SHA256SUMS\n 0f73e47a089c70895313915c5f41f96d 940 main/installer-mips/current/images/MD5SUMS\n bfa17bc6108eead7c6c3b1cf3f89461e 1496 main/installer-mips/current/images/SHA256SUMS\n a214c05d243ee97db4b9d0304a8035d1 1213 main/installer-mipsel/20150422+deb8u3/images/MD5SUMS\n 1427144e99915fae9a94defd82b858c6 1865 main/installer-mipsel/20150422+deb8u3/images/SHA256SUMS\n a1c3f76716993801388b8224d75b0968 1213 main/installer-mipsel/20150422/images/MD5SUMS\n 266b1b098b295678ad04fba1e9734dd1 1865 main/installer-mipsel/20150422/images/SHA256SUMS\n a214c05d243ee97db4b9d0304a8035d1 1213 main/installer-mipsel/current/images/MD5SUMS\n 1427144e99915fae9a94defd82b858c6 1865 main/installer-mipsel/current/images/SHA256SUMS\n b78ee81a26c61ff84caeabb4ac883ec7 2128 main/installer-powerpc/20150422+deb8u3/images/MD5SUMS\n 378ba55752457f7d0973435d8e219b1b 3292 main/installer-powerpc/20150422+deb8u3/images/SHA256SUMS\n 757a78a03000d563e55139d067fd3463 2128 main/installer-powerpc/20150422/images/MD5SUMS\n 76c2a153bd1076a232bf969c35155903 3292 main/installer-powerpc/20150422/images/SHA256SUMS\n b78ee81a26c61ff84caeabb4ac883ec7 2128 main/installer-powerpc/current/images/MD5SUMS\n 378ba55752457f7d0973435d8e219b1b 3292 main/installer-powerpc/current/images/SHA256SUMS\n baaf0a7d7c59384654d1e347bc9264df 576 main/installer-ppc64el/20150422+deb8u3/images/MD5SUMS\n e1e919aab1a4d0aeaa0d20f8756cc2b4 972 main/installer-ppc64el/20150422+deb8u3/images/SHA256SUMS\n 6730181232434b5e0b07f070e4037e5b 576 main/installer-ppc64el/20150422/images/MD5SUMS\n 6b13d9e4427cf78bdd9a3b70ac84ff0b 972 main/installer-ppc64el/20150422/images/SHA256SUMS\n baaf0a7d7c59384654d1e347bc9264df 576 main/installer-ppc64el/current/images/MD5SUMS\n e1e919aab1a4d0aeaa0d20f8756cc2b4 972 main/installer-ppc64el/current/images/SHA256SUMS\n fe2fa2eec9e12c66ea47c1830cfc1493 374 main/installer-s390x/20150422+deb8u3/images/MD5SUMS\n 3e67bbddddc723e88117019970f60e6e 674 main/installer-s390x/20150422+deb8u3/images/SHA256SUMS\n 9a80df21f5bd9c52f25e424e490f97bb 374 main/installer-s390x/20150422/images/MD5SUMS\n 20355389634104504def0522c0a4f62c 674 main/installer-s390x/20150422/images/SHA256SUMS\n fe2fa2eec9e12c66ea47c1830cfc1493 374 main/installer-s390x/current/images/MD5SUMS\n 3e67bbddddc723e88117019970f60e6e 674 main/installer-s390x/current/images/SHA256SUMS\n 49c8f9d1ae17885f25cfc77b6cfc7dda 95 main/source/Release\n a4fcb028191f9dc3ed32543018e98511 32525646 main/source/Sources\n 81bc9ad5613332f81bbf03e01c0b09d4 9159302 main/source/Sources.gz\n ec4de9686eb6732f29d8fb756fe0db7e 7057820 main/source/Sources.xz\n 5b2d5f8a38597344d2e97e76fd91aec6 13877222 non-free/Contents-amd64\n 5c5281f6a4c30880ec796d92513864c4 780498 non-free/Contents-amd64.gz\n c1d2d2b0775b07bd8f7b0b58925b1f4a 12897999 non-free/Contents-arm64\n 075fe72ccec9433afb28008ea2ecb2fa 702540 non-free/Contents-arm64.gz\n 1c46f3247e11615348b9e5235a2f7bbc 12974741 non-free/Contents-armel\n 798219760c21d5eeb414c1008e1df327 709563 non-free/Contents-armel.gz\n 76adf3c5631f06d7cc2f64de1d5572ad 12999205 non-free/Contents-armhf\n 44588dc798f653c78c3e57282962921e 711695 non-free/Contents-armhf.gz\n e8e2b5bd75f62f72266925811ccd0d55 13773811 non-free/Contents-i386\n 3df0da65722587e0f348fac6a0903bfb 772393 non-free/Contents-i386.gz\n d136c21fe8f01cd86db58ada88f8659f 12988825 non-free/Contents-mips\n 0ec5c59b5e168c425ee2a0653a3c608a 711583 non-free/Contents-mips.gz\n f02611ef93dcd3806c4c430e3c362791 12993815 non-free/Contents-mipsel\n febc765584d515e8620ae81d8c0844a1 711601 non-free/Contents-mipsel.gz\n f142ae936d7078fc1221d3e354f3cf05 12984577 non-free/Contents-powerpc\n a35ebb57db5bbbf4899e711b7a2a6aee 710876 non-free/Contents-powerpc.gz\n 0ebd1cc03eb863c8e0135091303d124a 12944312 non-free/Contents-ppc64el\n 9cdcab40c4173e5efa5a1de026ceb519 707039 non-free/Contents-ppc64el.gz\n 7452d9311c19a442b0cfe1900b8d7abe 12985998 non-free/Contents-s390x\n 9d7fe31c8e5f18c80891259192065d97 710997 non-free/Contents-s390x.gz\n ce72bec1769f9f0067ad185a71abf6d6 8566061 non-free/Contents-source\n 8b2aea03f33bb8924ecef0e51da31173 917234 non-free/Contents-source.gz\n 68292125276158d468c91a58be0f30b1 451 non-free/Contents-udeb-amd64\n b49002146fad4eb7e4dce23bc3f48e38 271 non-free/Contents-udeb-amd64.gz\n 68292125276158d468c91a58be0f30b1 451 non-free/Contents-udeb-arm64\n b49002146fad4eb7e4dce23bc3f48e38 271 non-free/Contents-udeb-arm64.gz\n 68292125276158d468c91a58be0f30b1 451 non-free/Contents-udeb-armel\n b49002146fad4eb7e4dce23bc3f48e38 271 non-free/Contents-udeb-armel.gz\n 68292125276158d468c91a58be0f30b1 451 non-free/Contents-udeb-armhf\n b49002146fad4eb7e4dce23bc3f48e38 271 non-free/Contents-udeb-armhf.gz\n 68292125276158d468c91a58be0f30b1 451 non-free/Contents-udeb-i386\n b49002146fad4eb7e4dce23bc3f48e38 271 non-free/Contents-udeb-i386.gz\n 68292125276158d468c91a58be0f30b1 451 non-free/Contents-udeb-mips\n b49002146fad4eb7e4dce23bc3f48e38 271 non-free/Contents-udeb-mips.gz\n 68292125276158d468c91a58be0f30b1 451 non-free/Contents-udeb-mipsel\n b49002146fad4eb7e4dce23bc3f48e38 271 non-free/Contents-udeb-mipsel.gz\n 68292125276158d468c91a58be0f30b1 451 non-free/Contents-udeb-powerpc\n b49002146fad4eb7e4dce23bc3f48e38 271 non-free/Contents-udeb-powerpc.gz\n 68292125276158d468c91a58be0f30b1 451 non-free/Contents-udeb-ppc64el\n b49002146fad4eb7e4dce23bc3f48e38 271 non-free/Contents-udeb-ppc64el.gz\n 68292125276158d468c91a58be0f30b1 451 non-free/Contents-udeb-s390x\n b49002146fad4eb7e4dce23bc3f48e38 271 non-free/Contents-udeb-s390x.gz\n 9e2bc3b57b384c8efc9b60effa516bdd 190290 non-free/binary-all/Packages\n a5af92957e43d9a09a6dbf4a696c2a3b 56586 non-free/binary-all/Packages.gz\n 67dfa68c1c8486f75ccae6aea5e7655b 47972 non-free/binary-all/Packages.xz\n 66d75eba5deabf3cf9da77a1d4d697a9 96 non-free/binary-all/Release\n 52419eba3a3a447186fb099c323bb823 354996 non-free/binary-amd64/Packages\n 9887d9875cb960470810c49f7ccb5e0f 101166 non-free/binary-amd64/Packages.gz\n 9ca4fc4cea1a1c5aa3ac544bc0d1550e 83588 non-free/binary-amd64/Packages.xz\n e69eac9f3f3df90486aa78fc7cc33202 98 non-free/binary-amd64/Release\n ba0459ac30c0030b9ec3480741024237 229637 non-free/binary-arm64/Packages\n c9d0dba17d85c3dbf9cf59e114cc1f74 68405 non-free/binary-arm64/Packages.gz\n 8b28667be805c3d82e1d639c04acc1a8 57176 non-free/binary-arm64/Packages.xz\n 4ed4de3bfd79c85f9b76075fb474d89e 98 non-free/binary-arm64/Release\n 37ddbcf0a474e0793fec1d8aa01b322a 239210 non-free/binary-armel/Packages\n 566167236b905da98019aef25e98cab5 71051 non-free/binary-armel/Packages.gz\n e357db8b9d90fe3762df8f5cbec93869 59672 non-free/binary-armel/Packages.xz\n d2e0a9e709395f677d76675dcb0cee7f 98 non-free/binary-armel/Release\n 356876cc659023ffcf8d0d86b8055ea7 253996 non-free/binary-armhf/Packages\n 2e41cff218f70c7ff3c0162a37554c1e 74488 non-free/binary-armhf/Packages.gz\n 196168d3024bd93f41f2bbeb3b91ce35 62208 non-free/binary-armhf/Packages.xz\n 4efadb82f672d2342ceb35ec68aac9be 98 non-free/binary-armhf/Release\n 28d0c89e1010ffa6d0f7d13b549b7c94 343052 non-free/binary-i386/Packages\n 4367596ce8db632aeab9f497e99bffef 96981 non-free/binary-i386/Packages.gz\n 3d2e8da75aaba94229724eb471b467eb 80188 non-free/binary-i386/Packages.xz\n 878b7e403bbca5b7a6a7a3dc6151bd94 97 non-free/binary-i386/Release\n fda510cf85bfe863d08d5fa497243174 240639 non-free/binary-mips/Packages\n 509a0d41b5ab0e096406df525f7a23c8 71678 non-free/binary-mips/Packages.gz\n 5bed1f87a952e334d799ec88121f08f2 59872 non-free/binary-mips/Packages.xz\n 4b4872072988bbf27a4dbb426df95ebf 97 non-free/binary-mips/Release\n c29a41b396687fd2e8640b1e05b0f0dd 243142 non-free/binary-mipsel/Packages\n b8e68bd25b839970d218f4ca0e9414e9 72219 non-free/binary-mipsel/Packages.gz\n 190f01e7c19cd385cc135bbdd1de227c 60272 non-free/binary-mipsel/Packages.xz\n fa1bd7ac6c2cbcc1649aaaf0a2afaa97 99 non-free/binary-mipsel/Release\n 9f8f5e96fcb815da31dd593f57d15958 239108 non-free/binary-powerpc/Packages\n d57bc689035580701e82b25dbac53fbe 71098 non-free/binary-powerpc/Packages.gz\n a10d214d718ce96c736d4fd4528ac110 59504 non-free/binary-powerpc/Packages.xz\n d04803457514a6193c950bd5651093a4 100 non-free/binary-powerpc/Release\n 26738eedcf08665500c30ed8eb9466bf 232848 non-free/binary-ppc64el/Packages\n fc96c9847df6469fc33de68f66428dd6 68870 non-free/binary-ppc64el/Packages.gz\n bf8752a9354836b1f58083102c5d3e16 57800 non-free/binary-ppc64el/Packages.xz\n 1fd180fe45e7c034387814d675ada4ec 100 non-free/binary-ppc64el/Release\n 936c705ee78beffcbd8dace3420c81b0 239490 non-free/binary-s390x/Packages\n 603b9bc678f0e03a20efe9dd601e0e15 71048 non-free/binary-s390x/Packages.gz\n 3fa4e83f7d0dd10f00e0b662cadedabe 59500 non-free/binary-s390x/Packages.xz\n fbdc66a851da00874a7fde2f8818229d 98 non-free/binary-s390x/Release\n d41d8cd98f00b204e9800998ecf8427e 0 non-free/debian-installer/binary-all/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 non-free/debian-installer/binary-all/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 non-free/debian-installer/binary-all/Packages.xz\n 66d75eba5deabf3cf9da77a1d4d697a9 96 non-free/debian-installer/binary-all/Release\n d41d8cd98f00b204e9800998ecf8427e 0 non-free/debian-installer/binary-amd64/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 non-free/debian-installer/binary-amd64/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 non-free/debian-installer/binary-amd64/Packages.xz\n e69eac9f3f3df90486aa78fc7cc33202 98 non-free/debian-installer/binary-amd64/Release\n d41d8cd98f00b204e9800998ecf8427e 0 non-free/debian-installer/binary-arm64/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 non-free/debian-installer/binary-arm64/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 non-free/debian-installer/binary-arm64/Packages.xz\n 4ed4de3bfd79c85f9b76075fb474d89e 98 non-free/debian-installer/binary-arm64/Release\n d41d8cd98f00b204e9800998ecf8427e 0 non-free/debian-installer/binary-armel/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 non-free/debian-installer/binary-armel/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 non-free/debian-installer/binary-armel/Packages.xz\n d2e0a9e709395f677d76675dcb0cee7f 98 non-free/debian-installer/binary-armel/Release\n d41d8cd98f00b204e9800998ecf8427e 0 non-free/debian-installer/binary-armhf/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 non-free/debian-installer/binary-armhf/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 non-free/debian-installer/binary-armhf/Packages.xz\n 4efadb82f672d2342ceb35ec68aac9be 98 non-free/debian-installer/binary-armhf/Release\n d41d8cd98f00b204e9800998ecf8427e 0 non-free/debian-installer/binary-i386/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 non-free/debian-installer/binary-i386/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 non-free/debian-installer/binary-i386/Packages.xz\n 878b7e403bbca5b7a6a7a3dc6151bd94 97 non-free/debian-installer/binary-i386/Release\n d41d8cd98f00b204e9800998ecf8427e 0 non-free/debian-installer/binary-mips/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 non-free/debian-installer/binary-mips/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 non-free/debian-installer/binary-mips/Packages.xz\n 4b4872072988bbf27a4dbb426df95ebf 97 non-free/debian-installer/binary-mips/Release\n d41d8cd98f00b204e9800998ecf8427e 0 non-free/debian-installer/binary-mipsel/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 non-free/debian-installer/binary-mipsel/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 non-free/debian-installer/binary-mipsel/Packages.xz\n fa1bd7ac6c2cbcc1649aaaf0a2afaa97 99 non-free/debian-installer/binary-mipsel/Release\n d41d8cd98f00b204e9800998ecf8427e 0 non-free/debian-installer/binary-powerpc/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 non-free/debian-installer/binary-powerpc/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 non-free/debian-installer/binary-powerpc/Packages.xz\n d04803457514a6193c950bd5651093a4 100 non-free/debian-installer/binary-powerpc/Release\n d41d8cd98f00b204e9800998ecf8427e 0 non-free/debian-installer/binary-ppc64el/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 non-free/debian-installer/binary-ppc64el/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 non-free/debian-installer/binary-ppc64el/Packages.xz\n 1fd180fe45e7c034387814d675ada4ec 100 non-free/debian-installer/binary-ppc64el/Release\n d41d8cd98f00b204e9800998ecf8427e 0 non-free/debian-installer/binary-s390x/Packages\n 4a4dd3598707603b3f76a2378a4504aa 20 non-free/debian-installer/binary-s390x/Packages.gz\n 8dc5aea5b03dff8595f096f9e368e888 32 non-free/debian-installer/binary-s390x/Packages.xz\n fbdc66a851da00874a7fde2f8818229d 98 non-free/debian-installer/binary-s390x/Release\n 3efdc105da5a7b01e577df6a34cf368c 313321 non-free/i18n/Translation-en\n 3a00997e305e75e837356ee89bf742cb 72487 non-free/i18n/Translation-en.bz2\n e32bb8fa2cf28125a1dbaaf180b04f94 99 non-free/source/Release\n 87f4f181d251e0c69376735f8f98fe56 395941 non-free/source/Sources\n b985d46c5dd2c006df85962305530ff0 118656 non-free/source/Sources.gz\n be768dd739759986e689511088623c41 99280 non-free/source/Sources.xz', 'sha1': 'bcc10e23d667c380066fc1bfc72189bccd78d55b 1194884 contrib/Contents-amd64\n 94df302f75e82eabffb8582b1242f018776b2a97 88565 contrib/Contents-amd64.gz\n e33c27ab4301f53b708ec319b8d81d5dd150f555 1021655 contrib/Contents-arm64\n 94ecf0a50683a26d32eccd452512562dc3f9c803 72539 contrib/Contents-arm64.gz\n a397e28e618004405b6d9c91259af2ca27a62b83 1035687 contrib/Contents-armel\n 3619dd67b41e7cb92b475a1f133e61265e173b6e 73710 contrib/Contents-armel.gz\n f3061101066f744b816084b34e376703f4e8ff1b 1028590 contrib/Contents-armhf\n 8ff07e7da8467794b1cbb0a6684924ac520abb29 73612 contrib/Contents-armhf.gz\n b7d96f678825bf5c38557dfa2e5750f7a1e6a356 1191918 contrib/Contents-i386\n e756d33897bbe0ff1186039f1caa9657e2375c4c 88211 contrib/Contents-i386.gz\n 538b997fedaf648b4c42bc526131fb83c35e8b7a 1037406 contrib/Contents-mips\n 6f84bb66e87eb25e2745253a9c070fe519530d76 73908 contrib/Contents-mips.gz\n 4d9ae91aaaf5fa48348d22a2462355ed7da9b296 1037412 contrib/Contents-mipsel\n d37599a96ed1255adabfa573811ecbd98b44d8a7 74013 contrib/Contents-mipsel.gz\n feba6d8cb331bb6d41912bcf4cedf5dd240ac567 1038124 contrib/Contents-powerpc\n 11e0238a8ec6013b7180cabad094d7ac65ef3cba 74092 contrib/Contents-powerpc.gz\n bdcf3b6a60304d5a71fc30679dfa541ab90e7807 1018073 contrib/Contents-ppc64el\n 0a361f85ea26eee142e08ca8e98d0d9dfd80b353 72165 contrib/Contents-ppc64el.gz\n a4375f8554eee3684986de35012a87b0f7bc88a7 1033616 contrib/Contents-s390x\n 37c0d624978938af6c8447bec0b9a539daf70113 73569 contrib/Contents-s390x.gz\n 27587b97b70ca6ec579c7db53327db74aea1eeb4 3013607 contrib/Contents-source\n a6afaf588484e3d54e86de5b9186f17eced882ac 333917 contrib/Contents-source.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 contrib/Contents-udeb-amd64\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 contrib/Contents-udeb-amd64.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 contrib/Contents-udeb-arm64\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 contrib/Contents-udeb-arm64.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 contrib/Contents-udeb-armel\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 contrib/Contents-udeb-armel.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 contrib/Contents-udeb-armhf\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 contrib/Contents-udeb-armhf.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 contrib/Contents-udeb-i386\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 contrib/Contents-udeb-i386.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 contrib/Contents-udeb-mips\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 contrib/Contents-udeb-mips.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 contrib/Contents-udeb-mipsel\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 contrib/Contents-udeb-mipsel.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 contrib/Contents-udeb-powerpc\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 contrib/Contents-udeb-powerpc.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 contrib/Contents-udeb-ppc64el\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 contrib/Contents-udeb-ppc64el.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 contrib/Contents-udeb-s390x\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 contrib/Contents-udeb-s390x.gz\n d52ccba484ddc7bf0e567542be5d7711a7bf5604 84088 contrib/binary-all/Packages\n 6292c61a3b9cde4ab0ec58b243e5f2ce24b94782 27068 contrib/binary-all/Packages.gz\n 8b2a3c328b59385ca8f61e29912da6890bb6c034 23972 contrib/binary-all/Packages.xz\n cf4177741d69f47768d91a342f83e571313489ae 95 contrib/binary-all/Release\n 32c17422406a328f2463003cda9dd6ae211460b1 197920 contrib/binary-amd64/Packages\n 65178d16466bfc429a4b70c946632fa54e79cb28 59497 contrib/binary-amd64/Packages.gz\n ed9fc3dcee02306169498cdc0875cb175c42c8bb 50148 contrib/binary-amd64/Packages.xz\n bbf85b651901ce0ea0f7ddea9181559feda9f2c0 97 contrib/binary-amd64/Release\n 2b5d1191232f69d16793fdbb8f70d1a8b7fa2f50 133412 contrib/binary-arm64/Packages\n 87f1cca427a827e5d995f7f2bc18fbeac85469b0 41581 contrib/binary-arm64/Packages.gz\n 5dbd2f6e4c973bfef1ffb3aad1daada1f6ab9d5f 35820 contrib/binary-arm64/Packages.xz\n 36aff6ed83b398ba093067953e434bcb8e11e8cb 97 contrib/binary-arm64/Release\n 4ad0f399b29c04682af1f1b272e9dbdc7de92610 139108 contrib/binary-armel/Packages\n dacc1dea3d681b161e38c4588e86fbdabce8f872 43303 contrib/binary-armel/Packages.gz\n c54535ec1f5bc0ce213cd8e7be525799249fa668 37080 contrib/binary-armel/Packages.xz\n a03d3f71fbbe7cdd3fb6223eee784b7cad72f0bd 97 contrib/binary-armel/Release\n b368b8ea45dad97a7578f6fb44e898089eb48a4b 144377 contrib/binary-armhf/Packages\n dcb2494090f3b6ce33e8c0c552863ae240ed4752 44682 contrib/binary-armhf/Packages.gz\n 496b6470e8783a9aaae68b92af8e2acf87fc42df 38120 contrib/binary-armhf/Packages.xz\n a3f1972277a4198cf460713b57468c14989bb558 97 contrib/binary-armhf/Release\n 476bb48af58f58d00a08ba433947f4332ef17bc4 195791 contrib/binary-i386/Packages\n c710bfaf2e1b6c21abf111643fff059f94cbbc19 59070 contrib/binary-i386/Packages.gz\n c211dd22f9724da9f691555913f329bbfe464ae0 49664 contrib/binary-i386/Packages.xz\n 89c8a5c8f9a8c913ea8536449c11d8c0af760885 96 contrib/binary-i386/Release\n 69f82421950fe8a8e397ce49df6ae9ebf3fa3929 140769 contrib/binary-mips/Packages\n bf008b5b442de56b9326ed90c24e7a11f3710605 44128 contrib/binary-mips/Packages.gz\n 5272444002e92ff65319a8ebc46921d19ced5e6e 37528 contrib/binary-mips/Packages.xz\n 8f7711b924661b4c6cb04d78577de6797c42b016 96 contrib/binary-mips/Release\n add59e711c1208fee1d9402c4bae43a8704f740d 141032 contrib/binary-mipsel/Packages\n a2e4420f3344e91f7b27291c448c8bafcc6bc447 43643 contrib/binary-mipsel/Packages.gz\n df92756fec027671a880e0858097931c18f240af 37556 contrib/binary-mipsel/Packages.xz\n c932650401f4b7daa3b91adef2a61e6f0ef294df 98 contrib/binary-mipsel/Release\n 3263b1a551025796c12eb00a4edd7c3a9888014d 141785 contrib/binary-powerpc/Packages\n 66cf12db9a7358b3f9766cd76b6772ab17efa03e 44063 contrib/binary-powerpc/Packages.gz\n c16643fc74828f3baf8b435e0dd53d6b1e20a0a0 37680 contrib/binary-powerpc/Packages.xz\n b3f2378cdc62028e3ab87539e8c8c643e16814a3 99 contrib/binary-powerpc/Release\n 4c44ed5e9abd0176b401461981a9f6bdcad09214 132657 contrib/binary-ppc64el/Packages\n 56033eb900ba8a780b095b25d38ec374884b0e0d 41474 contrib/binary-ppc64el/Packages.gz\n 15d91c5c299828ff5e51811f365e36b527566a83 35672 contrib/binary-ppc64el/Packages.xz\n a4a1e8eac652735d6959c64f9866f2bfb11669cd 99 contrib/binary-ppc64el/Release\n c0631f8aaae395bbb5897608da2afb2dfb7d1e3d 137661 contrib/binary-s390x/Packages\n 293dfb1bd2f7b9183ac81970bf704b4292e5935c 42808 contrib/binary-s390x/Packages.gz\n 3b26e15fec75e55d768feff7559d3d134d785eb8 36736 contrib/binary-s390x/Packages.xz\n 88b4058426af63dcda5a5f5ed702c21a228ee93b 97 contrib/binary-s390x/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 contrib/debian-installer/binary-all/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 contrib/debian-installer/binary-all/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 contrib/debian-installer/binary-all/Packages.xz\n cf4177741d69f47768d91a342f83e571313489ae 95 contrib/debian-installer/binary-all/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 contrib/debian-installer/binary-amd64/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 contrib/debian-installer/binary-amd64/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 contrib/debian-installer/binary-amd64/Packages.xz\n bbf85b651901ce0ea0f7ddea9181559feda9f2c0 97 contrib/debian-installer/binary-amd64/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 contrib/debian-installer/binary-arm64/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 contrib/debian-installer/binary-arm64/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 contrib/debian-installer/binary-arm64/Packages.xz\n 36aff6ed83b398ba093067953e434bcb8e11e8cb 97 contrib/debian-installer/binary-arm64/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 contrib/debian-installer/binary-armel/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 contrib/debian-installer/binary-armel/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 contrib/debian-installer/binary-armel/Packages.xz\n a03d3f71fbbe7cdd3fb6223eee784b7cad72f0bd 97 contrib/debian-installer/binary-armel/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 contrib/debian-installer/binary-armhf/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 contrib/debian-installer/binary-armhf/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 contrib/debian-installer/binary-armhf/Packages.xz\n a3f1972277a4198cf460713b57468c14989bb558 97 contrib/debian-installer/binary-armhf/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 contrib/debian-installer/binary-i386/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 contrib/debian-installer/binary-i386/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 contrib/debian-installer/binary-i386/Packages.xz\n 89c8a5c8f9a8c913ea8536449c11d8c0af760885 96 contrib/debian-installer/binary-i386/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 contrib/debian-installer/binary-mips/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 contrib/debian-installer/binary-mips/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 contrib/debian-installer/binary-mips/Packages.xz\n 8f7711b924661b4c6cb04d78577de6797c42b016 96 contrib/debian-installer/binary-mips/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 contrib/debian-installer/binary-mipsel/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 contrib/debian-installer/binary-mipsel/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 contrib/debian-installer/binary-mipsel/Packages.xz\n c932650401f4b7daa3b91adef2a61e6f0ef294df 98 contrib/debian-installer/binary-mipsel/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 contrib/debian-installer/binary-powerpc/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 contrib/debian-installer/binary-powerpc/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 contrib/debian-installer/binary-powerpc/Packages.xz\n b3f2378cdc62028e3ab87539e8c8c643e16814a3 99 contrib/debian-installer/binary-powerpc/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 contrib/debian-installer/binary-ppc64el/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 contrib/debian-installer/binary-ppc64el/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 contrib/debian-installer/binary-ppc64el/Packages.xz\n a4a1e8eac652735d6959c64f9866f2bfb11669cd 99 contrib/debian-installer/binary-ppc64el/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 contrib/debian-installer/binary-s390x/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 contrib/debian-installer/binary-s390x/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 contrib/debian-installer/binary-s390x/Packages.xz\n 88b4058426af63dcda5a5f5ed702c21a228ee93b 97 contrib/debian-installer/binary-s390x/Release\n 43b5703548aea4360bea873e1c1a381e1b06d98d 144545 contrib/i18n/Translation-en\n 853fd7f59003c9d6f6c2892f3f4011e757f8a0c1 38501 contrib/i18n/Translation-en.bz2\n d5646d537795b825a69a9b37af7d81bf24b2c2bc 98 contrib/source/Release\n 4949a338fd0cc09754806798ce26be82e234b3cc 190771 contrib/source/Sources\n 35a9a76aa550b3da6006cc6e34b5a21193b34c40 59538 contrib/source/Sources.gz\n f9250bf9c630f70f1582b46dc60cdddaca44eabc 50732 contrib/source/Sources.xz\n 495df85a464da65470aa7bc16c8ba923e7171cb5 388499395 main/Contents-amd64\n d815935d991669a7896c92ef26f18cbac77333a3 27382772 main/Contents-amd64.gz\n 68a64bddc0b6de37c1476b902023af70ad90b582 377634498 main/Contents-arm64\n f661f86b163c76898768ab7d1146c2b09fc9f44d 26489323 main/Contents-arm64.gz\n df5836a565a7ca46ebb43de96dab8318abdc03a2 385144337 main/Contents-armel\n 91cffb9d69fbb5ac45812de386a17da3ad4fcd94 27053197 main/Contents-armel.gz\n 4a22d089d8022a8fc6b301b61702f4b4c8fb11d9 384809198 main/Contents-armhf\n eb959581327fd5bf108fe33b0e8a188d7f593294 27043701 main/Contents-armhf.gz\n f1057620cbed74b330b0e2c9d5fcfe4ce03635b8 389950180 main/Contents-i386\n bd8c3e455ed922f5b76515b8aebf6565bff28b76 27495288 main/Contents-i386.gz\n a350be94e48f2cfadb7ace09dbc2766f6cbcc22b 384032305 main/Contents-mips\n f0a3032c126f2ebd3c6684f5858e3a8c2709fb7b 26959777 main/Contents-mips.gz\n 9003568cf07edfc00a7289320aef6f9fbe84795a 384611228 main/Contents-mipsel\n 6c6c934b0295061a83cd0bc5eb3d726a74ce4f2b 26988306 main/Contents-mipsel.gz\n d562f078d36d8553c42733a3fa579ef1d5ed62a7 386090513 main/Contents-powerpc\n 12b29558afbb9faa190ca6af4917d2769edc27cd 27155425 main/Contents-powerpc.gz\n 4be7aecf2fae767f7fe84736eaf152fb9a28265a 378557860 main/Contents-ppc64el\n 4106f7fb06e5272f88d729322b7c7c06fc2968b6 26552792 main/Contents-ppc64el.gz\n 4023cbcfd221ca59d49c2950bff8d3eba6001c24 379662245 main/Contents-s390x\n ea46245cfcaea9cd29510e26d2da096b3c1ef7cb 26703046 main/Contents-s390x.gz\n 38117eae78ba12ba6894732ad1ab9ab75167d6a2 367351454 main/Contents-source\n ecb8aa032d3ef8912e0f2a4b1e2d2eeb512b7ce3 42438463 main/Contents-source.gz\n 7d9c8e8e1c64b87d094427d0596c4a4791708e87 350284 main/Contents-udeb-amd64\n 988b73e8ef082cb61797b871871271de2888e255 29237 main/Contents-udeb-amd64.gz\n b2a746db0707f3507f361546ae6c4787603a95a8 292399 main/Contents-udeb-arm64\n 77e9d8f863efc20beae0bbb35f3d2e91a0f55cb0 25467 main/Contents-udeb-arm64.gz\n 49b755b8c8a75dc3746a2b70dc855a14a933b191 333841 main/Contents-udeb-armel\n 7bbb3edfadb40cf0b6c3cee44a1a6d9333f549b0 27497 main/Contents-udeb-armel.gz\n 18fd1aad9997605c02dd7e2961f97cd28de81b7c 335668 main/Contents-udeb-armhf\n 476aa45e4951f5056f1d03692b3d24874302e766 28593 main/Contents-udeb-armhf.gz\n d3534264476f607cd19abfb97c043cf8d6ad60a2 449459 main/Contents-udeb-i386\n f42dae1326942bd2d28cdadc32e26c76bc68cc45 35840 main/Contents-udeb-i386.gz\n de8d2bac70514feaf543bc4033e7ba0a0ab9857f 459424 main/Contents-udeb-mips\n 5339355a2827d51fffcaf5127de3c91e340a0803 35712 main/Contents-udeb-mips.gz\n 4fa006e7ebc1980510b3c00c701cc0a34c6179f4 577364 main/Contents-udeb-mipsel\n d98615a5f81fb4a27b4a19b30b7991beb00b3ac8 42940 main/Contents-udeb-mipsel.gz\n d782561970d1fc2b108173ec6c348ba3e3d4d03d 416008 main/Contents-udeb-powerpc\n d5215c4904f512d65b13724c42dee05749e328be 33010 main/Contents-udeb-powerpc.gz\n eb2db0cadff2fc606f7feed9ec6d34c29fe842e3 311289 main/Contents-udeb-ppc64el\n f792a6ae6bf3e69762a470453112182e84c7eeb2 26501 main/Contents-udeb-ppc64el.gz\n 38ba3fd7c71a745f7ddc6d2b4d20dba1fc2f69e9 271386 main/Contents-udeb-s390x\n 24264e0846e0f9775d3e2a58d5adddc156a0be8f 23838 main/Contents-udeb-s390x.gz\n 7385d3cde7b14fb36408b41499632397bc472530 14026643 main/binary-all/Packages\n 2c69c94b22a7298cc1555344065327f109155d6f 3910282 main/binary-all/Packages.gz\n 6f1e1e8598ffcc502301818429ce387ff1f9a595 2983148 main/binary-all/Packages.xz\n d90f5d09dcd56deb9167df3d696c4c0ff2c991aa 92 main/binary-all/Release\n 4fe1b358368f18af70f9bd7962012a0cfdc2fec7 33803992 main/binary-amd64/Packages\n 60a674e07d515ae806576e65f7921aefdb790c45 9034031 main/binary-amd64/Packages.gz\n 79424ce3bdc0e385e4d027254ce87fcb819fce08 6763012 main/binary-amd64/Packages.xz\n 1c0fba0e0f57f9917012c03126dedc5b8cef5c00 94 main/binary-amd64/Release\n 45ac63ab3bf09b8cb85e15c45497ac7ac18a1d10 31834962 main/binary-arm64/Packages\n 540faf069321da1e989ed197dc8c75a50ac1ae48 8530527 main/binary-arm64/Packages.gz\n 3707ceea34d4d4936153d542ca6e9722ff472bc5 6393456 main/binary-arm64/Packages.xz\n c809e9d467a060611b127ba00512a510184e97ea 94 main/binary-arm64/Release\n 74c80487471e51962f93662b0db57b7e0a34ce8a 33019861 main/binary-armel/Packages\n 6615a355df14effd5c8824137160b30cd359ecf3 8836571 main/binary-armel/Packages.gz\n 2cc879cbad2c9760eb48ba872f5244dfae0a97f1 6620072 main/binary-armel/Packages.xz\n acc8b7a7c07eae9e84baa66653ea71cbb3ba2c1e 94 main/binary-armel/Release\n 8a4b828bbbb8c74736b654ac43c086659f2f1a6b 33011756 main/binary-armhf/Packages\n 9357d6b74e299498243810b0bfeafab5750142f7 8834875 main/binary-armhf/Packages.gz\n e68f8545391f54c481f6fc7cc5cb9d7e30fd0a08 6618916 main/binary-armhf/Packages.xz\n db3893855ffb2f89fe264cbeeecc272659ae6191 94 main/binary-armhf/Release\n deb0196e9e0c62ac1c1d253f005d5873f7235fb4 33776741 main/binary-i386/Packages\n 1e68421f399d472363633eb0d7e71b9bcf8f3f06 9036604 main/binary-i386/Packages.gz\n f79edc3365032e7c8804b427a10f9e99b33982f0 6767908 main/binary-i386/Packages.xz\n 15af72c8a118bc9ead134f1c6f2fea4287818f1c 93 main/binary-i386/Release\n 1b9b676ce1e9724883c59fc4922c3837e6de53eb 32706812 main/binary-mips/Packages\n e1b05dbe37fef2a0b089ba1012475ff267a417de 8777040 main/binary-mips/Packages.gz\n e43c5932c1736a839779e15f8e862dc5cb872212 6577212 main/binary-mips/Packages.xz\n 3fcea8be1b9095d575f618d6022b9758a902360b 93 main/binary-mips/Release\n c3114845212e12e131289569bb8d115f83e2283b 32864681 main/binary-mipsel/Packages\n 4898243a6e897e02b5c7a0415b0d3419ebcbe3f4 8803154 main/binary-mipsel/Packages.gz\n 5023a3678c104814bc4bca5a621b1750e266a25f 6592348 main/binary-mipsel/Packages.xz\n 36f4df5605efe1b492edd3c5b23911fd36a5def8 95 main/binary-mipsel/Release\n 53634efb584f00770c70b6dd59981622066cc646 33334897 main/binary-powerpc/Packages\n 25b50a12b4db5456054cdbb4d45ae057dc31afe9 8899600 main/binary-powerpc/Packages.gz\n 0be65775662852f538356d684804857f7fb0c9bf 6661992 main/binary-powerpc/Packages.xz\n 9b84d818422a4886ad13a76d4704253a9e5f260c 96 main/binary-powerpc/Release\n 9e401e817aeaa594344d6e152929c5751bb084c5 32355461 main/binary-ppc64el/Packages\n c6927d14970346767db964962d71c34c3670205f 8643121 main/binary-ppc64el/Packages.gz\n 6ce6b8347c043e69413eab63e9c5a19492ac908d 6475272 main/binary-ppc64el/Packages.xz\n 5320ee159efbdb2cce664a2731f2aafe97873348 96 main/binary-ppc64el/Release\n bcc82cb3862f05c406764bd8af32e74779854e5b 32544327 main/binary-s390x/Packages\n 17649ab7ef711f91fa3ee409c0dc6a7427ff09fe 8731295 main/binary-s390x/Packages.gz\n 0a69357ac6f81b4ef90ff4e550a5a6d1e7ce3f87 6537136 main/binary-s390x/Packages.xz\n 5803a65f7766596755002a25688fd5d17208a125 94 main/binary-s390x/Release\n 82c08f673093e03806151948ff42952bd937248d 67833 main/debian-installer/binary-all/Packages\n aa8f9a10f6caf3b108733578353dd2ca23aad537 19761 main/debian-installer/binary-all/Packages.gz\n 6ce0a3ba6bfdc003bf7659fb840e057bf2851030 17164 main/debian-installer/binary-all/Packages.xz\n d90f5d09dcd56deb9167df3d696c4c0ff2c991aa 92 main/debian-installer/binary-all/Release\n 8edaf81b99696a749a9e01d5874452cfaeb87c13 239258 main/debian-installer/binary-amd64/Packages\n 1730302d9944f901341af528550248bcc8e65261 68568 main/debian-installer/binary-amd64/Packages.gz\n fe964e3f96a4bc8948c009641b3f25effdc1cee2 57132 main/debian-installer/binary-amd64/Packages.xz\n 1c0fba0e0f57f9917012c03126dedc5b8cef5c00 94 main/debian-installer/binary-amd64/Release\n 2fceaec25af7a11ab8e453e4a749914fafdefb42 221891 main/debian-installer/binary-arm64/Packages\n ca2129ad68cb970e1186961c2a81d647a6cc4196 64123 main/debian-installer/binary-arm64/Packages.gz\n ef7e7f2249de344a869ab05b674db6a34c4a33b0 53680 main/debian-installer/binary-arm64/Packages.xz\n c809e9d467a060611b127ba00512a510184e97ea 94 main/debian-installer/binary-arm64/Release\n 4a9deffb9d047b4ff6b54367be6fe613c23174a8 266310 main/debian-installer/binary-armel/Packages\n ad6bb53521aba1a6ab9db9476417720064a84d0a 71883 main/debian-installer/binary-armel/Packages.gz\n 69d2230cbe003c465528de37320f12a2d4f48405 60396 main/debian-installer/binary-armel/Packages.xz\n acc8b7a7c07eae9e84baa66653ea71cbb3ba2c1e 94 main/debian-installer/binary-armel/Release\n 0c078cfa8b395080354ca255101628b3097e6e2a 223825 main/debian-installer/binary-armhf/Packages\n b358256e13d5268853cd047dcde11d37bdf85c26 65094 main/debian-installer/binary-armhf/Packages.gz\n 03c68103f65de84c12c1646f98d4b472eee1c82b 54328 main/debian-installer/binary-armhf/Packages.xz\n db3893855ffb2f89fe264cbeeecc272659ae6191 94 main/debian-installer/binary-armhf/Release\n 63be68bf977ae52e71e96bff6cb83d62d396241a 278560 main/debian-installer/binary-i386/Packages\n 1e33bc4ef36d01cf1e082dc391624a119505a80c 75254 main/debian-installer/binary-i386/Packages.gz\n 43ba53e3123adedfe811cf2e49470ea9e6e4591b 62948 main/debian-installer/binary-i386/Packages.xz\n 15af72c8a118bc9ead134f1c6f2fea4287818f1c 93 main/debian-installer/binary-i386/Release\n 14e1f0e2d8daad218ba667e42f8bc853b82fb54c 315509 main/debian-installer/binary-mips/Packages\n 8d707025e7c07b470eedb70f35bbcb0c9aa95518 80641 main/debian-installer/binary-mips/Packages.gz\n af543a8430625843379d8a14d3517324aae9a23c 67488 main/debian-installer/binary-mips/Packages.xz\n 3fcea8be1b9095d575f618d6022b9758a902360b 93 main/debian-installer/binary-mips/Release\n 33d39fdd73854d0654bfc353818bb2a37054ce25 360282 main/debian-installer/binary-mipsel/Packages\n bbd442a619432e3c6d164d0d6ec890f1e74368d8 87159 main/debian-installer/binary-mipsel/Packages.gz\n f7cf117eb98bfec0c93281ccaec05dbec8dc27e1 73104 main/debian-installer/binary-mipsel/Packages.xz\n 36f4df5605efe1b492edd3c5b23911fd36a5def8 95 main/debian-installer/binary-mipsel/Release\n 0762c81171b2506b4d64e6f0c05befb1dba6b2d3 270218 main/debian-installer/binary-powerpc/Packages\n 30433b37873b0cfafd80298ae73793eb2b9572de 73034 main/debian-installer/binary-powerpc/Packages.gz\n 9db7461cee523277035d4b13fa377da5ea3c83b8 61240 main/debian-installer/binary-powerpc/Packages.xz\n 9b84d818422a4886ad13a76d4704253a9e5f260c 96 main/debian-installer/binary-powerpc/Release\n ec7eb2615f1ae64e51962ab507767459a356b788 226678 main/debian-installer/binary-ppc64el/Packages\n 61292244070d84849821e8268cb9cec29b145a22 64514 main/debian-installer/binary-ppc64el/Packages.gz\n 4ec583c0197f2d5e6c7d811b7f26af702d1d3279 54232 main/debian-installer/binary-ppc64el/Packages.xz\n 5320ee159efbdb2cce664a2731f2aafe97873348 96 main/debian-installer/binary-ppc64el/Release\n e5dc6ed3e173d644f583b1019390ceb9776a4953 206660 main/debian-installer/binary-s390x/Packages\n cfde1ce19f75824e9c961910f3fc5a326c94afac 60710 main/debian-installer/binary-s390x/Packages.gz\n e36710e734a242a6bb678c8d18fa5d6a2dfdb393 51004 main/debian-installer/binary-s390x/Packages.xz\n 5803a65f7766596755002a25688fd5d17208a125 94 main/debian-installer/binary-s390x/Release\n beff86f2ea1ac3d4f1c4fefa98505e26b9d34964 9627 main/i18n/Translation-ca\n 7d9accdb4d42899fb36ef6105bfd4191561fa062 3865 main/i18n/Translation-ca.bz2\n 958561d5b050d05dc2431b9373f80468bc874322 1893411 main/i18n/Translation-cs\n e38bfb4f63e22c071364969e6dc14a6b83a696d4 494559 main/i18n/Translation-cs.bz2\n 77456f447cbc2e08a37b3ca8403a8889f291dcc5 13166981 main/i18n/Translation-da\n f0afe60ff203a967100870a734ec7f83b28a7073 2901281 main/i18n/Translation-da.bz2\n 536b14b84af14ff54b11b55c068a41526256c0ac 7664182 main/i18n/Translation-de\n a389575dde89dfe01261ea7ebf0489198a286c0b 1754517 main/i18n/Translation-de.bz2\n 9cefb0051f9503cdcc848113ddd850abc2d8fd44 1347 main/i18n/Translation-de_DE\n c06dc96d1de20832869e5e4b9867e203244228c1 830 main/i18n/Translation-de_DE.bz2\n 5d0c67cc346a0bc1a7e68c90c256e8f82221939b 8287 main/i18n/Translation-el\n 8af68a2c14ce1de6ad2ddff6a8154a73b6e386fe 1896 main/i18n/Translation-el.bz2\n bd0100cd7ce2625c70875d5323ad412e40eadfbf 22310532 main/i18n/Translation-en\n cbb36a4445cffc8502e0fd704286623c93bb70ad 4582125 main/i18n/Translation-en.bz2\n cb2567cb63e0c6a653ac9f3ee8600f66df3ed2eb 2739 main/i18n/Translation-eo\n 06c5eab5a8d8d8906e6b46ca3681353753b4713f 1344 main/i18n/Translation-eo.bz2\n e4f2395ecb214f083f5f03a3d882e01cafabac34 1278186 main/i18n/Translation-es\n e1e2a1507aa22f7229a590ef91866eb5802b9a84 314368 main/i18n/Translation-es.bz2\n ee2bff83bdd46c858bf0b7f4e549090fe9c5464c 17288 main/i18n/Translation-eu\n 3f523965a26120bb7136551416d1b985f1b3e447 6460 main/i18n/Translation-eu.bz2\n f56f9484ac31de0c872e38edf1472612bc36c7ea 390801 main/i18n/Translation-fi\n 54b5649af6c0167ac40682ee07e7c8225391307a 108973 main/i18n/Translation-fi.bz2\n 91d079bed8fb4093c39c68efda8028dec9003a25 3701781 main/i18n/Translation-fr\n e84e6df80f556a880d739cbee04e4ecb10e56b59 846329 main/i18n/Translation-fr.bz2\n 374be049736a5babb09e4bf84355fdf1f4b3adba 14962 main/i18n/Translation-hr\n d24212c9372df0c69aa52befae64651bee467fe5 5841 main/i18n/Translation-hr.bz2\n d93eae7e3fb897e28c06aef92bf97173fe52b6e1 101201 main/i18n/Translation-hu\n 299635ca125af79bcbac39a0f724f1715e2b24d8 33209 main/i18n/Translation-hu.bz2\n efa4d1d37013def2a438e1fc7d9e6510d7265af6 7753 main/i18n/Translation-id\n 4ac4429526acd4c4049527e9a223b67e0d938f75 3093 main/i18n/Translation-id.bz2\n 007ee6a728e2a997407ae65b396e74b52c4af0db 17993956 main/i18n/Translation-it\n d0fbfe06ee6c56b95a7dfb877f57608c9d6d000b 3656485 main/i18n/Translation-it.bz2\n dc9e2da571bb679d7d7fff90b0340d588dd5fe73 4376703 main/i18n/Translation-ja\n 962786b8489aa58d37de15f5c773f6954941f61c 794698 main/i18n/Translation-ja.bz2\n 4a92fec96c8d494094f6840eabc40d373f6fb263 21141 main/i18n/Translation-km\n 451f7c324ff46cce9fb40620f29749eb141eddf3 3796 main/i18n/Translation-km.bz2\n 1c01e4931669cdc80ea0dd4a135772cb0c471640 924206 main/i18n/Translation-ko\n b7514463ea50fce4020dca15a2ccdc83d7e0250a 204449 main/i18n/Translation-ko.bz2\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 main/i18n/Translation-ml\n 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 main/i18n/Translation-ml.bz2\n 9fbff159cc2eaf3fd168faf673b9417abda11921 2325 main/i18n/Translation-nb\n 0a1d5e9c472db52dfa34ff9d17d3cdd3fed95f65 1302 main/i18n/Translation-nb.bz2\n 543cf7bf064c027443108ee08cd5f891e01c2c34 267344 main/i18n/Translation-nl\n a755625497adc7297ae14c25b65541f1b496fdcf 74095 main/i18n/Translation-nl.bz2\n d9bf94b329cd69266232b2506fed296943fb40cd 2490134 main/i18n/Translation-pl\n 2bf5473bbb490aefff835f254418eed043668981 574404 main/i18n/Translation-pl.bz2\n 478daa98310e8a4db7ae31cb23b0b5336cda8e19 1712133 main/i18n/Translation-pt\n f1f1d4323caa17989f0f01af6b36fef699f66459 413142 main/i18n/Translation-pt.bz2\n b33ad08702a333eb6ed3e31d212f646fa463a04e 3363311 main/i18n/Translation-pt_BR\n bfd5db45184601f95af4586008185cc90659c4c4 802754 main/i18n/Translation-pt_BR.bz2\n 0e79d618838b9ecf1e0d8ff3a2834e9fff8eb5a3 2949 main/i18n/Translation-ro\n 6edd468ced1103b7ca5647514d47270e7c0b5b07 1463 main/i18n/Translation-ro.bz2\n 7d4ebcaa3f7147ab1a68842fa197f6a3f1322ab0 2684275 main/i18n/Translation-ru\n d10b398d2e5099645c7cabacafe333a2a96e196f 437612 main/i18n/Translation-ru.bz2\n 8639b1be4e70e09a3ebb52b16a7fd92a95700762 2106842 main/i18n/Translation-sk\n 3411db93b2fad0a45efb95f8f9b87e6c0b747c95 509104 main/i18n/Translation-sk.bz2\n f6b79703c7db7d617c9a570c4f43c9ea9eb2ef9d 455684 main/i18n/Translation-sr\n 450b9c3d58e36a35c41b0d398734fda78d65ee61 81894 main/i18n/Translation-sr.bz2\n ab7dbfb228d8701c2213a14bab61a461586ed6b7 132973 main/i18n/Translation-sv\n 850269802551ff6911a935fbe19484754527ecff 40142 main/i18n/Translation-sv.bz2\n 9ce93c94dc38553c9f65d861bd8db0b5570d7bb7 902 main/i18n/Translation-tr\n e7b035cf84219392b6bf5eacec4e629ed7327ace 530 main/i18n/Translation-tr.bz2\n 10fbd6905cd8d283bf932cafe38a03d1d63cfde7 4630335 main/i18n/Translation-uk\n c6a136045eadca5b89a278ab333d938749a40c6f 734132 main/i18n/Translation-uk.bz2\n 5a3238c961315b4889950678c86c6f3c7548b9e5 36422 main/i18n/Translation-vi\n d9cc8e61fd5a47c7420a3ae9611b42550b9c106d 10243 main/i18n/Translation-vi.bz2\n 594f432d94fc9cdc2a871e82ca007497a853b0a8 2799 main/i18n/Translation-zh\n 8a1732ac15d1a1a841e2f46dec4747db8a406ea5 1526 main/i18n/Translation-zh.bz2\n d0b34f4b17d101aaf4bb3fcb337e918b2aabca51 367410 main/i18n/Translation-zh_CN\n 84124314f4aa1598b05ba88d07c2782611b677d7 100783 main/i18n/Translation-zh_CN.bz2\n 7f8df0031bcf78d37e24dcc0d94cbaa6f0f88761 64019 main/i18n/Translation-zh_TW\n a2726bc478ccd8fa368fb1f7a62d5aac0e6c8e31 22485 main/i18n/Translation-zh_TW.bz2\n d3cc3b2d83329dec1bfb25e010d19fde777b8cff 53815 main/installer-amd64/20150422+deb8u3/images/MD5SUMS\n 650461cab77d1a55f55074a1c33b63935aa2910c 72131 main/installer-amd64/20150422+deb8u3/images/SHA256SUMS\n 51666fa7cc3d8794f0f6800b5737b9811d5aeb54 53815 main/installer-amd64/20150422/images/MD5SUMS\n 173a56ee531d9f0d624e5b71f261d970a3c68564 72131 main/installer-amd64/20150422/images/SHA256SUMS\n d3cc3b2d83329dec1bfb25e010d19fde777b8cff 53815 main/installer-amd64/current/images/MD5SUMS\n 650461cab77d1a55f55074a1c33b63935aa2910c 72131 main/installer-amd64/current/images/SHA256SUMS\n fdeeb6ed571bfc81b89fcddacf5659f1daf45a72 19148 main/installer-arm64/20150422+deb8u3/images/MD5SUMS\n 8b283f618d6913422b2150d5386c546e711ba3fd 25912 main/installer-arm64/20150422+deb8u3/images/SHA256SUMS\n f20cac8a79b6054d6694409f4d4589ec1cc9a14a 19148 main/installer-arm64/20150422/images/MD5SUMS\n 1efa0211e06c1181d8a77542619bb029a420588e 25912 main/installer-arm64/20150422/images/SHA256SUMS\n fdeeb6ed571bfc81b89fcddacf5659f1daf45a72 19148 main/installer-arm64/current/images/MD5SUMS\n 8b283f618d6913422b2150d5386c546e711ba3fd 25912 main/installer-arm64/current/images/SHA256SUMS\n b838f68e30d432297bd93c7df6f852a85c7a09da 11455 main/installer-armel/20150422+deb8u3/images/MD5SUMS\n 85bd561ca59ef5749826fb1656327aa510f27ea2 16107 main/installer-armel/20150422+deb8u3/images/SHA256SUMS\n 9662fb7a241d13ea5d2fbb4051180dcb0dacf76a 8985 main/installer-armel/20150422/images/MD5SUMS\n 6ff3189348425903c026d8d5772d7be927dbb446 12645 main/installer-armel/20150422/images/SHA256SUMS\n b838f68e30d432297bd93c7df6f852a85c7a09da 11455 main/installer-armel/current/images/MD5SUMS\n 85bd561ca59ef5749826fb1656327aa510f27ea2 16107 main/installer-armel/current/images/SHA256SUMS\n fb36df702a5a98182fab0b7f800f2ecc5a20e32a 19599 main/installer-armhf/20150422+deb8u3/images/MD5SUMS\n 8e6843a15b078262a1e300a4c25b77a0782537a8 28379 main/installer-armhf/20150422+deb8u3/images/SHA256SUMS\n 91147e2ca3e660bd617c856667f842a9e6a5be47 19599 main/installer-armhf/20150422/images/MD5SUMS\n 200cbb2a68833521c2fed1b223d15954c0a2c0f0 28379 main/installer-armhf/20150422/images/SHA256SUMS\n fb36df702a5a98182fab0b7f800f2ecc5a20e32a 19599 main/installer-armhf/current/images/MD5SUMS\n 8e6843a15b078262a1e300a4c25b77a0782537a8 28379 main/installer-armhf/current/images/SHA256SUMS\n cead85c5bb247d7a9a5cb510a0ce414e0f2076c7 52495 main/installer-i386/20150422+deb8u3/images/MD5SUMS\n 3f65a45057c5f4fa3ebea47f2da32c4a19d4339c 70875 main/installer-i386/20150422+deb8u3/images/SHA256SUMS\n 5819c24bab0e04da1fde08013606606b30bf980d 52495 main/installer-i386/20150422/images/MD5SUMS\n 79824ace70dd595e26449f35a4d5f0611e1170a8 70875 main/installer-i386/20150422/images/SHA256SUMS\n cead85c5bb247d7a9a5cb510a0ce414e0f2076c7 52495 main/installer-i386/current/images/MD5SUMS\n 3f65a45057c5f4fa3ebea47f2da32c4a19d4339c 70875 main/installer-i386/current/images/SHA256SUMS\n 301de0479b8652dacf41e64f52d38d314d42dc98 940 main/installer-mips/20150422+deb8u3/images/MD5SUMS\n e6314b27f66ed3ede6c745a23a7d3b869a3e54dc 1496 main/installer-mips/20150422+deb8u3/images/SHA256SUMS\n 685f743e7899ca9aaa10f44202ec51f4b5673434 940 main/installer-mips/20150422/images/MD5SUMS\n fc2397431cc35e651022ee3cda702782054482a6 1496 main/installer-mips/20150422/images/SHA256SUMS\n 301de0479b8652dacf41e64f52d38d314d42dc98 940 main/installer-mips/current/images/MD5SUMS\n e6314b27f66ed3ede6c745a23a7d3b869a3e54dc 1496 main/installer-mips/current/images/SHA256SUMS\n d7e7fb443c71b93c3dd43284dbc1f5b6cc758481 1213 main/installer-mipsel/20150422+deb8u3/images/MD5SUMS\n b064d0c381ad6f4f2b735d5f7e046c930488191a 1865 main/installer-mipsel/20150422+deb8u3/images/SHA256SUMS\n 74aeedd147e8f2eb6612eba145e54f47cfd3241b 1213 main/installer-mipsel/20150422/images/MD5SUMS\n f88473fdff2eb8de57b38583e128f5c61d78b110 1865 main/installer-mipsel/20150422/images/SHA256SUMS\n d7e7fb443c71b93c3dd43284dbc1f5b6cc758481 1213 main/installer-mipsel/current/images/MD5SUMS\n b064d0c381ad6f4f2b735d5f7e046c930488191a 1865 main/installer-mipsel/current/images/SHA256SUMS\n aacce7f970c1320aa79fea5a3883606a47145bdf 2128 main/installer-powerpc/20150422+deb8u3/images/MD5SUMS\n 28c47b64005e32344ffa896ec30ae8b2471c61be 3292 main/installer-powerpc/20150422+deb8u3/images/SHA256SUMS\n bbaea21bfb7812a72ea557d17d02a8839e50f15f 2128 main/installer-powerpc/20150422/images/MD5SUMS\n d72b33d3de97e2ace2213b20cd4ea09b990ee376 3292 main/installer-powerpc/20150422/images/SHA256SUMS\n aacce7f970c1320aa79fea5a3883606a47145bdf 2128 main/installer-powerpc/current/images/MD5SUMS\n 28c47b64005e32344ffa896ec30ae8b2471c61be 3292 main/installer-powerpc/current/images/SHA256SUMS\n af8413c477a7243a11aecabb531d7c3bd910fe85 576 main/installer-ppc64el/20150422+deb8u3/images/MD5SUMS\n 1fe5bc49b46a1b13d60b5320252f5f0eee671c34 972 main/installer-ppc64el/20150422+deb8u3/images/SHA256SUMS\n 43039a14e688a53d77ffe80c42edc95d88049c22 576 main/installer-ppc64el/20150422/images/MD5SUMS\n 8a074f5e6df3799d0ad2ce8d93070459f0a1318b 972 main/installer-ppc64el/20150422/images/SHA256SUMS\n af8413c477a7243a11aecabb531d7c3bd910fe85 576 main/installer-ppc64el/current/images/MD5SUMS\n 1fe5bc49b46a1b13d60b5320252f5f0eee671c34 972 main/installer-ppc64el/current/images/SHA256SUMS\n 827bb14579bd3a3260e1f24e84c174d48048679a 374 main/installer-s390x/20150422+deb8u3/images/MD5SUMS\n efbeb4f325ab3ca7d5adf0a7b73b1105ffc45872 674 main/installer-s390x/20150422+deb8u3/images/SHA256SUMS\n 3bf34ed8abff354c28df016edc7cd03e0a84d28a 374 main/installer-s390x/20150422/images/MD5SUMS\n c4a693e53b07e052eba56875b756236c1d564fb3 674 main/installer-s390x/20150422/images/SHA256SUMS\n 827bb14579bd3a3260e1f24e84c174d48048679a 374 main/installer-s390x/current/images/MD5SUMS\n efbeb4f325ab3ca7d5adf0a7b73b1105ffc45872 674 main/installer-s390x/current/images/SHA256SUMS\n d85ac54656a567290a4989840c2e95f3ae5b0cfe 95 main/source/Release\n b782a2364001887a5ec623807880349701d0799a 32525646 main/source/Sources\n 490e38fb907330ff177ba70b5e74a2744b174b1c 9159302 main/source/Sources.gz\n 93707a24f648e14d5b61a2eacb06761cb522f90f 7057820 main/source/Sources.xz\n 7160556e0b8a95a3891a10894e08f07adbc45bf6 13877222 non-free/Contents-amd64\n 8afcc33e7a7fb31099fa4012035c92a9df2834ba 780498 non-free/Contents-amd64.gz\n d05fd8fb9f27470cf5befb6aa4745f8b18c72292 12897999 non-free/Contents-arm64\n f53c851f028dc219f5347845cce33f38cf14be59 702540 non-free/Contents-arm64.gz\n 85cf3902ffdccae4749d49690792d30397260413 12974741 non-free/Contents-armel\n f0f759c061ca880328e8d494d6a9c9d8d5d11b9a 709563 non-free/Contents-armel.gz\n cbedf81e9ee13b5ea571a0a820ab2a6ab44d1da6 12999205 non-free/Contents-armhf\n b7af21ecd9fc0b28b3f008993c3948b91922a893 711695 non-free/Contents-armhf.gz\n 290357f99e2c5ea5bf18403dfe502b019b0aa93a 13773811 non-free/Contents-i386\n 87384745676fce20464dc0ece1a9e4adc1284154 772393 non-free/Contents-i386.gz\n e045be35f1b1b790ae3c9fcb6bfe0fabe70758ff 12988825 non-free/Contents-mips\n 28e4b46aeb330ee4779b9b475ee0e03c5fa394cb 711583 non-free/Contents-mips.gz\n 9bfc291dd74c6477693e09c3b0b764499680128f 12993815 non-free/Contents-mipsel\n cefb944394ec1eaf65c9b744a421acddbec6effa 711601 non-free/Contents-mipsel.gz\n da6e2cd1be8dbf28322314147447d600c2356dc2 12984577 non-free/Contents-powerpc\n a276f4e862e158c7dfa29c0219d5d69b1e5cf2e0 710876 non-free/Contents-powerpc.gz\n 7977da22d987099c34659eb7941d95afcd96fd3b 12944312 non-free/Contents-ppc64el\n e936499d917c7a25921dc5ba26f803b61ebbea7d 707039 non-free/Contents-ppc64el.gz\n 2f138e13484016d2cfa003d68db4ef5bedb57916 12985998 non-free/Contents-s390x\n 3c0b5bad7189b97dfc4121198e37f98ffada4a58 710997 non-free/Contents-s390x.gz\n 2d66064c0df269f31b2c78f1b440c1977dd62a73 8566061 non-free/Contents-source\n 17e91531b7af45fb3fd2154dc40365f2e108a75e 917234 non-free/Contents-source.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 non-free/Contents-udeb-amd64\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 non-free/Contents-udeb-amd64.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 non-free/Contents-udeb-arm64\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 non-free/Contents-udeb-arm64.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 non-free/Contents-udeb-armel\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 non-free/Contents-udeb-armel.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 non-free/Contents-udeb-armhf\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 non-free/Contents-udeb-armhf.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 non-free/Contents-udeb-i386\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 non-free/Contents-udeb-i386.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 non-free/Contents-udeb-mips\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 non-free/Contents-udeb-mips.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 non-free/Contents-udeb-mipsel\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 non-free/Contents-udeb-mipsel.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 non-free/Contents-udeb-powerpc\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 non-free/Contents-udeb-powerpc.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 non-free/Contents-udeb-ppc64el\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 non-free/Contents-udeb-ppc64el.gz\n 04a86cbd511bd9891157c2edae155d91bffca11b 451 non-free/Contents-udeb-s390x\n 78056d05d1f963ced8ec3f54b3b28211e6d400e2 271 non-free/Contents-udeb-s390x.gz\n cccdd0146dfe90b8bcb3ee742e3fc20eee1bc709 190290 non-free/binary-all/Packages\n d82e96c315004854b46ab0d129124cc14e2b1886 56586 non-free/binary-all/Packages.gz\n b2cf724771c03f546fdc257761c25bce915b7694 47972 non-free/binary-all/Packages.xz\n 12c4c02710a553fa3240a843c6232d5918b10f27 96 non-free/binary-all/Release\n f59f8fb723717ff265c1e79c761f2e8807957f9a 354996 non-free/binary-amd64/Packages\n 6480b1c99c82ff90a6e6defc9a4a95c5962aaaf7 101166 non-free/binary-amd64/Packages.gz\n 3a6ff11ab6da0e46d19b91f8253baf1a251b710b 83588 non-free/binary-amd64/Packages.xz\n a15ec8cf965346b9ac0be482f9421888b872166a 98 non-free/binary-amd64/Release\n 405b1ea6d6baa4dcc2b19e4088b372ca22612464 229637 non-free/binary-arm64/Packages\n 9092bfe80c72a97f8d23393cadd00f8e85c31f0a 68405 non-free/binary-arm64/Packages.gz\n 8e20acf826987302653122e3dddd932e136cced1 57176 non-free/binary-arm64/Packages.xz\n bad8c76699cec77d9a674f9c4e9d07ecab57c29e 98 non-free/binary-arm64/Release\n 2038857f350e4c24687df69eb4695db945223afe 239210 non-free/binary-armel/Packages\n 719a31c133c02982aaf5638c058a5b8ee42368eb 71051 non-free/binary-armel/Packages.gz\n 4af73dd937f4655ab9b47c1361d7887ebc87f663 59672 non-free/binary-armel/Packages.xz\n 8b7d541f0c9c0a1c46bbbb116f8fb642bf6eb4ec 98 non-free/binary-armel/Release\n 68da71fbcc32b36941370f3b8d17670382e19868 253996 non-free/binary-armhf/Packages\n f0eab0391e152ca424422ae242cff54d48011820 74488 non-free/binary-armhf/Packages.gz\n 6db00e89c7719b0d40bb99e13eafd6e893b0e310 62208 non-free/binary-armhf/Packages.xz\n bfe375b916b27c3096087502ef4fd731ddb09194 98 non-free/binary-armhf/Release\n 9329345a5c3cf709032968fe5122032e26a4588c 343052 non-free/binary-i386/Packages\n f2aab4b5c41e72a1ea79d7811a8b72dbb922a057 96981 non-free/binary-i386/Packages.gz\n 91ca2d6a47ca9ccd801698fac3b85e37d974a1a0 80188 non-free/binary-i386/Packages.xz\n 29eccaac53859244c1fc93877ebb4107d6dc045a 97 non-free/binary-i386/Release\n 2ab6461d216f3c05b617b3fbf7e3de3de7fdf34f 240639 non-free/binary-mips/Packages\n 48d91f6e73cdd8952f91703e6d1be2b0f00839b5 71678 non-free/binary-mips/Packages.gz\n 775569add5c9c0f579d1ff31223693ed2d67f7e3 59872 non-free/binary-mips/Packages.xz\n 05efeb0f0559d57aea875fa03f322f1cc3b10d3e 97 non-free/binary-mips/Release\n aae7c0906b55f8b3a35913a078bbf8e4f13cbd0a 243142 non-free/binary-mipsel/Packages\n 2e45c0d6afcdb78e8fb2e5ded69c6b50e941953a 72219 non-free/binary-mipsel/Packages.gz\n a36ec342880932c9198f767f88a6f85be6be5c35 60272 non-free/binary-mipsel/Packages.xz\n 70d15ec1f25e264a372dc828c7f92cb7e54b60ee 99 non-free/binary-mipsel/Release\n d44b254a88f227062f8ce324f47f1a4128adb068 239108 non-free/binary-powerpc/Packages\n b4c457a485e699431713b58412094212ebf56f0f 71098 non-free/binary-powerpc/Packages.gz\n b46a6eade1fce106b70f80ba9872a72a26e57d92 59504 non-free/binary-powerpc/Packages.xz\n e5963294d0c49af15eb9a69bba1262bdafc2587d 100 non-free/binary-powerpc/Release\n efdca5c34674701b9466a26d90d3a0735d829a20 232848 non-free/binary-ppc64el/Packages\n 037fc39fa65552242203079191d6124321b68cba 68870 non-free/binary-ppc64el/Packages.gz\n 55a27fd45c8cac2937b0c761ab940d48ea251279 57800 non-free/binary-ppc64el/Packages.xz\n 436a3c6e6d417dff53b2d146ff3df945524a8142 100 non-free/binary-ppc64el/Release\n 713b31b17d7e7a692bf827467a1597c74b26bb23 239490 non-free/binary-s390x/Packages\n 0876cc6eb31359a8df809dae2e6d0b4eae7a523b 71048 non-free/binary-s390x/Packages.gz\n 02aeea0fed119ccc86364107a98137caf9995d68 59500 non-free/binary-s390x/Packages.xz\n 4451569d0dc3a09d56b074aab52ef1ca55f243c7 98 non-free/binary-s390x/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 non-free/debian-installer/binary-all/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 non-free/debian-installer/binary-all/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 non-free/debian-installer/binary-all/Packages.xz\n 12c4c02710a553fa3240a843c6232d5918b10f27 96 non-free/debian-installer/binary-all/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 non-free/debian-installer/binary-amd64/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 non-free/debian-installer/binary-amd64/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 non-free/debian-installer/binary-amd64/Packages.xz\n a15ec8cf965346b9ac0be482f9421888b872166a 98 non-free/debian-installer/binary-amd64/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 non-free/debian-installer/binary-arm64/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 non-free/debian-installer/binary-arm64/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 non-free/debian-installer/binary-arm64/Packages.xz\n bad8c76699cec77d9a674f9c4e9d07ecab57c29e 98 non-free/debian-installer/binary-arm64/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 non-free/debian-installer/binary-armel/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 non-free/debian-installer/binary-armel/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 non-free/debian-installer/binary-armel/Packages.xz\n 8b7d541f0c9c0a1c46bbbb116f8fb642bf6eb4ec 98 non-free/debian-installer/binary-armel/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 non-free/debian-installer/binary-armhf/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 non-free/debian-installer/binary-armhf/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 non-free/debian-installer/binary-armhf/Packages.xz\n bfe375b916b27c3096087502ef4fd731ddb09194 98 non-free/debian-installer/binary-armhf/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 non-free/debian-installer/binary-i386/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 non-free/debian-installer/binary-i386/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 non-free/debian-installer/binary-i386/Packages.xz\n 29eccaac53859244c1fc93877ebb4107d6dc045a 97 non-free/debian-installer/binary-i386/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 non-free/debian-installer/binary-mips/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 non-free/debian-installer/binary-mips/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 non-free/debian-installer/binary-mips/Packages.xz\n 05efeb0f0559d57aea875fa03f322f1cc3b10d3e 97 non-free/debian-installer/binary-mips/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 non-free/debian-installer/binary-mipsel/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 non-free/debian-installer/binary-mipsel/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 non-free/debian-installer/binary-mipsel/Packages.xz\n 70d15ec1f25e264a372dc828c7f92cb7e54b60ee 99 non-free/debian-installer/binary-mipsel/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 non-free/debian-installer/binary-powerpc/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 non-free/debian-installer/binary-powerpc/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 non-free/debian-installer/binary-powerpc/Packages.xz\n e5963294d0c49af15eb9a69bba1262bdafc2587d 100 non-free/debian-installer/binary-powerpc/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 non-free/debian-installer/binary-ppc64el/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 non-free/debian-installer/binary-ppc64el/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 non-free/debian-installer/binary-ppc64el/Packages.xz\n 436a3c6e6d417dff53b2d146ff3df945524a8142 100 non-free/debian-installer/binary-ppc64el/Release\n da39a3ee5e6b4b0d3255bfef95601890afd80709 0 non-free/debian-installer/binary-s390x/Packages\n a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 non-free/debian-installer/binary-s390x/Packages.gz\n 9746882f4236fa1c3a8f86be2f1d9c46680c0b10 32 non-free/debian-installer/binary-s390x/Packages.xz\n 4451569d0dc3a09d56b074aab52ef1ca55f243c7 98 non-free/debian-installer/binary-s390x/Release\n 0f7c54bd6262e90e42c4947e96617eca8d5f0a70 313321 non-free/i18n/Translation-en\n 2c6a94fc85b5ae16966a87f7719a0fcac2ee52c9 72487 non-free/i18n/Translation-en.bz2\n 355f808e088dfdb79ddfeec2e57f64d005e26270 99 non-free/source/Release\n d0851d21a8cf0b5f16bccbf0f12c589756432cf0 395941 non-free/source/Sources\n 679ef3b544ab030e1979256b441ac8b567270b92 118656 non-free/source/Sources.gz\n 3d83934e49c4810eada259c7ec677647d9976102 99280 non-free/source/Sources.xz', 'sha256': 'b4d0619bfcb4267fb1a44f090642c7c94d3ac339c1ad49354a6b457de0e4b2c7 1194884 contrib/Contents-amd64\n dc65491170f419a35a6df37bb8a7da16aeca11655a8dbbc124c937114a4113c3 88565 contrib/Contents-amd64.gz\n 25342ee94781e616830415e8c5b22192f431f6837dac996e004ebfeda1eea2c4 1021655 contrib/Contents-arm64\n 13122311e821ce3d6cc1300f49c9761e494cdb9b5dd1da15d1ad0332f5bd5094 72539 contrib/Contents-arm64.gz\n 0f438b23ba7a092beaf3ff68cdc7fb319308a9609e01665074c87139df436e4e 1035687 contrib/Contents-armel\n 81712d2e79f99f23041924bb373ec1ed75cdf6d37db3943798c12cd0889b32db 73710 contrib/Contents-armel.gz\n a3ae30715b4f6131c006e776d1b2cec5ec01bbe05a5101bae729842dea532d0e 1028590 contrib/Contents-armhf\n d89f6f488f7e1fd32ae76ab7fabcad967f350dd07f7dc3db09b91f6627dbdd1b 73612 contrib/Contents-armhf.gz\n 962fd264fdb6e361f3977802bfc28312b906843f13700983dc1f77909d510b5d 1191918 contrib/Contents-i386\n 0db9cfc9dba3213cddb68693b612bdba3bdd4bc6e262a6b0b3c93090255a85fb 88211 contrib/Contents-i386.gz\n ec429d4767328e886bd3408750f9608872b597ba69946a818e12c4f4b4977ad5 1037406 contrib/Contents-mips\n 1eb834e7669b11f884d721a81282a19064d6d5e22b315339b5410b6823213a6e 73908 contrib/Contents-mips.gz\n 3bf8673ee189385eb275f0306d5fe99055d40d880e6d80ffd76e8b7b39d48cc4 1037412 contrib/Contents-mipsel\n 94ca366949937ac7a25922150d428a0ad716d6e691410d38f607f033f7c30b38 74013 contrib/Contents-mipsel.gz\n 96ad5f5fb41052025dec52f14bc382f8cd92875f849c3bcda4461ed56ca666ce 1038124 contrib/Contents-powerpc\n 391e8970bb883714b260f4a33c00a5ed6bcf05a84420f05b3512ae63ef0b52c9 74092 contrib/Contents-powerpc.gz\n 845720d992467d953afae77afff337bd6759185849084bae59baf74c657cafdd 1018073 contrib/Contents-ppc64el\n ed97b0372b9e57381385f16643570ba4a64fa1b08ed6518633b0cb2bd2d59c3f 72165 contrib/Contents-ppc64el.gz\n e3618befbba3a3a67018ddd3656a6e39fdb4891192504392219ccfe305b65d59 1033616 contrib/Contents-s390x\n f83de424a402e7960561bf62009ab3264c7fa41dff28f5065f3e52f43004964f 73569 contrib/Contents-s390x.gz\n 3e6a1dee7bee6d78b107d16e7c6f21db24ac0b4c1c0e8b3d4034872029a4a77c 3013607 contrib/Contents-source\n aae2fc57463b44f81fad32b1740b69b3766a0810cac87a536f72a76e66e0d56c 333917 contrib/Contents-source.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 contrib/Contents-udeb-amd64\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 contrib/Contents-udeb-amd64.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 contrib/Contents-udeb-arm64\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 contrib/Contents-udeb-arm64.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 contrib/Contents-udeb-armel\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 contrib/Contents-udeb-armel.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 contrib/Contents-udeb-armhf\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 contrib/Contents-udeb-armhf.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 contrib/Contents-udeb-i386\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 contrib/Contents-udeb-i386.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 contrib/Contents-udeb-mips\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 contrib/Contents-udeb-mips.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 contrib/Contents-udeb-mipsel\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 contrib/Contents-udeb-mipsel.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 contrib/Contents-udeb-powerpc\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 contrib/Contents-udeb-powerpc.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 contrib/Contents-udeb-ppc64el\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 contrib/Contents-udeb-ppc64el.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 contrib/Contents-udeb-s390x\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 contrib/Contents-udeb-s390x.gz\n e160080ce1cf6907f20851fc768ba3cffec53777ecc50aa12bfd11899843af3e 84088 contrib/binary-all/Packages\n 1a136ea9b8df831a0a95a3f97819828d98713477b283269a542a2aea344ea076 27068 contrib/binary-all/Packages.gz\n d5f2519ac259d5ea1415178b38bd9c58269667dda9daacdac1d1634e4753899c 23972 contrib/binary-all/Packages.xz\n fb4d3c0dd4e5bcea5b9a147b3fd78cf18447dab8a1f6d1ad7fea910e7a15a119 95 contrib/binary-all/Release\n 65981301a83ca8e4ebbaf9fb6586396e0902fada7e937ea7bff4a3fa732aaa76 197920 contrib/binary-amd64/Packages\n 751b13fdc93c4abaefdd6a145f739aea0118a2df08ba6f6959935c1fc5d59011 59497 contrib/binary-amd64/Packages.gz\n e43c857a198a345b17fb20188ab0d3b0e7075c3f2553cb3377db0ebb8cb037b4 50148 contrib/binary-amd64/Packages.xz\n fefdc18b53b44fa4a5c771c12c4d72e4714b1261c5e34c1c2f038da7c2860678 97 contrib/binary-amd64/Release\n c9d10a868878eb75ce7850339fb8413abdba65815ee81658c51a73dd7b002e3a 133412 contrib/binary-arm64/Packages\n 018941e3e8d9c145bc9e1572c3f6eefc6be3021464a0a914d54a25b92f5f200c 41581 contrib/binary-arm64/Packages.gz\n fb0e136d0a9c9d594a51e05b499da69bbd3ffd62975de0feb016741a7b0609f3 35820 contrib/binary-arm64/Packages.xz\n 47742e5c3c6c03ab101c4f6ae59f7bbaf18385095482c0aa00f18fb3453204ab 97 contrib/binary-arm64/Release\n 04f0149a818671da80a8d40de4dbf6802febf8eabe53c480fc41531d4bfa1925 139108 contrib/binary-armel/Packages\n 20536662165cb7d93fbb51cc001cd4de2a8d4ca06395273e9b598849b3a02949 43303 contrib/binary-armel/Packages.gz\n c9a567d748f49b7acf1b8c0e65a32cdc62229ba1beedcdaa1fe5057cfbd173ff 37080 contrib/binary-armel/Packages.xz\n a9e3712acae9305dadd5bdded839e54f524f1be9fb73233b5c75024e99bb2b01 97 contrib/binary-armel/Release\n 6d568f5181a9752707150050165895d41a7cf8cca308a0f42b9de8fbaad93bfe 144377 contrib/binary-armhf/Packages\n 8951c5cfb3f84665249071ed78dade70de3fb5302fe0579c670d492008e3f261 44682 contrib/binary-armhf/Packages.gz\n 6850282ada0738eb3de36e9ee922e4678487e81aceaf1a17753ab5c6fd5684a0 38120 contrib/binary-armhf/Packages.xz\n cdea3eb0dcbb9ceade821be91a00173746f1fa9d14cab170c00153fc8103186e 97 contrib/binary-armhf/Release\n 6d13ff5ce7fe2d64cf1f24000342c93e892543db30a271c492d1f82bcb5c7eea 195791 contrib/binary-i386/Packages\n e8c8409d62f3c82402e31d466b6b225762dd1d68c682f9484478028d36ff78b0 59070 contrib/binary-i386/Packages.gz\n e32dbd1bde7cd05c95f517747637ca315ddbfd7a295f6a5271de493ef9eec039 49664 contrib/binary-i386/Packages.xz\n 8e5c337ec85bfa02fc69b163c1dfd8bbecee62515383dd7c5b66d996a99519ff 96 contrib/binary-i386/Release\n 200fae9172e4f98753ae7dda9571e8b15bb8986ae59c4361ec964224b02ab208 140769 contrib/binary-mips/Packages\n 1e483aaa3e566bd78b2096748a03dd9fcbfcbaaffebc95867dc9d04fa2b7c5cc 44128 contrib/binary-mips/Packages.gz\n 67de55a75a134ebeab800061716ee645ad8d9aeb83e8231c6081f3d2eb7d6bb9 37528 contrib/binary-mips/Packages.xz\n a629e32909c25f441f7e68ed26eaf7ed144176d5f17dd0367ed44248b810fda4 96 contrib/binary-mips/Release\n 1d0edd82ecba1c01c87661f64ac573f8b55fa3bb33329c40ba1851f7276b66bb 141032 contrib/binary-mipsel/Packages\n 5a08da93b6faedad9ad89a87e6353c9a87307ad852932933e79c58c61db011d0 43643 contrib/binary-mipsel/Packages.gz\n bd6ac8d2b0738856e14177aca78215900dc21206cbf3c63f415fff180267f89b 37556 contrib/binary-mipsel/Packages.xz\n acd242fe1d4271928f4c25906070388060570fd185292a3e9995c2d2fe0992b5 98 contrib/binary-mipsel/Release\n edfb600f8a251a2fc3da5a2fb85007e53144c84e3fc8f3789b9ecbaae618f36a 141785 contrib/binary-powerpc/Packages\n aa7c0e3dffb8302ccf37d16d16dae6c8949c0e0084e1c5a1115974c3f790c36e 44063 contrib/binary-powerpc/Packages.gz\n e4f33b37e6af67719c63b3609282ad0bab4184adc3afdb36f20b34f9f81c795d 37680 contrib/binary-powerpc/Packages.xz\n 201afe3806ad4095ffe2a5b50fcde8ad5b7d553c6bf1f5036e371f251725fed2 99 contrib/binary-powerpc/Release\n 51534c906ac91fe6be4554c48224af9b1087d1d94a9d2a8f426b21f761bd1337 132657 contrib/binary-ppc64el/Packages\n 4e1bb57f138982033a34450deb1f50c82bc067073ab34d19937e433fe7fc360a 41474 contrib/binary-ppc64el/Packages.gz\n 6441ce71efb8a5372ab22e4ddbddedc850c2a72ab16cfb3350fbd5435bd9d0d5 35672 contrib/binary-ppc64el/Packages.xz\n 0cd82f420982ed015c5d3dbf3d092e4d92bb29d92c4b5a63c86638ebc4056512 99 contrib/binary-ppc64el/Release\n c9df0c5cadbe7e77d148abdb5b5106fa45d7a4731393f9d85dfd11ffe94b9513 137661 contrib/binary-s390x/Packages\n 808073200f6cb0e388f9f9693b1af720304c629e8e64a3dd26beb8215d61c25d 42808 contrib/binary-s390x/Packages.gz\n cdb9895fc0c85664f0c79b3f500c0c956869acea9973a066437462df9710f45e 36736 contrib/binary-s390x/Packages.xz\n eccc65fec1b833926a5a40cab9122d64a38616994735c72d11a58af625e3857f 97 contrib/binary-s390x/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/debian-installer/binary-all/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 contrib/debian-installer/binary-all/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 contrib/debian-installer/binary-all/Packages.xz\n fb4d3c0dd4e5bcea5b9a147b3fd78cf18447dab8a1f6d1ad7fea910e7a15a119 95 contrib/debian-installer/binary-all/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/debian-installer/binary-amd64/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 contrib/debian-installer/binary-amd64/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 contrib/debian-installer/binary-amd64/Packages.xz\n fefdc18b53b44fa4a5c771c12c4d72e4714b1261c5e34c1c2f038da7c2860678 97 contrib/debian-installer/binary-amd64/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/debian-installer/binary-arm64/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 contrib/debian-installer/binary-arm64/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 contrib/debian-installer/binary-arm64/Packages.xz\n 47742e5c3c6c03ab101c4f6ae59f7bbaf18385095482c0aa00f18fb3453204ab 97 contrib/debian-installer/binary-arm64/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/debian-installer/binary-armel/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 contrib/debian-installer/binary-armel/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 contrib/debian-installer/binary-armel/Packages.xz\n a9e3712acae9305dadd5bdded839e54f524f1be9fb73233b5c75024e99bb2b01 97 contrib/debian-installer/binary-armel/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/debian-installer/binary-armhf/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 contrib/debian-installer/binary-armhf/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 contrib/debian-installer/binary-armhf/Packages.xz\n cdea3eb0dcbb9ceade821be91a00173746f1fa9d14cab170c00153fc8103186e 97 contrib/debian-installer/binary-armhf/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/debian-installer/binary-i386/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 contrib/debian-installer/binary-i386/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 contrib/debian-installer/binary-i386/Packages.xz\n 8e5c337ec85bfa02fc69b163c1dfd8bbecee62515383dd7c5b66d996a99519ff 96 contrib/debian-installer/binary-i386/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/debian-installer/binary-mips/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 contrib/debian-installer/binary-mips/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 contrib/debian-installer/binary-mips/Packages.xz\n a629e32909c25f441f7e68ed26eaf7ed144176d5f17dd0367ed44248b810fda4 96 contrib/debian-installer/binary-mips/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/debian-installer/binary-mipsel/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 contrib/debian-installer/binary-mipsel/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 contrib/debian-installer/binary-mipsel/Packages.xz\n acd242fe1d4271928f4c25906070388060570fd185292a3e9995c2d2fe0992b5 98 contrib/debian-installer/binary-mipsel/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/debian-installer/binary-powerpc/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 contrib/debian-installer/binary-powerpc/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 contrib/debian-installer/binary-powerpc/Packages.xz\n 201afe3806ad4095ffe2a5b50fcde8ad5b7d553c6bf1f5036e371f251725fed2 99 contrib/debian-installer/binary-powerpc/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/debian-installer/binary-ppc64el/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 contrib/debian-installer/binary-ppc64el/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 contrib/debian-installer/binary-ppc64el/Packages.xz\n 0cd82f420982ed015c5d3dbf3d092e4d92bb29d92c4b5a63c86638ebc4056512 99 contrib/debian-installer/binary-ppc64el/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 contrib/debian-installer/binary-s390x/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 contrib/debian-installer/binary-s390x/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 contrib/debian-installer/binary-s390x/Packages.xz\n eccc65fec1b833926a5a40cab9122d64a38616994735c72d11a58af625e3857f 97 contrib/debian-installer/binary-s390x/Release\n 921e03dd8d6a26bb9452b2989c69928ab643a54ddc116d7607a964f7d61e6c37 144545 contrib/i18n/Translation-en\n 925142b4ba14f00dda7ccc77f601b5924dad391dfe0fb70718be8f5179ac4f7c 38501 contrib/i18n/Translation-en.bz2\n 7fa8cee9521e0afa0a8f22a5615b279a2a8e9664f43510b0da112010843fe1d0 98 contrib/source/Release\n 534b4859caf7ff1aaea180806d43f82663a76dbca7fc24f3d12d94e903d3f294 190771 contrib/source/Sources\n 3fa0bdcaf03d240c094b96e499e620a71480b69fdbb49e803b17a4cdfe243449 59538 contrib/source/Sources.gz\n d2ffae8ec668888f7ca70a4d114be11ce96d614a5cf60bd18aa98f62aaa94b05 50732 contrib/source/Sources.xz\n c6a1abf46b941a5d4b7ff755eda39c6b1a2244498c5077e89434fd9c6c2f7596 388499395 main/Contents-amd64\n 2ef03a8c980b1db4c57035a5194ec3cb21b0b96bce5a0e65cb74dc5153fede4f 27382772 main/Contents-amd64.gz\n c9e1bf5e885841139d22ec4f2786b877cdd8a84ab32618012222570d738e0315 377634498 main/Contents-arm64\n 28f53ec720d06140e5d6f0b4515e3629563b53d0354c64b390e5354e694bfbd9 26489323 main/Contents-arm64.gz\n deffa368004b9e743e9619a5fef060648c2d62ae95c3b1e39d93d284bc3fd3cf 385144337 main/Contents-armel\n dc24927bcfc322916cfd63c6de4b569b5c3ed50d9abcbc6fa45d10763f1ff768 27053197 main/Contents-armel.gz\n 86f0273f6030afdc4fd2340823992abe83252e415cb9baed9772560faa0d3a55 384809198 main/Contents-armhf\n ede54a9a976e0de01068dadb2e38655a07a5429537420c7b93d28a560891ff85 27043701 main/Contents-armhf.gz\n f024bb585a79a471cab9ab29e3b1bdaa42da1ddc86076524fce078f610def449 389950180 main/Contents-i386\n 9bb2fe88f9945a588adbda31507d09d53339e023b4db1f0a05368575db087692 27495288 main/Contents-i386.gz\n 30bae464fdcb16045080d9b54344142008366c9813e53333fb0aa368e18c32df 384032305 main/Contents-mips\n bba9be2b7c3b5eb8e5a1d09e6593e137c17e1456afb5d7cc6f70b164740e8b6a 26959777 main/Contents-mips.gz\n 6030c59b6f709d7a297de329f39e7ebeb788f05bbf2042e0d2eacf400436d1c2 384611228 main/Contents-mipsel\n efe47be420f3f7a9f3b93fb4956e5ec391f25fb03b003c743867f2c54de13a22 26988306 main/Contents-mipsel.gz\n 63ac341ad8504c69139d44821fadcb6bdd09be759c58f165d63921d91d655d1c 386090513 main/Contents-powerpc\n a69cde8cf7de7bcf83b42e420b025f210fda0e2ecf9f4f5e7c8f673d1a0a5a50 27155425 main/Contents-powerpc.gz\n c83e920b9266b451ffeecde367e491a70dee3236e6057fd08c1901e1de1205c6 378557860 main/Contents-ppc64el\n 967c69d422ba7f5e323cf99dc1385d41a03ba7344d21bcf813faf3b54526b33f 26552792 main/Contents-ppc64el.gz\n 4fb7fe30a14dd911ebc857846ec08da6187d3eaa007f3e7b1a9d519e285d1d14 379662245 main/Contents-s390x\n 21275e24587fe14b868d3345a2c4518d801103acdd1232475256cc362997ffd8 26703046 main/Contents-s390x.gz\n d0a4199800de79f0ecb16948854d6caca49e2d1fc676414c8f6e12342d63df9c 367351454 main/Contents-source\n b3d565e46fcbc480147f5a826ad4aba055e46e9b3c3a010df6ac838286a37fab 42438463 main/Contents-source.gz\n 1a2dbe006a9620378849ca133fda6d2fde1e320d86d6276c2e858d01c0e6cf84 350284 main/Contents-udeb-amd64\n 6f32cdbf73a66c1b11fbcda0c41a408391aca30ba11445f0bbfd4374b2290a30 29237 main/Contents-udeb-amd64.gz\n 02a301a72a91120dfe28829f23b7f8715d2068fa7be8b53c121f4402105ae365 292399 main/Contents-udeb-arm64\n d68cd2cadaeb35b0146748241e8f5fc27b6a8f627fd250f8569d00af9e71a8c5 25467 main/Contents-udeb-arm64.gz\n 62acb7fd708a3897bd8e2a5abe0a4c70082ea1d32efd4d901269379634918acb 333841 main/Contents-udeb-armel\n 8896314242b20c76958685f3da1e3df4a66f4161e021c4ebfa584ca150707349 27497 main/Contents-udeb-armel.gz\n 8a9bf59274f12f97b2f8b1688ede69b894a437b0f38136e16584a7ac57722916 335668 main/Contents-udeb-armhf\n 76f840a518d5e9b67e6f58a3c2d8a596ce7dc62fc45492bcf4dc6114b9d26305 28593 main/Contents-udeb-armhf.gz\n 6ee05ce7018aa84ff8c9451af6cf761ff0bd41e66c797b8d6af58414964b30d6 449459 main/Contents-udeb-i386\n b3975540c6883d082caac48c7e3e8035e7b35641b106d3ca15ce103759be9f90 35840 main/Contents-udeb-i386.gz\n 9b96394214d05132640dceb71872de7b214fddfc098b1e38291c88847d7dd072 459424 main/Contents-udeb-mips\n d3c212ece4b4e1f10fe49c872859d40e3bc84077ef379e057136bc1267f42cc6 35712 main/Contents-udeb-mips.gz\n f7b4527a281eafc3ff7f1ea16e2d0d3a4da9a0014239d99f6f7142264c665994 577364 main/Contents-udeb-mipsel\n 8a5c5075f30761d396f5576fb5a93d4d21f6d0a5cc2452afc75162edf01f1847 42940 main/Contents-udeb-mipsel.gz\n 56643b1effa1897f1a57709270b288edeb265a24b1cb0da8c2c63385aea8a160 416008 main/Contents-udeb-powerpc\n 68ba94095db1cf50b95bf36b40d93959f3e3f031375eae66f9380fcf561788bd 33010 main/Contents-udeb-powerpc.gz\n 88683f5a7fc57ebccee77869bd6791fa29eb6fbbaa5a59468dcbf4020dd6160a 311289 main/Contents-udeb-ppc64el\n ffd283279fe43c31c18acc14a043e27f92fd8e40e6b6137ccca57113dbdd69f5 26501 main/Contents-udeb-ppc64el.gz\n 952f8499fda9e37f0d6ab1b49b14cd42d58b456dea8f88ae748162ded055f69b 271386 main/Contents-udeb-s390x\n 6757bb4be6d3e83b8713a30d381571f356e14222dcc4c30ef6a5b660f599ea86 23838 main/Contents-udeb-s390x.gz\n d13ca765cc9af2ca49a6521e55f9aadd381476ed3d276c2f8dc9b3b87aa1f4bc 14026643 main/binary-all/Packages\n ed6cc4055443f8336ed8a72ad6ce74e31c30fa6f00bec8523fc4338740ffe5e1 3910282 main/binary-all/Packages.gz\n 34542a2a7fda5939af8a2e45dfeb932af85cffaa15bf2628371de20443003c86 2983148 main/binary-all/Packages.xz\n d5cd42aaecebba0f37a700f43a4ade86693e65c5ac2e450abf74b161ff84630f 92 main/binary-all/Release\n 7ea712f73c42a2907199659c92e18958a57efe675597d40e5866c0ff712cb4b0 33803992 main/binary-amd64/Packages\n 21d0539665fa437d0cde2df4c9ba4ec99b7a11224796b6de25b7abdbe65fe4f1 9034031 main/binary-amd64/Packages.gz\n ec937c1b3bbfe4803f0fa43681b19d089eb6b355455ac7caa17ec8e9ff604e56 6763012 main/binary-amd64/Packages.xz\n 35e300c8b4bab3ddbf4144de98795f0994fbc7fd227d43e816a53e06cf559af3 94 main/binary-amd64/Release\n c00766945d26550db853fc6f1a74aab78b4b2dcecce59f7b17b8af9c4221408e 31834962 main/binary-arm64/Packages\n 7db453d1a3fd5cea981ecc9e9ceac4d22b53e9282537d6995db92eb82331a175 8530527 main/binary-arm64/Packages.gz\n d0ee5cd10cb283994a0c086781a0728b2e1e9e0a00183e659a7d56006cf942a0 6393456 main/binary-arm64/Packages.xz\n c94c88413f1aff4af7675d83bfd5078cb03e7ea523bea1faf28f6f6b3b663374 94 main/binary-arm64/Release\n 1f30286cc85f584d971200b339738dc79858fd768ee4b1985a5c835d0966df8d 33019861 main/binary-armel/Packages\n 023721da0389c946a1d9a6af16a5f1ffd2608f8e4cd70491010d5f8aabb4e50a 8836571 main/binary-armel/Packages.gz\n 1f0076ad10f3fb89edeac027595862cb93f10389275b2bb9a38c6f76de86b249 6620072 main/binary-armel/Packages.xz\n 1982bab448389cfe9723ffd3273055540b42075e2e968a2d2df55642563bdf29 94 main/binary-armel/Release\n 9a815a4d9477d01517d354f3d5eb76229437881c3ea33eb6e511abe58769d5cb 33011756 main/binary-armhf/Packages\n 9e135c50e1d46187b91791f0f2804ff47d1dd45ea4e21f853af985d8906b6088 8834875 main/binary-armhf/Packages.gz\n 7f11cd944f659e917dffa0f0354be07fc3cd419defb0d8d3e28337cadab88d4f 6618916 main/binary-armhf/Packages.xz\n 33f288072ac8a1dd6d4547580ae688d30fd4fc3c7f945996ff79eec79da50040 94 main/binary-armhf/Release\n 23e71bfa7067240117f80730505767823a86fed01fd8b1abbd557192c11a1080 33776741 main/binary-i386/Packages\n 2e7cbfdb20fed51b0ea20398fb7c68d6c778d767d67896b029016c26c1aeb08c 9036604 main/binary-i386/Packages.gz\n 1240d404bd99afbeec042c08fdab049f0b5a984a393cac7c221553ab08f637f5 6767908 main/binary-i386/Packages.xz\n 1bdf23535c7e6081e787ce6e34a80efc9616ffcc9c9a7df1884f943d8a820611 93 main/binary-i386/Release\n 50aa9833716be9ba08277f78031228952483d17e6272e2f4bb8ed7f48d6b5802 32706812 main/binary-mips/Packages\n 487b24daf76a1895b5b26c7f6e4c5c2ceda8b2f8e512bd39fb28ef15407159dc 8777040 main/binary-mips/Packages.gz\n 627619fd0986b03719725e527299bd604399104968c5dbccead2cdde89082348 6577212 main/binary-mips/Packages.xz\n fcdbdd7bceb802b3442b2fa155316b3f1aee5f53cb64b7abadc4213a710e3d53 93 main/binary-mips/Release\n a24890084890d970bbe1f4ea9defd0e0f1dd92e67793c6a1ce825f82494a46f1 32864681 main/binary-mipsel/Packages\n 791ee1ae9702c0bd345a77bdc9b8d253027d26a499c4605b84f68755a9cdad3d 8803154 main/binary-mipsel/Packages.gz\n 9d7513c8a7a60ab486bd8f009fbaff0698f40e035ffd670b595b7fe74be1f09e 6592348 main/binary-mipsel/Packages.xz\n 73427ae5b7c137b4c3b4448492708c8a234dba0e58bb8edd6cfb3ea99398027b 95 main/binary-mipsel/Release\n fd142ab87023d57a7543c9309873e947c194b5bdde124968bc7fa5300fbdeec4 33334897 main/binary-powerpc/Packages\n 95456b7e0e3a60245dc82722adbda27332797e99e817b7c70211a72e83e11c47 8899600 main/binary-powerpc/Packages.gz\n 0901f45efbafcd7f0a130d596fcc2f9767cf7559ef146a9ce0b6a1a0902b2fd4 6661992 main/binary-powerpc/Packages.xz\n ca636fa167322f7688747ab26aa0c39766aafe7ccf8c1986a3e82d9c981c977c 96 main/binary-powerpc/Release\n 6587868f2444ab295998b65674fec1b88682c8252922fc1c587cdb30dc72ed98 32355461 main/binary-ppc64el/Packages\n a5535877eedfce507b794bfbd4c1f5d41f978c24d9dd263ffa20911a6c0a6497 8643121 main/binary-ppc64el/Packages.gz\n c9be1e7bc6c939781f165e1edfb4d2c336a2fce82b20cc72743bbecee324584b 6475272 main/binary-ppc64el/Packages.xz\n d52b0b19d4a727b189645c46435c2611299170b220d15e3994db550e8ce91792 96 main/binary-ppc64el/Release\n b9edd55667baec613981612a5de82269debf141656c9a9bdd6366c0d2eae622a 32544327 main/binary-s390x/Packages\n a78f471c3bb27b109b4518e858c3e86ded5863c4d1d246bf98a4f1ab620d5d0e 8731295 main/binary-s390x/Packages.gz\n 2dceeafbd48e754a0f7c46959936c68f19a9ad5344ed97205a61eda87594aa82 6537136 main/binary-s390x/Packages.xz\n 3803b1a80da86a415ad0c006171d8a867c70cfb11ff90feeadb71500c04fa305 94 main/binary-s390x/Release\n 85e98175ca54dc601a347585d65aff02de9b67f519f6efc2625bfd4181900cb2 67833 main/debian-installer/binary-all/Packages\n ad68a95fe551ed3202054f1ad40ce41124622114d591ff8972d1caf807c2a12c 19761 main/debian-installer/binary-all/Packages.gz\n 8a74edc2580ffeb51c720048d26e532ade62e8d7e158678b10476c9eb10b57f1 17164 main/debian-installer/binary-all/Packages.xz\n d5cd42aaecebba0f37a700f43a4ade86693e65c5ac2e450abf74b161ff84630f 92 main/debian-installer/binary-all/Release\n d4ed8a039cbd1361cab9375b2ccb24320dda966114ebd473506057257b4853fe 239258 main/debian-installer/binary-amd64/Packages\n 38db5955bdbb146d17c412ff5479c5f5b870112593da1a84309caad9be821c5a 68568 main/debian-installer/binary-amd64/Packages.gz\n a3ebef16f87466ec1b246d8a3b0848f15f25fc43a04a4f7de46215d9a641e465 57132 main/debian-installer/binary-amd64/Packages.xz\n 35e300c8b4bab3ddbf4144de98795f0994fbc7fd227d43e816a53e06cf559af3 94 main/debian-installer/binary-amd64/Release\n c1aff99600da5c444e341dc0b9fe00fe7c17a6aab1d63838b00d4fe05f01b996 221891 main/debian-installer/binary-arm64/Packages\n da09ad840c66064fd859c6404835059ae22e0555461c1834ade48c0579884a48 64123 main/debian-installer/binary-arm64/Packages.gz\n dd6b2c9aa327943728d7bc156c94f7cce7bece7c2f2811faef759f506ed55436 53680 main/debian-installer/binary-arm64/Packages.xz\n c94c88413f1aff4af7675d83bfd5078cb03e7ea523bea1faf28f6f6b3b663374 94 main/debian-installer/binary-arm64/Release\n 40ac7b84e376c2b9fef43f60f2f4d55012a76841fa4319050c16f868873c6f6a 266310 main/debian-installer/binary-armel/Packages\n 31512d8b40ecb3b0170249e3c933efba41329261ff58d793b795e2fd0009718e 71883 main/debian-installer/binary-armel/Packages.gz\n 8651661360fe3c7afc7befb0afca525c7355465f45fbde523d70d8f158435c43 60396 main/debian-installer/binary-armel/Packages.xz\n 1982bab448389cfe9723ffd3273055540b42075e2e968a2d2df55642563bdf29 94 main/debian-installer/binary-armel/Release\n 73d3147ef738cf2d09b84e2a19cff31e6c19aacdc7c93ee33b5968b158a93595 223825 main/debian-installer/binary-armhf/Packages\n 797a7b95b69c263a7e11a4b4a9591420fbb24c07ca2c521bb48c87b5b4af0f23 65094 main/debian-installer/binary-armhf/Packages.gz\n 52d9d5349fe8d5bf3835e60b0fcc02ebd5848fde2120e4610a3f3761b6aaecdc 54328 main/debian-installer/binary-armhf/Packages.xz\n 33f288072ac8a1dd6d4547580ae688d30fd4fc3c7f945996ff79eec79da50040 94 main/debian-installer/binary-armhf/Release\n 2ef5515b01d5ed475b4cad85810c140c0bb2a47ea502de849b41098ed4a442e9 278560 main/debian-installer/binary-i386/Packages\n 3ec297d56cfc81f554f09f7737de68fa6f5fbc3b7ad6aa61f9b9f0afe1dbeaac 75254 main/debian-installer/binary-i386/Packages.gz\n 6baf2b3be393976aa391c3d354783a2ed830688b4e69ecb9099d982451231769 62948 main/debian-installer/binary-i386/Packages.xz\n 1bdf23535c7e6081e787ce6e34a80efc9616ffcc9c9a7df1884f943d8a820611 93 main/debian-installer/binary-i386/Release\n 7feb081d293e3e721e1ca2dba36d0fcd43e6873370f40e4cf9ce5c54cdc77123 315509 main/debian-installer/binary-mips/Packages\n c82be97c954cb94bb98a39c86d09de70c48c3d0eb871ef06aa6423a75f05f363 80641 main/debian-installer/binary-mips/Packages.gz\n 46cff9ecc50e7dc9146d2adf50475cc6c6daafc5b938a1f195440c3035f596a3 67488 main/debian-installer/binary-mips/Packages.xz\n fcdbdd7bceb802b3442b2fa155316b3f1aee5f53cb64b7abadc4213a710e3d53 93 main/debian-installer/binary-mips/Release\n 8db6cbe3040b7c14348e79f6f8be2b5689888dfae1d38709ab727757eb0886a6 360282 main/debian-installer/binary-mipsel/Packages\n f8ce111a51dad1650ebd20beaca84b4d44444e52b447088780879b4bafcb3f36 87159 main/debian-installer/binary-mipsel/Packages.gz\n 36c5abc81a20294e4bbf4215f186e278c700890fcdf6856e35260ae8d6d28db2 73104 main/debian-installer/binary-mipsel/Packages.xz\n 73427ae5b7c137b4c3b4448492708c8a234dba0e58bb8edd6cfb3ea99398027b 95 main/debian-installer/binary-mipsel/Release\n b88f74f665138b43934f624be7b1991c2fa66b032d716ca3f2d2c5d78be2690d 270218 main/debian-installer/binary-powerpc/Packages\n 1c35c72ae5db21f0a9c624f932d6aae8603062fee30fab6acc9fe367ee7d0c60 73034 main/debian-installer/binary-powerpc/Packages.gz\n eaf86655c8da4ab4e81ebff3bbf32c0669e0f5d79c3baeaae0b9cc6da25fcdc1 61240 main/debian-installer/binary-powerpc/Packages.xz\n ca636fa167322f7688747ab26aa0c39766aafe7ccf8c1986a3e82d9c981c977c 96 main/debian-installer/binary-powerpc/Release\n 9d4150133be8426b5ae8ead4cba7e3b8f3c4d2159b987ce31fe0370551bd4d47 226678 main/debian-installer/binary-ppc64el/Packages\n cac0f0991afb1873ae13a7b6727d5eda303dc19b823ceadc95c5ae27f4349936 64514 main/debian-installer/binary-ppc64el/Packages.gz\n dc859d5d6b1904d908874b0b6d61d659e78e392d9d7cbfa768bd51e5d89b1bae 54232 main/debian-installer/binary-ppc64el/Packages.xz\n d52b0b19d4a727b189645c46435c2611299170b220d15e3994db550e8ce91792 96 main/debian-installer/binary-ppc64el/Release\n 1f588097fc26744f9f50626ce8888bfa6d88a5e7172fd29a6e5fc8a4e1d8da08 206660 main/debian-installer/binary-s390x/Packages\n 213abbe3c34d09e1221693e47a915fa2f33a058a4b31c3f5cb11a27bfc5cf6a5 60710 main/debian-installer/binary-s390x/Packages.gz\n ca44f960f755f7ca0e0f3320a07055a12b916fcee6f2614a2fb57daa89662530 51004 main/debian-installer/binary-s390x/Packages.xz\n 3803b1a80da86a415ad0c006171d8a867c70cfb11ff90feeadb71500c04fa305 94 main/debian-installer/binary-s390x/Release\n ca13ee7f00c1f367d2f9abfe10432adc3b04248672b2e52dbdfb873bd6b62d46 9627 main/i18n/Translation-ca\n 62a84909c0bac44a47e3eb5b96261c8da467ecd87693c84fce6e15dac761a6e0 3865 main/i18n/Translation-ca.bz2\n b0ce634e960a09c62522e7a9fef5ac34fe7f8a6a1bf74258ac33053c2c24f241 1893411 main/i18n/Translation-cs\n 1f0bc9d9b42f9e0f7052581cf3c4d1a3b2647c2a9bab2ba3dcf44d98f2ee3b86 494559 main/i18n/Translation-cs.bz2\n dcc68a6a3d02e1f41b3d6533eb3c9e8f65af0ec09adccb1ca3a3cb570d5b2c38 13166981 main/i18n/Translation-da\n 4beb5f9b7259cfd0482a6990798cfd92d98447a2ef03d916b171416e287caf6f 2901281 main/i18n/Translation-da.bz2\n 4ab09f27d78d88db21e569229e538d367c17f51a6457aa1d211739f43b42be83 7664182 main/i18n/Translation-de\n eb2877dc80cd318b5b64cdbf219c9592e908efff167b76f5057fa376aadea2cf 1754517 main/i18n/Translation-de.bz2\n 284169348b8bd4e0de4cc5641eeb05577e80d2bd736452e454976c052cf3cbe2 1347 main/i18n/Translation-de_DE\n 481a435ad350105b74c4972859c44f447b7a8b5edea0d42f6dd635792e00a461 830 main/i18n/Translation-de_DE.bz2\n 9f9abe444c71a7c8c9541f626211c000e4f311c8ea0a9061ff125c53ce18a210 8287 main/i18n/Translation-el\n 8e4906ba999712818c7839947cfcd30d3575e7e6462d7c3c2a230f9ce84defc0 1896 main/i18n/Translation-el.bz2\n 3038236780f99cf1aa1d5ddad41840dbe171068f1830afa055ef57870c313471 22310532 main/i18n/Translation-en\n e3fa5b01d89216b6eb18117df21df61ff10f8987202df508e6fd7df381980533 4582125 main/i18n/Translation-en.bz2\n 57cbd7113d483fc4954c7f8f94d1fca2c6fe593d8edab0c880113637c4c2fb68 2739 main/i18n/Translation-eo\n 3590dc840a339747c889397d5b37a9b7566d017ca1c64a441f2fe719c88ff6c3 1344 main/i18n/Translation-eo.bz2\n f1c592079a87ae0aa26db77961a0c8233d3cd0b4cefa36a1ff0694b956a145f0 1278186 main/i18n/Translation-es\n a06bf3a9408030cc44562e0dd25977b6b6986a29bff242cd5163dd3daf33a499 314368 main/i18n/Translation-es.bz2\n 6774f0e7c9b52f064b6b029f159bcca7eb4ed1824c440d356a5d4f8347b769d9 17288 main/i18n/Translation-eu\n 06501e6280985f7acdb4c6b901064246242904f2f2a73d46168f8203fc9d996e 6460 main/i18n/Translation-eu.bz2\n 79d6ea8041b340a9ed7bfffe3b143e4a222e46e54fa623230b751cc5f250479b 390801 main/i18n/Translation-fi\n 27466e4e7c05361e4f400bd1ca52211f36b14bec3fdf26e1bbfe2b673e96b176 108973 main/i18n/Translation-fi.bz2\n d8e9564b44bf1b3dedb9c5f50ab238b7005af5880f5be8c9f76251c0434b29c1 3701781 main/i18n/Translation-fr\n 06433a6aa16bf695523d486818b381ff07f5568de239c7a6f72ab1639b807b9e 846329 main/i18n/Translation-fr.bz2\n c945037f623a4c46be03ca8bf22f29246c275c7f20dd552f6668a56270ad2055 14962 main/i18n/Translation-hr\n 00ad39dc031364bb77848530e87c9ffee94aa43f3fd2dde54526bbcad62f839f 5841 main/i18n/Translation-hr.bz2\n c9214c0bbf86e57d0823ee5968658eca65d4cc3019e541595d0650aa888bfbbd 101201 main/i18n/Translation-hu\n cf71a62b4de459477e030cb601ea8a1517e0e67f4662c8fcd13075406896f4bc 33209 main/i18n/Translation-hu.bz2\n a57a7f9bcf3dc7707e92df28176161ae75b84a2ca903e7ee80bdfdd0ac89a0e6 7753 main/i18n/Translation-id\n a4e33fbc299198efcfc47c3df98c55c95197667099caf7dc2ee455309cbb3761 3093 main/i18n/Translation-id.bz2\n 182e8212693cc8bccba98500b3f5e7c3a25a1a8715a78590eece48c0df6e93d8 17993956 main/i18n/Translation-it\n 1ba10f2b7864ee34c9a716e4e8778c11530dce66b17d76b71fa31c0c9fd13722 3656485 main/i18n/Translation-it.bz2\n 46142d62938cfd82a8e848ad652b7eb1ad5e598a4ef72e8174669ec970362cb2 4376703 main/i18n/Translation-ja\n 56b68499d01ffc80d03f833aafdc0ea272ffb3876d90061ca9f39ded21fd8fd6 794698 main/i18n/Translation-ja.bz2\n 9e870f2c80d2ae29ec5b8aaf979478b21dba6946781c842290c9d01909a37db5 21141 main/i18n/Translation-km\n 633de64ac0e312e971274b0b12a210b3796755d3436aa797cd38dc25707c8eb5 3796 main/i18n/Translation-km.bz2\n dd6ea15ad5bad66b3cb2ecca051c197f00afaf4d0eee2f516cdf6edf7d39eb0d 924206 main/i18n/Translation-ko\n dd1c2e78c63af61cfba4407fd3843f5ca73593788d10689cb6b89d9f64908920 204449 main/i18n/Translation-ko.bz2\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 main/i18n/Translation-ml\n d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 main/i18n/Translation-ml.bz2\n 917a62d4d2bd8fb889d77caae2e4ff39abb23410919ecdc553e8aa4f1854da36 2325 main/i18n/Translation-nb\n 487379711cdb467cfdc7ff412a0a844796bc8371252b051fc1b325f9ac90832d 1302 main/i18n/Translation-nb.bz2\n 857b92b89f3dcc4c8e5dd1645a097349f12cb999c51b1f253874d3972993f604 267344 main/i18n/Translation-nl\n d9064f38c767571fd6367098e29eef4217945e85a79fea02bd7c16deb01f0650 74095 main/i18n/Translation-nl.bz2\n 1332a460e0a348e929e9782c4137df27c12316d944ce5864ff5673cf8e934f2c 2490134 main/i18n/Translation-pl\n e8d23cec4050bb1b781b630cb1c92400c6ed7f981a252e28f2f8758b491b5ef5 574404 main/i18n/Translation-pl.bz2\n 7e31f6cee54089dc34b43aa82253a920a135f091671822699628c16b35b2967d 1712133 main/i18n/Translation-pt\n 08b50c66c04bb5fb1fcd352be8e3d24336dcc12248613fe9a2be5e46d25eb213 413142 main/i18n/Translation-pt.bz2\n 05ee9a782e0367b5eca29c77960d09b2077bd1691c562b984af0fcd9d78b24bc 3363311 main/i18n/Translation-pt_BR\n 42a33e4ad7503a6b320aa1f0928e69106b24a55a65bfdf6cb44adafe2363708d 802754 main/i18n/Translation-pt_BR.bz2\n 00908d40a00314c1ceaf85a68550d22995a466bf22ebe9ee2d6ad5045e18734e 2949 main/i18n/Translation-ro\n 93cee00ae5cf8a56439faf45ce383d73376e7628e4d6394c463363b52c24eb32 1463 main/i18n/Translation-ro.bz2\n e4be1494fb7a568295a28d24d14b377db7fd287c10a3fde4bf11b61bd5dd7c18 2684275 main/i18n/Translation-ru\n 0d90506d320340ab59d92780ca4c34a7d37c91755c0619a2184381b837929c28 437612 main/i18n/Translation-ru.bz2\n b1b1632a02ad05e5dd5c6d287be67bbd046731835704c7c4c1b02423f2da6dea 2106842 main/i18n/Translation-sk\n ca0a6fca2846922673b3a8421915c495069ad1d5ed9bdd1cabcf473596e09af4 509104 main/i18n/Translation-sk.bz2\n c87a210cbc3b4710776da955b316cc83499d9fcba074d9a288c6ea49ff2099a5 455684 main/i18n/Translation-sr\n e93b90d3fcd156ac01b376fb3cf865adbe453f66db6e9a810202e46783525a86 81894 main/i18n/Translation-sr.bz2\n 6fb6c24f5372962a8bf84b8ca9578e84b311e3a13a0db71ab6c38230d58de96d 132973 main/i18n/Translation-sv\n 2699aef46d645591898b46c8a6f2aaf4f9eb0b00cd1fce843e662ebeeac38708 40142 main/i18n/Translation-sv.bz2\n 926b4a85b107381c03f2ae77007d2a9e628b1da209a654ad190d720adfbdd546 902 main/i18n/Translation-tr\n b53b66bec94d548702370107afb1cec937abbd7b5b29ed47e5f64c1f7416414d 530 main/i18n/Translation-tr.bz2\n f4e700ad4c33191edefd7860b7633ffcc9823fba80c721fa37738a0b02b6a394 4630335 main/i18n/Translation-uk\n 1ea3aa206d3e357270ad44b987f6a2f04b3ae301caa3c785c28b4bc99f6d1b77 734132 main/i18n/Translation-uk.bz2\n ef3f62a1e4f1021547f6dc6063265bab18a12d83a28a07a65e532791a947c741 36422 main/i18n/Translation-vi\n 51f3f979f3229486bba6b577f0d8bc7b900cd0c727642a0553f924fb138df987 10243 main/i18n/Translation-vi.bz2\n ba5bf385ecf4799de85e8ab873c233fe0478bbdd30611baf528aea51ae2b97d2 2799 main/i18n/Translation-zh\n ebb2e1910c3096f393f46f4fb6b1316e571d805d654c2d97d0ea92ddb2229424 1526 main/i18n/Translation-zh.bz2\n 1dc43dad693fb97fd97527e0dbaf27d60f48e7d2cc895c5f74d444427c6e9f50 367410 main/i18n/Translation-zh_CN\n 736fd17216a423f88d3d1344ce11c9b6f3a02dadbd1cb959e9e6f5b10d51f695 100783 main/i18n/Translation-zh_CN.bz2\n 75679567fe3b0718d5057b207946056e1eb4a468f7208b1b8f63f1b35bdc7427 64019 main/i18n/Translation-zh_TW\n 4c89775758f1e6c2f333ccdf92f16292e0166815e4f27481e81ef7013e52da3b 22485 main/i18n/Translation-zh_TW.bz2\n 15bf5c565cc98789c37e88a35bf049cc52b3157a29c3999da8e8c156153a0f72 53815 main/installer-amd64/20150422+deb8u3/images/MD5SUMS\n 21395d5294f2347e879f395e75e73dbd47d966b3438bf62168b54bdbab65eded 72131 main/installer-amd64/20150422+deb8u3/images/SHA256SUMS\n 782fc37c049313ea581c76d8a06d10d894532edd954b2ca85bd0197b3c30dad1 53815 main/installer-amd64/20150422/images/MD5SUMS\n 17abd745a3e8d79d4bc22dd9f5bded89b1841b7b991eaaf4a105bcfcc835294d 72131 main/installer-amd64/20150422/images/SHA256SUMS\n 15bf5c565cc98789c37e88a35bf049cc52b3157a29c3999da8e8c156153a0f72 53815 main/installer-amd64/current/images/MD5SUMS\n 21395d5294f2347e879f395e75e73dbd47d966b3438bf62168b54bdbab65eded 72131 main/installer-amd64/current/images/SHA256SUMS\n 966fb2fac819f35503dd0df376f66e15410b5a0e466863f6579e6f3b9a179af3 19148 main/installer-arm64/20150422+deb8u3/images/MD5SUMS\n af184a8a69282c059b35d643d0e9a6b4cb97b25798289b543af6cfb1b46f739e 25912 main/installer-arm64/20150422+deb8u3/images/SHA256SUMS\n 47a2f89ca82421b20984d38888d48cd5200dd676ca51a9342476bc62c812379c 19148 main/installer-arm64/20150422/images/MD5SUMS\n 08af7315fd23120f3e8ad1af11ac2730a455d6d3b6ed673f427ee003068adf34 25912 main/installer-arm64/20150422/images/SHA256SUMS\n 966fb2fac819f35503dd0df376f66e15410b5a0e466863f6579e6f3b9a179af3 19148 main/installer-arm64/current/images/MD5SUMS\n af184a8a69282c059b35d643d0e9a6b4cb97b25798289b543af6cfb1b46f739e 25912 main/installer-arm64/current/images/SHA256SUMS\n 2bd6435e3b7235cfba6102bb16a478ff40ca9c6cdee6727ed350b2bfe3e30524 11455 main/installer-armel/20150422+deb8u3/images/MD5SUMS\n fb744b7dd0ac71a2550785ebc4a700d9de75fb44a36863baf05dcf44b6098a68 16107 main/installer-armel/20150422+deb8u3/images/SHA256SUMS\n fdbf3f1cd1be6e4192103e2af7e0d7df528af5c3786fd04f5ccf4ed9dc47529a 8985 main/installer-armel/20150422/images/MD5SUMS\n 8a5e9f96a5574c8082ff1949b77a49b97593274fb4ee9d188609b2c849d534c1 12645 main/installer-armel/20150422/images/SHA256SUMS\n 2bd6435e3b7235cfba6102bb16a478ff40ca9c6cdee6727ed350b2bfe3e30524 11455 main/installer-armel/current/images/MD5SUMS\n fb744b7dd0ac71a2550785ebc4a700d9de75fb44a36863baf05dcf44b6098a68 16107 main/installer-armel/current/images/SHA256SUMS\n 22f040479a9a5cf5a49461919523d10558ef1ca4dca5aa92af4fc771675e4ab5 19599 main/installer-armhf/20150422+deb8u3/images/MD5SUMS\n 3f257c371acd57faf033b7cad56af1bc39b7852cfde062df14bb7aaf3f370225 28379 main/installer-armhf/20150422+deb8u3/images/SHA256SUMS\n 8ed796ad892478a3d68d7d6e5ab0d4f0106a45a48a1bbd0c812474f029fde7b7 19599 main/installer-armhf/20150422/images/MD5SUMS\n 983d76be48052b2f1bf31cb984ec93f47468da67cbc4284288a0ed2a9a6c93ac 28379 main/installer-armhf/20150422/images/SHA256SUMS\n 22f040479a9a5cf5a49461919523d10558ef1ca4dca5aa92af4fc771675e4ab5 19599 main/installer-armhf/current/images/MD5SUMS\n 3f257c371acd57faf033b7cad56af1bc39b7852cfde062df14bb7aaf3f370225 28379 main/installer-armhf/current/images/SHA256SUMS\n 5cb9526b73d9ae32e26a1d447fd0fcf3f35e906da068ff9952a903f235d00733 52495 main/installer-i386/20150422+deb8u3/images/MD5SUMS\n f1a75c9dceeeeafb14bfd011067acb24a5aa9d3f020b491c2078236e2aa48a19 70875 main/installer-i386/20150422+deb8u3/images/SHA256SUMS\n 0c1498d49c3cbba310a31b29563273272237c49effb30bbb57a3e618e03bd212 52495 main/installer-i386/20150422/images/MD5SUMS\n 8ab3f5b9dbf85cd95ca3fdd96e47f5145f9119b2501bdb4774e9da644e74c8e6 70875 main/installer-i386/20150422/images/SHA256SUMS\n 5cb9526b73d9ae32e26a1d447fd0fcf3f35e906da068ff9952a903f235d00733 52495 main/installer-i386/current/images/MD5SUMS\n f1a75c9dceeeeafb14bfd011067acb24a5aa9d3f020b491c2078236e2aa48a19 70875 main/installer-i386/current/images/SHA256SUMS\n 0890edd3ea8170466f88f584c004008755f34afe6f9f3e570741a5ab5c4bb08f 940 main/installer-mips/20150422+deb8u3/images/MD5SUMS\n 04ecc19891dc1b319199bfba92af46ece9b684950c28d192dda83a62483e755f 1496 main/installer-mips/20150422+deb8u3/images/SHA256SUMS\n 0ba9585385f7e4d35f74db8d234e14e0ad97de6c2b1e58f4335b9cb61cbf4d24 940 main/installer-mips/20150422/images/MD5SUMS\n 637d65df2638cb80ca893ba306af0478db47bd105b8a56a0f2fbf49c8e8b1e1d 1496 main/installer-mips/20150422/images/SHA256SUMS\n 0890edd3ea8170466f88f584c004008755f34afe6f9f3e570741a5ab5c4bb08f 940 main/installer-mips/current/images/MD5SUMS\n 04ecc19891dc1b319199bfba92af46ece9b684950c28d192dda83a62483e755f 1496 main/installer-mips/current/images/SHA256SUMS\n 18e6e0617c234586a3ba397fe8f1a0513e0a8385c108fa4e51577a51847026b5 1213 main/installer-mipsel/20150422+deb8u3/images/MD5SUMS\n a2bde0bb3ecd15c586ba80d0a6cb66e98543bed55c2b8db29f1e8fe7fd0a1797 1865 main/installer-mipsel/20150422+deb8u3/images/SHA256SUMS\n d6c364dc4ef14cc10ff0db0f30665f597417574549444c2bda4ddde8e6ba49ca 1213 main/installer-mipsel/20150422/images/MD5SUMS\n 07340180253b71ca03bd55ae026fdc5959741054f030a11f5646d06429211bf1 1865 main/installer-mipsel/20150422/images/SHA256SUMS\n 18e6e0617c234586a3ba397fe8f1a0513e0a8385c108fa4e51577a51847026b5 1213 main/installer-mipsel/current/images/MD5SUMS\n a2bde0bb3ecd15c586ba80d0a6cb66e98543bed55c2b8db29f1e8fe7fd0a1797 1865 main/installer-mipsel/current/images/SHA256SUMS\n 30048e0f928b25b94baa8bc6087adc0dffdf8e8fc80fe38810fa8d0f4c66df37 2128 main/installer-powerpc/20150422+deb8u3/images/MD5SUMS\n e7fc5617920b85b8794b3312c3b74bb2ef4dfcd704038238ee011e3477a99b33 3292 main/installer-powerpc/20150422+deb8u3/images/SHA256SUMS\n db19e3daaca03a155831e9b588810291489f0e82be200fab0c4cbd36d3294efa 2128 main/installer-powerpc/20150422/images/MD5SUMS\n 581181933b42af5df34ae56e335184a8677aa4e4bd6d2f5a6f2566b1e84fdc4a 3292 main/installer-powerpc/20150422/images/SHA256SUMS\n 30048e0f928b25b94baa8bc6087adc0dffdf8e8fc80fe38810fa8d0f4c66df37 2128 main/installer-powerpc/current/images/MD5SUMS\n e7fc5617920b85b8794b3312c3b74bb2ef4dfcd704038238ee011e3477a99b33 3292 main/installer-powerpc/current/images/SHA256SUMS\n babaed38c28a9f34cb16c9c5fb0128f5784f33c8be5a1054ab9415fa096fd9fd 576 main/installer-ppc64el/20150422+deb8u3/images/MD5SUMS\n 6c4944dde28eea6c308c1f1ef293914c1f88b328c30a102e010f76e4e9bb3ced 972 main/installer-ppc64el/20150422+deb8u3/images/SHA256SUMS\n 1ddb9a9a243149f93822c8b14e1f1ed2ef69c46c79c2cc2a01c20647346f86c6 576 main/installer-ppc64el/20150422/images/MD5SUMS\n 914330f644847bb5401fa3160cfe2d79e50c02e3df91bffb1085081a51db23ae 972 main/installer-ppc64el/20150422/images/SHA256SUMS\n babaed38c28a9f34cb16c9c5fb0128f5784f33c8be5a1054ab9415fa096fd9fd 576 main/installer-ppc64el/current/images/MD5SUMS\n 6c4944dde28eea6c308c1f1ef293914c1f88b328c30a102e010f76e4e9bb3ced 972 main/installer-ppc64el/current/images/SHA256SUMS\n ea2811630e7f65dce5dd0276100273e1d911ab9107025b46fbabb46b6009a9a1 374 main/installer-s390x/20150422+deb8u3/images/MD5SUMS\n b5a652afdd1b5bde218a930883e8df96a406eac572dccb3742a46471eb18f155 674 main/installer-s390x/20150422+deb8u3/images/SHA256SUMS\n 376bfb191054107631fe8de2dcedcefa14b35a6e957a4210fe8b76a79a16471e 374 main/installer-s390x/20150422/images/MD5SUMS\n f8a4b1aaab7b502945db265c1560a47a641609753b77ed61587d68b3e0fd7218 674 main/installer-s390x/20150422/images/SHA256SUMS\n ea2811630e7f65dce5dd0276100273e1d911ab9107025b46fbabb46b6009a9a1 374 main/installer-s390x/current/images/MD5SUMS\n b5a652afdd1b5bde218a930883e8df96a406eac572dccb3742a46471eb18f155 674 main/installer-s390x/current/images/SHA256SUMS\n 3e0edfd7db14315900b34d65ec77a7ffbaecb06e35f9163e4cce36d6968777ea 95 main/source/Release\n 5b9b9c153988a10b96deb7074f80b734066ba0d16bf7e522cebafbb807a0f04b 32525646 main/source/Sources\n d07d8144dc6283cd0a127ca42bd7de462ef11c40ce3ab5a0213b36fb5cae4903 9159302 main/source/Sources.gz\n 6f945fae64c94437d5fbcdb238e5bc305cff085e7f12e0c16a30fac59d17129e 7057820 main/source/Sources.xz\n f6f22888a3cbe0413cd14da643bac2ab20ae7eedd050c02bd1e25f6256558a54 13877222 non-free/Contents-amd64\n 54c1df77a42072523150633238e538358f00d42a7cddfc548c982ddab0b1af23 780498 non-free/Contents-amd64.gz\n c8f13d35c875a9624a781736e6e9a407daf811649515eda17edda493940876c9 12897999 non-free/Contents-arm64\n 083655ea00c4e8a608305c26c9853ec5279f384e663c1da76bce74b7666d04f2 702540 non-free/Contents-arm64.gz\n 76da6d7536a596f4c452f9c012ebd5c3c1ec2b70991389066593140e08e0354c 12974741 non-free/Contents-armel\n 280df33665a8d94c6913d4415d37c3ff35318d5d3bbbb7a05efa0f61cd704d07 709563 non-free/Contents-armel.gz\n d5b1d8c9a7dc1958ddb19c15b1d15508edc8c236b0e4250a97504f4f748bd1b2 12999205 non-free/Contents-armhf\n fda358ece9380a2f6559267fc3ae7a9479fc446d6f647f7c10a81a02cf33e8c8 711695 non-free/Contents-armhf.gz\n 1a87ffbccc7c4cea39d28ba72a5d441081e6236d54acbee58eeb132cdbbc255f 13773811 non-free/Contents-i386\n 2712e11bcb785e2e269f195378d87ba16b995d1b940e9870d5fb88eb622aeb98 772393 non-free/Contents-i386.gz\n 04d1646ebbe6a4a4cc263b3c370d897224daa166926d2de6e9f17229ae01fe45 12988825 non-free/Contents-mips\n 275ec1ef8d1c55e3f75a2de5706ac237c7beb7978107df94542962207387813c 711583 non-free/Contents-mips.gz\n ee62d0efa53ff0e9472f033ae040e292f625a08853deb54a9bc9c5320dde0756 12993815 non-free/Contents-mipsel\n 7c54d69a43a1acdf550227ab32b15f3c7f20e2e72ca5c03ac50b1d79f40f98ac 711601 non-free/Contents-mipsel.gz\n 462b1c61ed714728e4449e2c53ffb84d0f9993477e1d111b9a53d6b967aaa8d0 12984577 non-free/Contents-powerpc\n ef155904bb73352650089af947ec9058ecbaf01021b1c4e507ea35373a5eaf79 710876 non-free/Contents-powerpc.gz\n dbabdb94f695fa46dadf949ceeb86b5a396d772124825cffac26b19ae20eb1e9 12944312 non-free/Contents-ppc64el\n 6532fd6998e38e986e918624639c647341c3bc89ec66cc34dec63a4c5e31c5bc 707039 non-free/Contents-ppc64el.gz\n 48f9e07e148d3435d05d65ae53e79bcd3bf7acfeef9a7ac1a425f0bb3d2412ba 12985998 non-free/Contents-s390x\n 82ce1fd0fbedd0202983cbeb26811c9ad18432d4a4586bef0afc45f759a35db3 710997 non-free/Contents-s390x.gz\n 51573bdec4287f85c5f9aabe0cbd456d4fd62fde247351b07456473b82b876f1 8566061 non-free/Contents-source\n d4bd5092829580cfe47300314f600597d6e305fb1c2b120e3ab565c3293cf8ca 917234 non-free/Contents-source.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 non-free/Contents-udeb-amd64\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 non-free/Contents-udeb-amd64.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 non-free/Contents-udeb-arm64\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 non-free/Contents-udeb-arm64.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 non-free/Contents-udeb-armel\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 non-free/Contents-udeb-armel.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 non-free/Contents-udeb-armhf\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 non-free/Contents-udeb-armhf.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 non-free/Contents-udeb-i386\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 non-free/Contents-udeb-i386.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 non-free/Contents-udeb-mips\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 non-free/Contents-udeb-mips.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 non-free/Contents-udeb-mipsel\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 non-free/Contents-udeb-mipsel.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 non-free/Contents-udeb-powerpc\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 non-free/Contents-udeb-powerpc.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 non-free/Contents-udeb-ppc64el\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 non-free/Contents-udeb-ppc64el.gz\n 46cd40224a17d73f2128f9165814d5a8050dc3cf3b4a659581adf2148c2404cb 451 non-free/Contents-udeb-s390x\n 0cff97371dfefacdd754bb45d9e55f0c494158613fc46202ada07a93386a56ff 271 non-free/Contents-udeb-s390x.gz\n a7191562c8fdc37dab22a3ac274d15556e7899e6d9845117214ebcfb8f25b53c 190290 non-free/binary-all/Packages\n c3c416a20cdf5286fd938fa0179957ceff074730cf3fb0dcc5c68c2a64ebb481 56586 non-free/binary-all/Packages.gz\n 6c7a1b5be755735c5293a6c4a9e6a5eed4ad780a38e47687f27879a9d028c665 47972 non-free/binary-all/Packages.xz\n b9e3e391deffaaaf327b7dbb70fd9d82398fbd9d6fdc2da1da572d23ed3a2ef3 96 non-free/binary-all/Release\n 7df91e4b86cb886bcbb6aa34defd4a184f72e798b362977c088a62f44fdeb18f 354996 non-free/binary-amd64/Packages\n 10c433c74efd754a85e5157d036eaeb91b67241a9ebaf1b5d1743788e8510585 101166 non-free/binary-amd64/Packages.gz\n 34c52e5ba1bab0360e59bf7ec906087ef6e62a199062b3864a682b0bd24857d0 83588 non-free/binary-amd64/Packages.xz\n b5a272cc25461620253a520922e7235a81806fb0b14ebc8b6f31da7e6a8f14c8 98 non-free/binary-amd64/Release\n 08a23b1b76fa34beda9e691a493f6b1fbb885b34dacebdd506e9e4e909f59fe0 229637 non-free/binary-arm64/Packages\n fe85070ef3786ad89bd1c8ea5a4ec09bd563d6e54603ca7235f7445b1ea69b57 68405 non-free/binary-arm64/Packages.gz\n 2e299e8f71aebdcf0bcae0be2bf7d7febee90046d26b2858e673683910e4b5c4 57176 non-free/binary-arm64/Packages.xz\n a04f76552faf0a8b5bdbfd51e24e5b7a1f384f526d3187ce6461597a5e3039de 98 non-free/binary-arm64/Release\n c7ceee11d0b115bbdb9e4e56bbf10e868068787cd8841c328c5df69476cf765e 239210 non-free/binary-armel/Packages\n 48377467300bc9b0d4534a98ce11d07f4e2719185ddd45e277dc3fdf5381dcdf 71051 non-free/binary-armel/Packages.gz\n df7c3eeae6fcf3c025854331d0cd6ca953275d83d34a31b61a0f06359d90c040 59672 non-free/binary-armel/Packages.xz\n b4695ebc002ff6393634be97166802305531cfa0842457256c41bf06703300a6 98 non-free/binary-armel/Release\n 7cda6c4cdf1f0924b9805e791a802ef96a67bdc2665fbac798c94170816536d8 253996 non-free/binary-armhf/Packages\n fbdf809df5c9b472c103a85452e49a7b14a353e794a8267b2514df8674022936 74488 non-free/binary-armhf/Packages.gz\n b1f556478bb2fb97b54d7aa2060f48ab4ff1ed7423429cd4a01738dca6f3120f 62208 non-free/binary-armhf/Packages.xz\n d88c8db18e472142336dad6ea6657a7e4a7dab4cecb930e64b05f9a7f5f9a650 98 non-free/binary-armhf/Release\n 4b72aaff4a9d2d6f088f15126f4558e4a64b6f6a0adf109a75a303ad5a33dd36 343052 non-free/binary-i386/Packages\n 814667676ca0848448b13fc9077512a1137b06799a4e5fd40ae15ed20a695a66 96981 non-free/binary-i386/Packages.gz\n 426cdc6f13ed2bb0cca98a3cc87cfeb1c1cc0f97162cd71b548b75ed76654531 80188 non-free/binary-i386/Packages.xz\n 58bf42467333f5e5caa3d9236dc7a03bc0a18f523c48c46ec5dbb139c409c981 97 non-free/binary-i386/Release\n caac946f0938b6194dcc2df3af33385fc588cce1f68ee87ff4e41ef1861e0260 240639 non-free/binary-mips/Packages\n 0610968fbd8da45a6cf9404c6fef4f2959018436134a56409d219edd208dd705 71678 non-free/binary-mips/Packages.gz\n edf866273fb3c224656be1c347b79c3a2219c3c4fba545b530b6220614559954 59872 non-free/binary-mips/Packages.xz\n abe05cdbcf954b7c9e81cda851d7080843e159852e5aab0a442ee179d1a7fe6f 97 non-free/binary-mips/Release\n 2b8e719240c61f3849a90dbd1a5abb3058e4ab6ee8ab265d4e315fb58a8d6fd7 243142 non-free/binary-mipsel/Packages\n 489189164c14b9124d6acf297cd2a0ad25a08397e3a85d2f005df5136576f371 72219 non-free/binary-mipsel/Packages.gz\n 3ddb331675676b0341fe9969d2611e47a7d0ebc9b7c64ef18c70ef2df3c961f0 60272 non-free/binary-mipsel/Packages.xz\n 9ce2423e77e5bd592f615de2b8a18e506e7b259b81d5fb8afa9af23480d5e5e6 99 non-free/binary-mipsel/Release\n 4009e4ced65be78450fc17a79eb4730786902856d870a0726f95dd813debd50f 239108 non-free/binary-powerpc/Packages\n 3919ec858981ad0cc679b1e1ae438ccb934623448d98da2716708f1ea8c34a12 71098 non-free/binary-powerpc/Packages.gz\n ff0acd9e5a0827f801a628cfb9fb134185d416af1788cf6c38c4dea2da08d17e 59504 non-free/binary-powerpc/Packages.xz\n ee4ae6d0525812f39312465cb338a16c1e8e8547304640b65256b32092e290dd 100 non-free/binary-powerpc/Release\n aa1575371ab49d0711b3536f7a63c3fd062055ab894806e40d206481a95a9b27 232848 non-free/binary-ppc64el/Packages\n c7ada53726ff089ce6cc06be5e9af1e026e5988198662488cdaa19f15fe5263d 68870 non-free/binary-ppc64el/Packages.gz\n f0a55b698155a33bdc3dcf671626defb2017c751437d7a8663e72699abe8aa11 57800 non-free/binary-ppc64el/Packages.xz\n a1e6e807d091390b4cf2ac7379fbac95f716bacfe4b007ead3c6b9bb7002f0e4 100 non-free/binary-ppc64el/Release\n 6d7042bd81aaab320b117a427975ba5c12c7212d0d1b61e3627a2b113547c89a 239490 non-free/binary-s390x/Packages\n c20692837f134e2a2e105f291340272b346f961e925cecc269d73e00f7fc0cf0 71048 non-free/binary-s390x/Packages.gz\n 4f1d6d7068e544b6903f03924191d51c3de838ce767df07fe6e32223a23aca6e 59500 non-free/binary-s390x/Packages.xz\n cdb1408e03149666b62b1e4a0bab5f1d53e241ee14aef8444f2800fe94f2971f 98 non-free/binary-s390x/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 non-free/debian-installer/binary-all/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 non-free/debian-installer/binary-all/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 non-free/debian-installer/binary-all/Packages.xz\n b9e3e391deffaaaf327b7dbb70fd9d82398fbd9d6fdc2da1da572d23ed3a2ef3 96 non-free/debian-installer/binary-all/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 non-free/debian-installer/binary-amd64/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 non-free/debian-installer/binary-amd64/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 non-free/debian-installer/binary-amd64/Packages.xz\n b5a272cc25461620253a520922e7235a81806fb0b14ebc8b6f31da7e6a8f14c8 98 non-free/debian-installer/binary-amd64/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 non-free/debian-installer/binary-arm64/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 non-free/debian-installer/binary-arm64/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 non-free/debian-installer/binary-arm64/Packages.xz\n a04f76552faf0a8b5bdbfd51e24e5b7a1f384f526d3187ce6461597a5e3039de 98 non-free/debian-installer/binary-arm64/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 non-free/debian-installer/binary-armel/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 non-free/debian-installer/binary-armel/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 non-free/debian-installer/binary-armel/Packages.xz\n b4695ebc002ff6393634be97166802305531cfa0842457256c41bf06703300a6 98 non-free/debian-installer/binary-armel/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 non-free/debian-installer/binary-armhf/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 non-free/debian-installer/binary-armhf/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 non-free/debian-installer/binary-armhf/Packages.xz\n d88c8db18e472142336dad6ea6657a7e4a7dab4cecb930e64b05f9a7f5f9a650 98 non-free/debian-installer/binary-armhf/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 non-free/debian-installer/binary-i386/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 non-free/debian-installer/binary-i386/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 non-free/debian-installer/binary-i386/Packages.xz\n 58bf42467333f5e5caa3d9236dc7a03bc0a18f523c48c46ec5dbb139c409c981 97 non-free/debian-installer/binary-i386/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 non-free/debian-installer/binary-mips/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 non-free/debian-installer/binary-mips/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 non-free/debian-installer/binary-mips/Packages.xz\n abe05cdbcf954b7c9e81cda851d7080843e159852e5aab0a442ee179d1a7fe6f 97 non-free/debian-installer/binary-mips/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 non-free/debian-installer/binary-mipsel/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 non-free/debian-installer/binary-mipsel/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 non-free/debian-installer/binary-mipsel/Packages.xz\n 9ce2423e77e5bd592f615de2b8a18e506e7b259b81d5fb8afa9af23480d5e5e6 99 non-free/debian-installer/binary-mipsel/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 non-free/debian-installer/binary-powerpc/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 non-free/debian-installer/binary-powerpc/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 non-free/debian-installer/binary-powerpc/Packages.xz\n ee4ae6d0525812f39312465cb338a16c1e8e8547304640b65256b32092e290dd 100 non-free/debian-installer/binary-powerpc/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 non-free/debian-installer/binary-ppc64el/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 non-free/debian-installer/binary-ppc64el/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 non-free/debian-installer/binary-ppc64el/Packages.xz\n a1e6e807d091390b4cf2ac7379fbac95f716bacfe4b007ead3c6b9bb7002f0e4 100 non-free/debian-installer/binary-ppc64el/Release\n e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 non-free/debian-installer/binary-s390x/Packages\n f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 non-free/debian-installer/binary-s390x/Packages.gz\n 0040f94d11d0039505328a90b2ff48968db873e9e7967307631bf40ef5679275 32 non-free/debian-installer/binary-s390x/Packages.xz\n cdb1408e03149666b62b1e4a0bab5f1d53e241ee14aef8444f2800fe94f2971f 98 non-free/debian-installer/binary-s390x/Release\n 2500c38561e80523a9f17bc042e393aeaf149a0fd9b92e5596266e87596f812c 313321 non-free/i18n/Translation-en\n faf92853dc3936b2b52ad98ec34bf956ff23dee0ac9c13de1fd233f75920b3c2 72487 non-free/i18n/Translation-en.bz2\n 3d2ef34a1226a86c584c0390119c46e59d700960a049473258ab2a8f58471c50 99 non-free/source/Release\n 07e77b6e0c7e49641eed0df8acc12b97cb4b44c4d81a5d861b0823a1f3d5c8d7 395941 non-free/source/Sources\n d8bf61a8fd79bcf5b727be34866b7601ec8be8743eb46df8675d61c39f72a9da 118656 non-free/source/Sources.gz\n 161f209ca718539022b4f6c1c8954a58442c6d63f7e7d8f58558f19608d92724 99280 non-free/source/Sources.xz'}] diff --git a/minecode/tests/testfiles/eclipse/Acceleo_projects_expected.json b/minecode/tests/testfiles/eclipse/Acceleo_projects_expected.json index 5aae1674..bbbd2774 100644 --- a/minecode/tests/testfiles/eclipse/Acceleo_projects_expected.json +++ b/minecode/tests/testfiles/eclipse/Acceleo_projects_expected.json @@ -61,7 +61,9 @@ "api_data_url":null, "package_uid":"pkg:eclipse/Acceleo?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "eclipse_html" + ], "purl":"pkg:eclipse/Acceleo" }, { @@ -126,7 +128,9 @@ "api_data_url":null, "package_uid":"pkg:eclipse/Acceleo@3.6.4?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "eclipse_html" + ], "purl":"pkg:eclipse/Acceleo@3.6.4" }, { @@ -191,7 +195,9 @@ "api_data_url":null, "package_uid":"pkg:eclipse/Acceleo@3.6.0?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "eclipse_html" + ], "purl":"pkg:eclipse/Acceleo@3.6.0" }, { @@ -256,7 +262,9 @@ "api_data_url":null, "package_uid":"pkg:eclipse/Acceleo@3.5.0?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "eclipse_html" + ], "purl":"pkg:eclipse/Acceleo@3.5.0" }, { @@ -321,7 +329,9 @@ "api_data_url":null, "package_uid":"pkg:eclipse/Acceleo@3.4.0?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "eclipse_html" + ], "purl":"pkg:eclipse/Acceleo@3.4.0" }, { @@ -386,7 +396,9 @@ "api_data_url":null, "package_uid":"pkg:eclipse/Acceleo@3.3.0?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "eclipse_html" + ], "purl":"pkg:eclipse/Acceleo@3.3.0" }, { @@ -451,7 +463,9 @@ "api_data_url":null, "package_uid":"pkg:eclipse/Acceleo@3.2.0?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "eclipse_html" + ], "purl":"pkg:eclipse/Acceleo@3.2.0" }, { @@ -516,7 +530,9 @@ "api_data_url":null, "package_uid":"pkg:eclipse/Acceleo@3.1.0?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "eclipse_html" + ], "purl":"pkg:eclipse/Acceleo@3.1.0" }, { @@ -581,7 +597,9 @@ "api_data_url":null, "package_uid":"pkg:eclipse/Acceleo@3.0.0?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "eclipse_html" + ], "purl":"pkg:eclipse/Acceleo@3.0.0" }, { @@ -646,7 +664,9 @@ "api_data_url":null, "package_uid":"pkg:eclipse/Acceleo@0.8.0?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "eclipse_html" + ], "purl":"pkg:eclipse/Acceleo@0.8.0" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/eclipse/eclipse_birt_expected.json b/minecode/tests/testfiles/eclipse/eclipse_birt_expected.json index f6846cf1..bd0a6381 100644 --- a/minecode/tests/testfiles/eclipse/eclipse_birt_expected.json +++ b/minecode/tests/testfiles/eclipse/eclipse_birt_expected.json @@ -61,7 +61,9 @@ "api_data_url":null, "package_uid":"pkg:eclipse/birt?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "eclipse_metadata" + ], "purl":"pkg:eclipse/birt" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/fdroid/index-v2-visited-expected-mapped.json b/minecode/tests/testfiles/fdroid/index-v2-visited-expected-mapped.json index fdf23818..184d9e7e 100644 --- a/minecode/tests/testfiles/fdroid/index-v2-visited-expected-mapped.json +++ b/minecode/tests/testfiles/fdroid/index-v2-visited-expected-mapped.json @@ -81,11 +81,11 @@ "Time" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//An.stop_10.apk", - "size":66218, + "download_url":"https://f-droid.org/repo/An.stop_10_src.tar.gz", + "size":558337, "sha1":null, "md5":null, - "sha256":"78ec7805f5a49b156fbd5f6af174c1cd8ae9900c9c7af2b2df021aca8cd5eae9", + "sha256":"d489eee14c4693a4aa742c490f2566d2d17170a3977cc04993d96ba4588384c8", "sha512":null, "bug_tracking_url":"https://github.com/jdmonin/anstop/issues", "code_view_url":null, @@ -123,14 +123,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-2.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/An.stop@10?download_url=https://f-droid.org/repo/An.stop_10_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/An.stop", - "repository_download_url":"https://f-droid.org/repo//An.stop_10.apk", + "repository_download_url":"https://f-droid.org/repo/An.stop_10_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/An.stop@10" @@ -217,11 +215,11 @@ "Time" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//An.stop_9.apk", - "size":49763, + "download_url":"https://f-droid.org/repo/An.stop_9_src.tar.gz", + "size":63674, "sha1":null, "md5":null, - "sha256":"79f5253bab33cf4030b01fec457fd6ffa4fd54b631ee0bc4c1549fbb69ca6680", + "sha256":"af6baad5820f1b86e8aeeec00bd3a46ad929dbae28dd3615e9ef94a555bd309f", "sha512":null, "bug_tracking_url":"https://github.com/jdmonin/anstop/issues", "code_view_url":null, @@ -259,14 +257,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-2.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/An.stop@9?download_url=https://f-droid.org/repo/An.stop_9_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/An.stop", - "repository_download_url":"https://f-droid.org/repo//An.stop_9.apk", + "repository_download_url":"https://f-droid.org/repo/An.stop_9_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/An.stop@9" @@ -353,11 +349,11 @@ "Navigation" ], "homepage_url":"https://sourceforge.net/projects/androidspeedo", - "download_url":"https://f-droid.org/repo//SpeedoMeterApp.main_1.apk", - "size":6618, + "download_url":"https://f-droid.org/repo/SpeedoMeterApp.main_1_src.tar.gz", + "size":3962, "sha1":null, "md5":null, - "sha256":"c838e3b53794fa4958b913a1e540167aa2e52c904f1d462352d86d4124982664", + "sha256":"079d03842cbc4730495a916298e7e5b6874a583c504529d194ba0785d38153e4", "sha512":null, "bug_tracking_url":null, "code_view_url":null, @@ -395,14 +391,12 @@ "other_license_detections":[], "extracted_license_statement":"PublicDomain", "notice_text":null, - "source_packages":[ - "pkg:fdroid/SpeedoMeterApp.main@1?download_url=https://f-droid.org/repo/SpeedoMeterApp.main_1_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/SpeedoMeterApp.main", - "repository_download_url":"https://f-droid.org/repo//SpeedoMeterApp.main_1.apk", + "repository_download_url":"https://f-droid.org/repo/SpeedoMeterApp.main_1_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/SpeedoMeterApp.main@1" @@ -489,11 +483,11 @@ "Multimedia" ], "homepage_url":"http://jimroal.com/slist.htm", - "download_url":"https://f-droid.org/repo//a2dp.Vol_169.apk", - "size":2748737, + "download_url":"https://f-droid.org/repo/a2dp.Vol_169_src.tar.gz", + "size":1361887, "sha1":null, "md5":null, - "sha256":"f67ef52502faf8dbcef310c122d9efe7871effdd8f9fe0ca93b9925513152d37", + "sha256":"83ce527b19a42424eef5f6f3dc837a1c8d9a5d6c3e646c67b845f3bf7cb43b4e", "sha512":null, "bug_tracking_url":"https://github.com/jroal/a2dpvolume/issues", "code_view_url":null, @@ -531,14 +525,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/a2dp.Vol@169?download_url=https://f-droid.org/repo/a2dp.Vol_169_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/a2dp.Vol", - "repository_download_url":"https://f-droid.org/repo//a2dp.Vol_169.apk", + "repository_download_url":"https://f-droid.org/repo/a2dp.Vol_169_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/a2dp.Vol@169" @@ -625,11 +617,11 @@ "Multimedia" ], "homepage_url":"http://jimroal.com/slist.htm", - "download_url":"https://f-droid.org/repo//a2dp.Vol_137.apk", - "size":826576, + "download_url":"https://f-droid.org/repo/a2dp.Vol_137_src.tar.gz", + "size":566140, "sha1":null, "md5":null, - "sha256":"fb913cccb0957c5b52caea48c3ef7a3ce1d616219b47eed65482097920fe8cc5", + "sha256":"86fb52d03061de322f07a2dd9d4ee20946f19181c85fba6672009c9d369600be", "sha512":null, "bug_tracking_url":"https://github.com/jroal/a2dpvolume/issues", "code_view_url":null, @@ -667,14 +659,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/a2dp.Vol@137?download_url=https://f-droid.org/repo/a2dp.Vol_137_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/a2dp.Vol", - "repository_download_url":"https://f-droid.org/repo//a2dp.Vol_137.apk", + "repository_download_url":"https://f-droid.org/repo/a2dp.Vol_137_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/a2dp.Vol@137" @@ -761,11 +751,11 @@ "Multimedia" ], "homepage_url":"http://jimroal.com/slist.htm", - "download_url":"https://f-droid.org/repo//a2dp.Vol_135.apk", - "size":769268, + "download_url":"https://f-droid.org/repo/a2dp.Vol_135_src.tar.gz", + "size":558871, "sha1":null, "md5":null, - "sha256":"970e93aea1888c80056c46513a16ef214b3f8df0f9105720fd3b1479440327d1", + "sha256":"4d3054e02935ec461a3ab070fb1f9101a5f7daaddbdeec4ea191a028d00f28af", "sha512":null, "bug_tracking_url":"https://github.com/jroal/a2dpvolume/issues", "code_view_url":null, @@ -803,14 +793,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/a2dp.Vol@135?download_url=https://f-droid.org/repo/a2dp.Vol_135_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/a2dp.Vol", - "repository_download_url":"https://f-droid.org/repo//a2dp.Vol_135.apk", + "repository_download_url":"https://f-droid.org/repo/a2dp.Vol_135_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/a2dp.Vol@135" @@ -899,11 +887,11 @@ "Reading" ], "homepage_url":"http://aarddict.org", - "download_url":"https://f-droid.org/repo//aarddict.android_26.apk", - "size":1904989, + "download_url":"https://f-droid.org/repo/aarddict.android_26_src.tar.gz", + "size":3818485, "sha1":null, "md5":null, - "sha256":"b72981914c91641d92508ef801fdd99aebe919590b4f981876f306e37c69af91", + "sha256":"8032cf918f0495204e8e00254fcd04ca4fb9c514323f42442100b37283ac0f59", "sha512":null, "bug_tracking_url":"https://github.com/aarddict/android/issues", "code_view_url":null, @@ -941,14 +929,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/aarddict.android@26?download_url=https://f-droid.org/repo/aarddict.android_26_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/aarddict.android", - "repository_download_url":"https://f-droid.org/repo//aarddict.android_26.apk", + "repository_download_url":"https://f-droid.org/repo/aarddict.android_26_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/aarddict.android@26" @@ -1037,11 +1023,11 @@ "Reading" ], "homepage_url":"http://aarddict.org", - "download_url":"https://f-droid.org/repo//aarddict.android_25.apk", - "size":1904813, + "download_url":"https://f-droid.org/repo/aarddict.android_25_src.tar.gz", + "size":3818492, "sha1":null, "md5":null, - "sha256":"bd0737ffd7d25bf23f6bd31f3e3b2aa195c5fe523631b44b2e9d975c69898231", + "sha256":"f7f158ec6cf3506a0012ec1eac18a6fb2907a63fcafd9edbea4142ffcc189b0e", "sha512":null, "bug_tracking_url":"https://github.com/aarddict/android/issues", "code_view_url":null, @@ -1079,14 +1065,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/aarddict.android@25?download_url=https://f-droid.org/repo/aarddict.android_25_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/aarddict.android", - "repository_download_url":"https://f-droid.org/repo//aarddict.android_25.apk", + "repository_download_url":"https://f-droid.org/repo/aarddict.android_25_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/aarddict.android@25" @@ -1175,11 +1159,11 @@ "Reading" ], "homepage_url":"http://aarddict.org", - "download_url":"https://f-droid.org/repo//aarddict.android_24.apk", - "size":1904614, + "download_url":"https://f-droid.org/repo/aarddict.android_24_src.tar.gz", + "size":3818377, "sha1":null, "md5":null, - "sha256":"a0320f5360b05c6d05b7ba4ffccf6e9b563a2369c68e4da0f5f407cd9ff6479e", + "sha256":"84b4e90d306c72f78555a7e127623e550493987357db0709f644be29b8bceea3", "sha512":null, "bug_tracking_url":"https://github.com/aarddict/android/issues", "code_view_url":null, @@ -1217,14 +1201,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/aarddict.android@24?download_url=https://f-droid.org/repo/aarddict.android_24_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/aarddict.android", - "repository_download_url":"https://f-droid.org/repo//aarddict.android_24.apk", + "repository_download_url":"https://f-droid.org/repo/aarddict.android_24_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/aarddict.android@24" @@ -1327,11 +1309,11 @@ "Multimedia" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//ac.robinson.mediaphone_51.apk", - "size":3302945, + "download_url":"https://f-droid.org/repo/ac.robinson.mediaphone_51_src.tar.gz", + "size":3140102, "sha1":null, "md5":null, - "sha256":"1d6dae4beae98f1004519dc2338e98592585ce0ca0aabf5c38f6f214e5253361", + "sha256":"f718641268c7863e0094f055123ca14b0e16c6501914c71ce985eadcd1965bb7", "sha512":null, "bug_tracking_url":"https://github.com/communitymedia/mediaphone/issues", "code_view_url":null, @@ -1369,14 +1351,12 @@ "other_license_detections":[], "extracted_license_statement":"LGPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/ac.robinson.mediaphone@51?download_url=https://f-droid.org/repo/ac.robinson.mediaphone_51_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/ac.robinson.mediaphone", - "repository_download_url":"https://f-droid.org/repo//ac.robinson.mediaphone_51.apk", + "repository_download_url":"https://f-droid.org/repo/ac.robinson.mediaphone_51_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/ac.robinson.mediaphone@51" @@ -1479,11 +1459,11 @@ "Multimedia" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//ac.robinson.mediaphone_50.apk", - "size":3274124, + "download_url":"https://f-droid.org/repo/ac.robinson.mediaphone_50_src.tar.gz", + "size":3131516, "sha1":null, "md5":null, - "sha256":"fd1b70d9a1e24a8471a1bf947dab5bd5735e8cae6c10018b7868c88aa7198f7d", + "sha256":"33f4b8590c6d488f709fcc1a9d89a85ae8cfe94e7ac6437d7e4b2fc67225c908", "sha512":null, "bug_tracking_url":"https://github.com/communitymedia/mediaphone/issues", "code_view_url":null, @@ -1521,14 +1501,12 @@ "other_license_detections":[], "extracted_license_statement":"LGPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/ac.robinson.mediaphone@50?download_url=https://f-droid.org/repo/ac.robinson.mediaphone_50_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/ac.robinson.mediaphone", - "repository_download_url":"https://f-droid.org/repo//ac.robinson.mediaphone_50.apk", + "repository_download_url":"https://f-droid.org/repo/ac.robinson.mediaphone_50_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/ac.robinson.mediaphone@50" @@ -1631,11 +1609,11 @@ "Multimedia" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//ac.robinson.mediaphone_48.apk", - "size":3086625, + "download_url":"https://f-droid.org/repo/ac.robinson.mediaphone_48_src.tar.gz", + "size":3128518, "sha1":null, "md5":null, - "sha256":"6198e1e1ff295743980112b190e762d1c642ef1344b40a21803a564fdb6661d6", + "sha256":"185bf70ff585dc81db325fff92c68e126c34b9ae49e85de3e89091f5fb5cf055", "sha512":null, "bug_tracking_url":"https://github.com/communitymedia/mediaphone/issues", "code_view_url":null, @@ -1673,14 +1651,12 @@ "other_license_detections":[], "extracted_license_statement":"LGPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/ac.robinson.mediaphone@48?download_url=https://f-droid.org/repo/ac.robinson.mediaphone_48_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/ac.robinson.mediaphone", - "repository_download_url":"https://f-droid.org/repo//ac.robinson.mediaphone_48.apk", + "repository_download_url":"https://f-droid.org/repo/ac.robinson.mediaphone_48_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/ac.robinson.mediaphone@48" @@ -1783,11 +1759,11 @@ "Internet" ], "homepage_url":"http://acrdevelopment.org", - "download_url":"https://f-droid.org/repo//acr.browser.lightning_101.apk", - "size":3424126, + "download_url":"https://f-droid.org/repo/acr.browser.lightning_101_src.tar.gz", + "size":1020192, "sha1":null, "md5":null, - "sha256":"820f4f9977a20b060b4091db2b35cff8cd360e060f94aa742255c845747a2d7f", + "sha256":"c1ac724cab6f12be29c83ead8ab3df04804383f220e42e374b80f9c4a44b3f60", "sha512":null, "bug_tracking_url":"https://github.com/anthonycr/Lightning-Browser/issues", "code_view_url":null, @@ -1825,14 +1801,12 @@ "other_license_detections":[], "extracted_license_statement":"MPL-2.0", "notice_text":null, - "source_packages":[ - "pkg:fdroid/acr.browser.lightning@101?download_url=https://f-droid.org/repo/acr.browser.lightning_101_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/acr.browser.lightning", - "repository_download_url":"https://f-droid.org/repo//acr.browser.lightning_101.apk", + "repository_download_url":"https://f-droid.org/repo/acr.browser.lightning_101_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/acr.browser.lightning@101" @@ -1935,11 +1909,11 @@ "Internet" ], "homepage_url":"http://acrdevelopment.org", - "download_url":"https://f-droid.org/repo//acr.browser.lightning_100.apk", - "size":3050894, + "download_url":"https://f-droid.org/repo/acr.browser.lightning_100_src.tar.gz", + "size":1811930, "sha1":null, "md5":null, - "sha256":"db8d5bfc217eda28485f69ece19cb12e4c2f4502a7b925b18db79980b31b72af", + "sha256":"8995f5e677b3d2585e43624df5fd357bfa40da9c703b61daf57fa3dbd9d7123e", "sha512":null, "bug_tracking_url":"https://github.com/anthonycr/Lightning-Browser/issues", "code_view_url":null, @@ -1977,14 +1951,12 @@ "other_license_detections":[], "extracted_license_statement":"MPL-2.0", "notice_text":null, - "source_packages":[ - "pkg:fdroid/acr.browser.lightning@100?download_url=https://f-droid.org/repo/acr.browser.lightning_100_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/acr.browser.lightning", - "repository_download_url":"https://f-droid.org/repo//acr.browser.lightning_100.apk", + "repository_download_url":"https://f-droid.org/repo/acr.browser.lightning_100_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/acr.browser.lightning@100" @@ -2087,11 +2059,11 @@ "Internet" ], "homepage_url":"http://acrdevelopment.org", - "download_url":"https://f-droid.org/repo//acr.browser.lightning_96.apk", - "size":2687399, + "download_url":"https://f-droid.org/repo/acr.browser.lightning_96_src.tar.gz", + "size":914859, "sha1":null, "md5":null, - "sha256":"a225314a83ea7518e0f8105d602171985fbc884d606dbd9669a63a2928856147", + "sha256":"e9cc630379a8478dfa6716bcd7c5f75fadf03519b78d6316f909d1c7055b15e2", "sha512":null, "bug_tracking_url":"https://github.com/anthonycr/Lightning-Browser/issues", "code_view_url":null, @@ -2129,14 +2101,12 @@ "other_license_detections":[], "extracted_license_statement":"MPL-2.0", "notice_text":null, - "source_packages":[ - "pkg:fdroid/acr.browser.lightning@96?download_url=https://f-droid.org/repo/acr.browser.lightning_96_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/acr.browser.lightning", - "repository_download_url":"https://f-droid.org/repo//acr.browser.lightning_96.apk", + "repository_download_url":"https://f-droid.org/repo/acr.browser.lightning_96_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/acr.browser.lightning@96" @@ -2239,11 +2209,11 @@ "Money" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//ademar.bitac_6.apk", - "size":3077855, + "download_url":"https://f-droid.org/repo/ademar.bitac_6_src.tar.gz", + "size":4996182, "sha1":null, "md5":null, - "sha256":"660a7730cfa9f11b488395fd657b1f054881e6b0736b6d7f96a61229c43dc77a", + "sha256":"96606dd18416352a408585cfb0946e0b49bbc701366e5365f6d3b5d9084b81d6", "sha512":null, "bug_tracking_url":"https://gitlab.com/ademar111190/BitAC/-/issues", "code_view_url":null, @@ -2281,14 +2251,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/ademar.bitac@6?download_url=https://f-droid.org/repo/ademar.bitac_6_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/ademar.bitac", - "repository_download_url":"https://f-droid.org/repo//ademar.bitac_6.apk", + "repository_download_url":"https://f-droid.org/repo/ademar.bitac_6_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/ademar.bitac@6" @@ -2391,11 +2359,11 @@ "Money" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//ademar.bitac_5.apk", - "size":2919369, + "download_url":"https://f-droid.org/repo/ademar.bitac_5_src.tar.gz", + "size":4995815, "sha1":null, "md5":null, - "sha256":"efd2052b37ea6cb44836f400926b79d974cf3528e6e6e2c8a72569c63cfdbdd6", + "sha256":"fe0a4dbf0fcc76df2f85e38758abcc1808fc7fa355ffdf8237c41452670f647e", "sha512":null, "bug_tracking_url":"https://gitlab.com/ademar111190/BitAC/-/issues", "code_view_url":null, @@ -2433,14 +2401,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/ademar.bitac@5?download_url=https://f-droid.org/repo/ademar.bitac_5_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/ademar.bitac", - "repository_download_url":"https://f-droid.org/repo//ademar.bitac_5.apk", + "repository_download_url":"https://f-droid.org/repo/ademar.bitac_5_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/ademar.bitac@5" @@ -2543,11 +2509,11 @@ "Theming" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//ademar.textlauncher_8.apk", - "size":25418, + "download_url":"https://f-droid.org/repo/ademar.textlauncher_8_src.tar.gz", + "size":981806, "sha1":null, "md5":null, - "sha256":"b2a7a09d0e0dafa341912eb4563fe0a8fdc02536e438862d8a83b8ba55c282ec", + "sha256":"d81d49a13ee829998b63114457fc0a086273e634b196bb9dc1dd26426ba0c8a8", "sha512":null, "bug_tracking_url":"https://gitlab.com/ademar111190/textlauncher/-/issues", "code_view_url":null, @@ -2585,14 +2551,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/ademar.textlauncher@8?download_url=https://f-droid.org/repo/ademar.textlauncher_8_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/ademar.textlauncher", - "repository_download_url":"https://f-droid.org/repo//ademar.textlauncher_8.apk", + "repository_download_url":"https://f-droid.org/repo/ademar.textlauncher_8_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/ademar.textlauncher@8" @@ -2695,11 +2659,11 @@ "Theming" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//ademar.textlauncher_7.apk", - "size":14591, + "download_url":"https://f-droid.org/repo/ademar.textlauncher_7_src.tar.gz", + "size":981742, "sha1":null, "md5":null, - "sha256":"cfb8c97c5f524d88d854e604d60a83b199b27b124743bbe8e415d027ea3a32be", + "sha256":"e0f03ad0f1d1e547b5cec5fe665fd796e0e48db865d595f7d802393b875b74d5", "sha512":null, "bug_tracking_url":"https://gitlab.com/ademar111190/textlauncher/-/issues", "code_view_url":null, @@ -2737,14 +2701,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/ademar.textlauncher@7?download_url=https://f-droid.org/repo/ademar.textlauncher_7_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/ademar.textlauncher", - "repository_download_url":"https://f-droid.org/repo//ademar.textlauncher_7.apk", + "repository_download_url":"https://f-droid.org/repo/ademar.textlauncher_7_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/ademar.textlauncher@7" @@ -2847,11 +2809,11 @@ "Multimedia" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//agersant.polaris_415293114.apk", - "size":4952438, + "download_url":"https://f-droid.org/repo/agersant.polaris_415293114_src.tar.gz", + "size":25450214, "sha1":null, "md5":null, - "sha256":"0b88ef7adfcc601a45db988b9cfc5296cdc4c7c095b07edc43aada63c4e1211d", + "sha256":"4284e29988d213bfcfaedf85b37fe9df15d8af30d6f262e935251df83b1b314a", "sha512":null, "bug_tracking_url":"https://github.com/agersant/polaris-android/issues", "code_view_url":null, @@ -2889,14 +2851,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/agersant.polaris@415293114?download_url=https://f-droid.org/repo/agersant.polaris_415293114_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/agersant.polaris", - "repository_download_url":"https://f-droid.org/repo//agersant.polaris_415293114.apk", + "repository_download_url":"https://f-droid.org/repo/agersant.polaris_415293114_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/agersant.polaris@415293114" @@ -2999,11 +2959,11 @@ "Multimedia" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//agersant.polaris_415293112.apk", - "size":4831957, + "download_url":"https://f-droid.org/repo/agersant.polaris_415293112_src.tar.gz", + "size":25450029, "sha1":null, "md5":null, - "sha256":"b82a59f1cc21d014c6947d174abb7f533d780ffdfc3794cc193e8268ba93efe3", + "sha256":"8e67cf488d40d88dc4d0f95a8d6e712c1e63940b21a21a6d6ca1f65f2e5dfc8b", "sha512":null, "bug_tracking_url":"https://github.com/agersant/polaris-android/issues", "code_view_url":null, @@ -3041,14 +3001,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/agersant.polaris@415293112?download_url=https://f-droid.org/repo/agersant.polaris_415293112_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/agersant.polaris", - "repository_download_url":"https://f-droid.org/repo//agersant.polaris_415293112.apk", + "repository_download_url":"https://f-droid.org/repo/agersant.polaris_415293112_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/agersant.polaris@415293112" @@ -3151,11 +3109,11 @@ "Multimedia" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//agersant.polaris_48.apk", - "size":3831332, + "download_url":"https://f-droid.org/repo/agersant.polaris_48_src.tar.gz", + "size":25386695, "sha1":null, "md5":null, - "sha256":"134d18e2d9dbd10a974e2806e27149951c9e4ec1c53e1ba2179ec859ae6b928a", + "sha256":"7b85afd1d1a30ba36b2ad0dce1151d246efaaab708cca580280b50776527f107", "sha512":null, "bug_tracking_url":"https://github.com/agersant/polaris-android/issues", "code_view_url":null, @@ -3193,14 +3151,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/agersant.polaris@48?download_url=https://f-droid.org/repo/agersant.polaris_48_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/agersant.polaris", - "repository_download_url":"https://f-droid.org/repo//agersant.polaris_48.apk", + "repository_download_url":"https://f-droid.org/repo/agersant.polaris_48_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/agersant.polaris@48" @@ -3287,11 +3243,11 @@ "Multimedia" ], "homepage_url":"https://codeberg.org/agrigolo/chubby-click", - "download_url":"https://f-droid.org/repo//agrigolo.chubbyclick_22.apk", - "size":2274962, + "download_url":"https://f-droid.org/repo/agrigolo.chubbyclick_22_src.tar.gz", + "size":1684337, "sha1":null, "md5":null, - "sha256":"cb357c3f12258e40955d1d16ad45a0996b482e07c6bce13587aa6f722c164030", + "sha256":"b90b73ade10a3478842e279a6d23456b8f7b3affae886f1c451d9d90f0d9c412", "sha512":null, "bug_tracking_url":"https://codeberg.org/agrigolo/chubby-click/issues", "code_view_url":null, @@ -3329,14 +3285,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-or-later", "notice_text":null, - "source_packages":[ - "pkg:fdroid/agrigolo.chubbyclick@22?download_url=https://f-droid.org/repo/agrigolo.chubbyclick_22_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/agrigolo.chubbyclick", - "repository_download_url":"https://f-droid.org/repo//agrigolo.chubbyclick_22.apk", + "repository_download_url":"https://f-droid.org/repo/agrigolo.chubbyclick_22_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/agrigolo.chubbyclick@22" @@ -3423,11 +3377,11 @@ "Multimedia" ], "homepage_url":"https://codeberg.org/agrigolo/chubby-click", - "download_url":"https://f-droid.org/repo//agrigolo.chubbyclick_21.apk", - "size":2270785, + "download_url":"https://f-droid.org/repo/agrigolo.chubbyclick_21_src.tar.gz", + "size":1681634, "sha1":null, "md5":null, - "sha256":"ddeb3fadfac02ccf53c2cf6ac4fc8ecc6cf58dd2411a888c7a7d03a2035cf78e", + "sha256":"bf6c2be1fcb8308c6a0f6e870c3466fff65cc970758ead7a1274985d626dc7ae", "sha512":null, "bug_tracking_url":"https://codeberg.org/agrigolo/chubby-click/issues", "code_view_url":null, @@ -3465,14 +3419,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-or-later", "notice_text":null, - "source_packages":[ - "pkg:fdroid/agrigolo.chubbyclick@21?download_url=https://f-droid.org/repo/agrigolo.chubbyclick_21_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/agrigolo.chubbyclick", - "repository_download_url":"https://f-droid.org/repo//agrigolo.chubbyclick_21.apk", + "repository_download_url":"https://f-droid.org/repo/agrigolo.chubbyclick_21_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/agrigolo.chubbyclick@21" @@ -3559,11 +3511,11 @@ "Multimedia" ], "homepage_url":"https://codeberg.org/agrigolo/chubby-click", - "download_url":"https://f-droid.org/repo//agrigolo.chubbyclick_20.apk", - "size":2270785, + "download_url":"https://f-droid.org/repo/agrigolo.chubbyclick_20_src.tar.gz", + "size":1681501, "sha1":null, "md5":null, - "sha256":"e2bd8970b208b36d9b7b37f44f29d664531d9fe36a4a0e9fa697a6d6589c4166", + "sha256":"37dc91804c33ea5ecfb33e37f3fc68fb8d377d550ab522b5c1726644d501b4a0", "sha512":null, "bug_tracking_url":"https://codeberg.org/agrigolo/chubby-click/issues", "code_view_url":null, @@ -3601,14 +3553,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-or-later", "notice_text":null, - "source_packages":[ - "pkg:fdroid/agrigolo.chubbyclick@20?download_url=https://f-droid.org/repo/agrigolo.chubbyclick_20_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/agrigolo.chubbyclick", - "repository_download_url":"https://f-droid.org/repo//agrigolo.chubbyclick_20.apk", + "repository_download_url":"https://f-droid.org/repo/agrigolo.chubbyclick_20_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/agrigolo.chubbyclick@20" @@ -3695,11 +3645,11 @@ "Internet" ], "homepage_url":"https://susi.ai/", - "download_url":"https://f-droid.org/repo//ai.susi_16.apk", - "size":14344225, + "download_url":"https://f-droid.org/repo/ai.susi_16_src.tar.gz", + "size":3964656, "sha1":null, "md5":null, - "sha256":"6f851010809953054e7bb8fdd7e1f86a80e00cef6d91450518a408c4b0b59195", + "sha256":"22cdb59a9d33eb02e0f44aa5206dcc3194a21b020cd2b3b063e6a718d6878cae", "sha512":null, "bug_tracking_url":"https://github.com/fossasia/susi_android/issues", "code_view_url":null, @@ -3737,14 +3687,12 @@ "other_license_detections":[], "extracted_license_statement":"Apache-2.0", "notice_text":null, - "source_packages":[ - "pkg:fdroid/ai.susi@16?download_url=https://f-droid.org/repo/ai.susi_16_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/ai.susi", - "repository_download_url":"https://f-droid.org/repo//ai.susi_16.apk", + "repository_download_url":"https://f-droid.org/repo/ai.susi_16_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/ai.susi@16" @@ -3831,11 +3779,11 @@ "Internet" ], "homepage_url":"https://susi.ai/", - "download_url":"https://f-droid.org/repo//ai.susi_15.apk", - "size":11555015, + "download_url":"https://f-droid.org/repo/ai.susi_15_src.tar.gz", + "size":3868859, "sha1":null, "md5":null, - "sha256":"4f25e1679ced9ea42ceb32677bb0d0310fdf818e6cda9a9f7e8b81e73e73c8e9", + "sha256":"c74134a1e1986579d92f381cbd3109c3b77fcd3c52c59e7083069e49e604bbd0", "sha512":null, "bug_tracking_url":"https://github.com/fossasia/susi_android/issues", "code_view_url":null, @@ -3873,14 +3821,12 @@ "other_license_detections":[], "extracted_license_statement":"Apache-2.0", "notice_text":null, - "source_packages":[ - "pkg:fdroid/ai.susi@15?download_url=https://f-droid.org/repo/ai.susi_15_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/ai.susi", - "repository_download_url":"https://f-droid.org/repo//ai.susi_15.apk", + "repository_download_url":"https://f-droid.org/repo/ai.susi_15_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/ai.susi@15" @@ -3967,11 +3913,11 @@ "Internet" ], "homepage_url":"https://susi.ai/", - "download_url":"https://f-droid.org/repo//ai.susi_14.apk", - "size":10331217, + "download_url":"https://f-droid.org/repo/ai.susi_14_src.tar.gz", + "size":3863221, "sha1":null, "md5":null, - "sha256":"d0c0443f153b75fcb155aa062d8b8af6109d779c0b8d02946a00c074b5f9c305", + "sha256":"ef878413b874564939fb0c37e1971a780488df402c46505a72886d2e7b18b0c4", "sha512":null, "bug_tracking_url":"https://github.com/fossasia/susi_android/issues", "code_view_url":null, @@ -4009,14 +3955,12 @@ "other_license_detections":[], "extracted_license_statement":"Apache-2.0", "notice_text":null, - "source_packages":[ - "pkg:fdroid/ai.susi@14?download_url=https://f-droid.org/repo/ai.susi_14_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/ai.susi", - "repository_download_url":"https://f-droid.org/repo//ai.susi_14.apk", + "repository_download_url":"https://f-droid.org/repo/ai.susi_14_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/ai.susi@14" @@ -4105,11 +4049,11 @@ "Time" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//akk.astro.droid.moonphase_2.apk", - "size":185892, + "download_url":"https://f-droid.org/repo/akk.astro.droid.moonphase_2_src.tar.gz", + "size":183772, "sha1":null, "md5":null, - "sha256":"20eea522f8d41dbbe9f8fa7204f076918dd9420c562468e5fd72059e6e66615e", + "sha256":"c26b0ed5cbd07d9e839e7f31f7757479e142e0194264c3afb0622b14c3e8f571", "sha512":null, "bug_tracking_url":"https://github.com/andviane/moon/issues", "code_view_url":null, @@ -4147,14 +4091,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/akk.astro.droid.moonphase@2?download_url=https://f-droid.org/repo/akk.astro.droid.moonphase_2_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/akk.astro.droid.moonphase", - "repository_download_url":"https://f-droid.org/repo//akk.astro.droid.moonphase_2.apk", + "repository_download_url":"https://f-droid.org/repo/akk.astro.droid.moonphase_2_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/akk.astro.droid.moonphase@2" @@ -4243,11 +4185,11 @@ "Time" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//akk.astro.droid.moonphase_1.apk", - "size":190393, + "download_url":"https://f-droid.org/repo/akk.astro.droid.moonphase_1_src.tar.gz", + "size":183725, "sha1":null, "md5":null, - "sha256":"7e053f07f595f78863ddfc73ea55e5b19f1f504c2b8f06f61fc772521488e03f", + "sha256":"084f4b57a30ad16b6479c54b4e5d778e38aa9f26712e998718243c0156a756db", "sha512":null, "bug_tracking_url":"https://github.com/andviane/moon/issues", "code_view_url":null, @@ -4285,14 +4227,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/akk.astro.droid.moonphase@1?download_url=https://f-droid.org/repo/akk.astro.droid.moonphase_1_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/akk.astro.droid.moonphase", - "repository_download_url":"https://f-droid.org/repo//akk.astro.droid.moonphase_1.apk", + "repository_download_url":"https://f-droid.org/repo/akk.astro.droid.moonphase_1_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/akk.astro.droid.moonphase@1" @@ -4379,11 +4319,11 @@ "System" ], "homepage_url":"http://ed.am/dev/android/export-contacts", - "download_url":"https://f-droid.org/repo//am.ed.exportcontacts_10003.apk", - "size":58051, + "download_url":"https://f-droid.org/repo/am.ed.exportcontacts_10003_src.tar.gz", + "size":51527, "sha1":null, "md5":null, - "sha256":"dcbed1c712db0b614d53e9517a287541349a33ac00d1a391806f839643cce5e9", + "sha256":"0a719754dd28701e7782bd63f05e2ddfeb195bcba462efa31e8c28eb79f1b39f", "sha512":null, "bug_tracking_url":"http://dev.ed.am/export-contacts", "code_view_url":null, @@ -4421,14 +4361,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/am.ed.exportcontacts@10003?download_url=https://f-droid.org/repo/am.ed.exportcontacts_10003_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/am.ed.exportcontacts", - "repository_download_url":"https://f-droid.org/repo//am.ed.exportcontacts_10003.apk", + "repository_download_url":"https://f-droid.org/repo/am.ed.exportcontacts_10003_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/am.ed.exportcontacts@10003" @@ -4515,11 +4453,11 @@ "System" ], "homepage_url":"http://ed.am/dev/android/import-contacts", - "download_url":"https://f-droid.org/repo//am.ed.importcontacts_10304.apk", - "size":80326, + "download_url":"https://f-droid.org/repo/am.ed.importcontacts_10304_src.tar.gz", + "size":68741, "sha1":null, "md5":null, - "sha256":"8680fbf57af95a5ab69d91502b6337549e770d23db318a9ceaed957c88a92845", + "sha256":"921396b7c6858188406578358db80472c9e0053335662b96999e2fda259eba09", "sha512":null, "bug_tracking_url":"http://dev.ed.am/import-contacts", "code_view_url":null, @@ -4557,14 +4495,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/am.ed.importcontacts@10304?download_url=https://f-droid.org/repo/am.ed.importcontacts_10304_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/am.ed.importcontacts", - "repository_download_url":"https://f-droid.org/repo//am.ed.importcontacts_10304.apk", + "repository_download_url":"https://f-droid.org/repo/am.ed.importcontacts_10304_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/am.ed.importcontacts@10304" @@ -4651,11 +4587,11 @@ "System" ], "homepage_url":"http://ed.am/dev/android/import-contacts", - "download_url":"https://f-droid.org/repo//am.ed.importcontacts_10303.apk", - "size":85429, + "download_url":"https://f-droid.org/repo/am.ed.importcontacts_10303_src.tar.gz", + "size":76762, "sha1":null, "md5":null, - "sha256":"f12e21058329841874e08db08eae230dd03a1437466a8f31c9485658bee53e63", + "sha256":"605a93496bb1ecbdb30b6af075b9fbd3ee23e61a971360f28dcddda2e567ca24", "sha512":null, "bug_tracking_url":"http://dev.ed.am/import-contacts", "code_view_url":null, @@ -4693,14 +4629,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/am.ed.importcontacts@10303?download_url=https://f-droid.org/repo/am.ed.importcontacts_10303_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/am.ed.importcontacts", - "repository_download_url":"https://f-droid.org/repo//am.ed.importcontacts_10303.apk", + "repository_download_url":"https://f-droid.org/repo/am.ed.importcontacts_10303_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/am.ed.importcontacts@10303" @@ -4787,11 +4721,11 @@ "System" ], "homepage_url":"http://ed.am/dev/android/import-contacts", - "download_url":"https://f-droid.org/repo//am.ed.importcontacts_10301.apk", - "size":84309, + "download_url":"https://f-droid.org/repo/am.ed.importcontacts_10301_src.tar.gz", + "size":75346, "sha1":null, "md5":null, - "sha256":"c150a1a6e420e1e1ea535c9d26666d76f2d30bc1038a0cb2e871b359327aebcb", + "sha256":"22a6b3892c8bc4ce5b087639589f74418b4eaf5984a295a15e0d3b0cc577fd21", "sha512":null, "bug_tracking_url":"http://dev.ed.am/import-contacts", "code_view_url":null, @@ -4829,14 +4763,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/am.ed.importcontacts@10301?download_url=https://f-droid.org/repo/am.ed.importcontacts_10301_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/am.ed.importcontacts", - "repository_download_url":"https://f-droid.org/repo//am.ed.importcontacts_10301.apk", + "repository_download_url":"https://f-droid.org/repo/am.ed.importcontacts_10301_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/am.ed.importcontacts@10301" @@ -4923,11 +4855,11 @@ "Internet" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//am.zoom.mbrowser_12.apk", - "size":255897, + "download_url":"https://f-droid.org/repo/am.zoom.mbrowser_12_src.tar.gz", + "size":615615, "sha1":null, "md5":null, - "sha256":"8e13ebb31680b56c802428b09cb7ac630505dd13989ff5de81067d90754d58d2", + "sha256":"5a52dc5903a482738986a2e6e17e2a9f3ef3841d3e941f743972a3bde37ba63a", "sha512":null, "bug_tracking_url":"https://github.com/chelovek84/mBrowser/issues", "code_view_url":null, @@ -4965,14 +4897,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/am.zoom.mbrowser@12?download_url=https://f-droid.org/repo/am.zoom.mbrowser_12_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/am.zoom.mbrowser", - "repository_download_url":"https://f-droid.org/repo//am.zoom.mbrowser_12.apk", + "repository_download_url":"https://f-droid.org/repo/am.zoom.mbrowser_12_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/am.zoom.mbrowser@12" @@ -5059,11 +4989,11 @@ "Internet" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//am.zoom.mbrowser_11.apk", - "size":255472, + "download_url":"https://f-droid.org/repo/am.zoom.mbrowser_11_src.tar.gz", + "size":611638, "sha1":null, "md5":null, - "sha256":"30325a66e6d15229c8c29ad5b164c0e130841c67588a03870632cec1de1390ab", + "sha256":"5eba16c41e9af0c4a38fe43421be2dd7e855c7b1e302d4df84f136c8c4d33f8a", "sha512":null, "bug_tracking_url":"https://github.com/chelovek84/mBrowser/issues", "code_view_url":null, @@ -5101,14 +5031,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/am.zoom.mbrowser@11?download_url=https://f-droid.org/repo/am.zoom.mbrowser_11_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/am.zoom.mbrowser", - "repository_download_url":"https://f-droid.org/repo//am.zoom.mbrowser_11.apk", + "repository_download_url":"https://f-droid.org/repo/am.zoom.mbrowser_11_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/am.zoom.mbrowser@11" @@ -5195,11 +5123,11 @@ "Internet" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//am.zoom.mbrowser_10.apk", - "size":254344, + "download_url":"https://f-droid.org/repo/am.zoom.mbrowser_10_src.tar.gz", + "size":611065, "sha1":null, "md5":null, - "sha256":"b17d82c7f67d6cc1f1c6f495355fb1ffd8f96eca23fc9d4a0951d208a3171855", + "sha256":"69b49b63e495d03c430f5e917e01b87dcd593607382adc279be73beb478c9974", "sha512":null, "bug_tracking_url":"https://github.com/chelovek84/mBrowser/issues", "code_view_url":null, @@ -5237,14 +5165,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/am.zoom.mbrowser@10?download_url=https://f-droid.org/repo/am.zoom.mbrowser_10_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/am.zoom.mbrowser", - "repository_download_url":"https://f-droid.org/repo//am.zoom.mbrowser_10.apk", + "repository_download_url":"https://f-droid.org/repo/am.zoom.mbrowser_10_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/am.zoom.mbrowser@10" @@ -5331,11 +5257,11 @@ "System" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//am.zoom.mlauncher_7.apk", - "size":251861, + "download_url":"https://f-droid.org/repo/am.zoom.mlauncher_7_src.tar.gz", + "size":729123, "sha1":null, "md5":null, - "sha256":"d135c514f0d59cc8eed8ddd72ace781610cf01222dc2985caeecfa002a840cae", + "sha256":"2493ef2a2bb1216990d494012abdb62be872b1bf1460a2ecc55e1ba838202638", "sha512":null, "bug_tracking_url":"https://github.com/chelovek84/mLauncher/issues", "code_view_url":null, @@ -5373,14 +5299,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/am.zoom.mlauncher@7?download_url=https://f-droid.org/repo/am.zoom.mlauncher_7_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/am.zoom.mlauncher", - "repository_download_url":"https://f-droid.org/repo//am.zoom.mlauncher_7.apk", + "repository_download_url":"https://f-droid.org/repo/am.zoom.mlauncher_7_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/am.zoom.mlauncher@7" @@ -5467,11 +5391,11 @@ "System" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//am.zoom.mlauncher_6.apk", - "size":251855, + "download_url":"https://f-droid.org/repo/am.zoom.mlauncher_6_src.tar.gz", + "size":729127, "sha1":null, "md5":null, - "sha256":"f37d48959ab15f75a140f55a2cd0d29dab27be3fb6cced615c03c50f12f62d36", + "sha256":"1a4d77d9a38fb16a7a01b18efafddaaf8f5b23d0bc09c0a26db336521d4e5ff1", "sha512":null, "bug_tracking_url":"https://github.com/chelovek84/mLauncher/issues", "code_view_url":null, @@ -5509,14 +5433,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/am.zoom.mlauncher@6?download_url=https://f-droid.org/repo/am.zoom.mlauncher_6_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/am.zoom.mlauncher", - "repository_download_url":"https://f-droid.org/repo//am.zoom.mlauncher_6.apk", + "repository_download_url":"https://f-droid.org/repo/am.zoom.mlauncher_6_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/am.zoom.mlauncher@6" @@ -5603,11 +5525,11 @@ "Multimedia" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//amirz.dngprocessor_5.apk", - "size":249134, + "download_url":"https://f-droid.org/repo/amirz.dngprocessor_5_src.tar.gz", + "size":201270, "sha1":null, "md5":null, - "sha256":"8a8e803d239717837e709c84de06bd2d10306836d6443eb1ec98f588786fc631", + "sha256":"680ea228d34737d4ff1d98d81b7da439f22c8d987c7f0bfdecdfcbd22136e7c7", "sha512":null, "bug_tracking_url":"https://github.com/amirzaidi/DNGProcessor/issues", "code_view_url":null, @@ -5645,14 +5567,12 @@ "other_license_detections":[], "extracted_license_statement":"LGPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/amirz.dngprocessor@5?download_url=https://f-droid.org/repo/amirz.dngprocessor_5_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/amirz.dngprocessor", - "repository_download_url":"https://f-droid.org/repo//amirz.dngprocessor_5.apk", + "repository_download_url":"https://f-droid.org/repo/amirz.dngprocessor_5_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/amirz.dngprocessor@5" @@ -5757,11 +5677,11 @@ "Theming" ], "homepage_url":"http://www.reddit.com/u/AmirZ", - "download_url":"https://f-droid.org/repo//amirz.rootless.nexuslauncher_30911.apk", - "size":1693305, + "download_url":"https://f-droid.org/repo/amirz.rootless.nexuslauncher_30911_src.tar.gz", + "size":1225005, "sha1":null, "md5":null, - "sha256":"7fa44d560dc4577374d45176220de2c0b00a71e09d6d148cdea4e0a52d38404a", + "sha256":"5e6413aa4a619c842bd430a5002abb44cc5be0ade9bab105516c634666eed15d", "sha512":null, "bug_tracking_url":"https://github.com/amirzaidi/Launcher3/issues", "code_view_url":null, @@ -5799,14 +5719,12 @@ "other_license_detections":[], "extracted_license_statement":"Apache-2.0", "notice_text":null, - "source_packages":[ - "pkg:fdroid/amirz.rootless.nexuslauncher@30911?download_url=https://f-droid.org/repo/amirz.rootless.nexuslauncher_30911_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/amirz.rootless.nexuslauncher", - "repository_download_url":"https://f-droid.org/repo//amirz.rootless.nexuslauncher_30911.apk", + "repository_download_url":"https://f-droid.org/repo/amirz.rootless.nexuslauncher_30911_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/amirz.rootless.nexuslauncher@30911" @@ -5909,11 +5827,11 @@ "Internet" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//androdns.android.leetdreams.ch.androdns_16.apk", - "size":1971112, + "download_url":"https://f-droid.org/repo/androdns.android.leetdreams.ch.androdns_16_src.tar.gz", + "size":111974, "sha1":null, "md5":null, - "sha256":"db1ee1a0fcddad2b8b99a6f53834718050c54adefa50a08cf64cb00efa50af27", + "sha256":"968c79b32cfc86df5c0b638f8d7bfc5baeb5c6a6f730a0977a0471a5d9c779f0", "sha512":null, "bug_tracking_url":"https://github.com/gryphius/androdns/issues", "code_view_url":null, @@ -5951,14 +5869,12 @@ "other_license_detections":[], "extracted_license_statement":"Apache-2.0", "notice_text":null, - "source_packages":[ - "pkg:fdroid/androdns.android.leetdreams.ch.androdns@16?download_url=https://f-droid.org/repo/androdns.android.leetdreams.ch.androdns_16_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/androdns.android.leetdreams.ch.androdns", - "repository_download_url":"https://f-droid.org/repo//androdns.android.leetdreams.ch.androdns_16.apk", + "repository_download_url":"https://f-droid.org/repo/androdns.android.leetdreams.ch.androdns_16_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/androdns.android.leetdreams.ch.androdns@16" @@ -6061,11 +5977,11 @@ "Internet" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//androdns.android.leetdreams.ch.androdns_15.apk", - "size":1971108, + "download_url":"https://f-droid.org/repo/androdns.android.leetdreams.ch.androdns_15_src.tar.gz", + "size":111953, "sha1":null, "md5":null, - "sha256":"cb30ddf5e59b91b938271983d415656de6e370f23cbdf633786036831ca3d3db", + "sha256":"df576b5e63d85b4d1801eb4814e53d9c2d89a836306dc7e9b639b44ef623786a", "sha512":null, "bug_tracking_url":"https://github.com/gryphius/androdns/issues", "code_view_url":null, @@ -6103,14 +6019,12 @@ "other_license_detections":[], "extracted_license_statement":"Apache-2.0", "notice_text":null, - "source_packages":[ - "pkg:fdroid/androdns.android.leetdreams.ch.androdns@15?download_url=https://f-droid.org/repo/androdns.android.leetdreams.ch.androdns_15_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/androdns.android.leetdreams.ch.androdns", - "repository_download_url":"https://f-droid.org/repo//androdns.android.leetdreams.ch.androdns_15.apk", + "repository_download_url":"https://f-droid.org/repo/androdns.android.leetdreams.ch.androdns_15_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/androdns.android.leetdreams.ch.androdns@15" @@ -6213,11 +6127,11 @@ "System" ], "homepage_url":"https://github.com/antlersoft/android-vnc-viewer/wiki/Documentation", - "download_url":"https://f-droid.org/repo//android.androidVNC_13.apk", - "size":243294, + "download_url":"https://f-droid.org/repo/android.androidVNC_13_src.tar.gz", + "size":400409, "sha1":null, "md5":null, - "sha256":"eb2682f9ab9ccc5926d1bd504995af31ce15c14b7810efd3f88ab9c3acefa4f9", + "sha256":"6a27130023302f7aa0974ceac9c9c9b2439b644906269d73042210ba4fbb63ac", "sha512":null, "bug_tracking_url":"https://github.com/antlersoft/android-vnc-viewer/issues", "code_view_url":null, @@ -6255,14 +6169,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-2.0-or-later", "notice_text":null, - "source_packages":[ - "pkg:fdroid/android.androidVNC@13?download_url=https://f-droid.org/repo/android.androidVNC_13_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/android.androidVNC", - "repository_download_url":"https://f-droid.org/repo//android.androidVNC_13.apk", + "repository_download_url":"https://f-droid.org/repo/android.androidVNC_13_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/android.androidVNC@13" @@ -6349,11 +6261,11 @@ "Games" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//android.game.prboom_31.apk", - "size":883589, + "download_url":"https://f-droid.org/repo/android.game.prboom_31_src.tar.gz", + "size":6292542, "sha1":null, "md5":null, - "sha256":"0a88b31c5cc465d83fc77703adddf3f4769af32a9c6505b636ae062a7d351bc0", + "sha256":"eb7058ec653b4884b18c9c9c918764820fb1d11b28d86c3f72cc2bfb18bb4ffd", "sha512":null, "bug_tracking_url":null, "code_view_url":null, @@ -6391,14 +6303,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/android.game.prboom@31?download_url=https://f-droid.org/repo/android.game.prboom_31_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/android.game.prboom", - "repository_download_url":"https://f-droid.org/repo//android.game.prboom_31.apk", + "repository_download_url":"https://f-droid.org/repo/android.game.prboom_31_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/android.game.prboom@31" @@ -6501,11 +6411,11 @@ "System" ], "homepage_url":"https://fakestandby.jonasbernard.de/", - "download_url":"https://f-droid.org/repo//android.jonas.fakestandby_11.apk", - "size":1695060, + "download_url":"https://f-droid.org/repo/android.jonas.fakestandby_11_src.tar.gz", + "size":10393451, "sha1":null, "md5":null, - "sha256":"1621370f48a2ad0a41a3ef528896c3c8c6fa169be9c7deba49d9ca642fbcb887", + "sha256":"9c3ebdd1a733ac2d77106ce273f725549e87dd09dbf9d7d7b45828ad6ec91225", "sha512":null, "bug_tracking_url":"https://github.com/JonasBernard/FakeStandby/issues", "code_view_url":null, @@ -6543,14 +6453,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-or-later", "notice_text":null, - "source_packages":[ - "pkg:fdroid/android.jonas.fakestandby@11?download_url=https://f-droid.org/repo/android.jonas.fakestandby_11_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/android.jonas.fakestandby", - "repository_download_url":"https://f-droid.org/repo//android.jonas.fakestandby_11.apk", + "repository_download_url":"https://f-droid.org/repo/android.jonas.fakestandby_11_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/android.jonas.fakestandby@11" @@ -6653,11 +6561,11 @@ "System" ], "homepage_url":"https://fakestandby.jonasbernard.de/", - "download_url":"https://f-droid.org/repo//android.jonas.fakestandby_10.apk", - "size":1703252, + "download_url":"https://f-droid.org/repo/android.jonas.fakestandby_10_src.tar.gz", + "size":10390397, "sha1":null, "md5":null, - "sha256":"68782ca0f0fcd686dd3854879bbee3a2072dac798352263956e6079f46129b0a", + "sha256":"7b5a6d6a6611e2012ea42de0faccac07bf8d177729aa746c5e91c2d19d663fd2", "sha512":null, "bug_tracking_url":"https://github.com/JonasBernard/FakeStandby/issues", "code_view_url":null, @@ -6695,14 +6603,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-or-later", "notice_text":null, - "source_packages":[ - "pkg:fdroid/android.jonas.fakestandby@10?download_url=https://f-droid.org/repo/android.jonas.fakestandby_10_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/android.jonas.fakestandby", - "repository_download_url":"https://f-droid.org/repo//android.jonas.fakestandby_10.apk", + "repository_download_url":"https://f-droid.org/repo/android.jonas.fakestandby_10_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/android.jonas.fakestandby@10" @@ -6805,11 +6711,11 @@ "System" ], "homepage_url":"https://fakestandby.jonasbernard.de/", - "download_url":"https://f-droid.org/repo//android.jonas.fakestandby_9.apk", - "size":3218772, + "download_url":"https://f-droid.org/repo/android.jonas.fakestandby_9_src.tar.gz", + "size":10388620, "sha1":null, "md5":null, - "sha256":"26ca0a5bc1fc7abf92640c8ab2b92a7bd8ab5b6ecc8d3586aaf3222c110d4201", + "sha256":"bc61d8b67d2dcf1c50c47a69b7a262e6161baec4767fb4293bb40f973e86a63b", "sha512":null, "bug_tracking_url":"https://github.com/JonasBernard/FakeStandby/issues", "code_view_url":null, @@ -6847,14 +6753,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-or-later", "notice_text":null, - "source_packages":[ - "pkg:fdroid/android.jonas.fakestandby@9?download_url=https://f-droid.org/repo/android.jonas.fakestandby_9_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/android.jonas.fakestandby", - "repository_download_url":"https://f-droid.org/repo//android.jonas.fakestandby_9.apk", + "repository_download_url":"https://f-droid.org/repo/android.jonas.fakestandby_9_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/android.jonas.fakestandby@9" @@ -6943,11 +6847,11 @@ "Reading" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//android.nachiketa.ebookdownloader_5.apk", - "size":8730238, + "download_url":"https://f-droid.org/repo/android.nachiketa.ebookdownloader_5_src.tar.gz", + "size":79269, "sha1":null, "md5":null, - "sha256":"209b6119126a78aa2b529a0b4a340bb61ab841e4de67015388bf5b852f59d2cc", + "sha256":"d8980a562d74247599e4e0ebfc6d790efc21a701fc23a687c0fc9d6af6a1f11c", "sha512":null, "bug_tracking_url":"https://github.com/NachiketaVadera/EBookDownloader/issues", "code_view_url":null, @@ -6985,14 +6889,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/android.nachiketa.ebookdownloader@5?download_url=https://f-droid.org/repo/android.nachiketa.ebookdownloader_5_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/android.nachiketa.ebookdownloader", - "repository_download_url":"https://f-droid.org/repo//android.nachiketa.ebookdownloader_5.apk", + "repository_download_url":"https://f-droid.org/repo/android.nachiketa.ebookdownloader_5_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/android.nachiketa.ebookdownloader@5" @@ -7081,11 +6983,11 @@ "Reading" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//android.nachiketa.ebookdownloader_4.apk", - "size":1669940, + "download_url":"https://f-droid.org/repo/android.nachiketa.ebookdownloader_4_src.tar.gz", + "size":79036, "sha1":null, "md5":null, - "sha256":"ae5b380411a2c4333ec7865113d8b19fb2431800741eb0416784281e7113ba1a", + "sha256":"af48fce72d27dd111025d0e55eb4a1bafbefb709a86ce7afb22f351b1c12e31d", "sha512":null, "bug_tracking_url":"https://github.com/NachiketaVadera/EBookDownloader/issues", "code_view_url":null, @@ -7123,14 +7025,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/android.nachiketa.ebookdownloader@4?download_url=https://f-droid.org/repo/android.nachiketa.ebookdownloader_4_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/android.nachiketa.ebookdownloader", - "repository_download_url":"https://f-droid.org/repo//android.nachiketa.ebookdownloader_4.apk", + "repository_download_url":"https://f-droid.org/repo/android.nachiketa.ebookdownloader_4_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/android.nachiketa.ebookdownloader@4" @@ -7217,11 +7117,11 @@ "Graphics" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//anupam.acrylic_19.apk", - "size":542178, + "download_url":"https://f-droid.org/repo/anupam.acrylic_19_src.tar.gz", + "size":717863, "sha1":null, "md5":null, - "sha256":"df01309e3641fac77cd9bd356558e122e31f1317f988dfb4144ebad949e0ac84", + "sha256":"8d7c23bab765ed1c765feeff5c6f357c06775224fa40a1d7da58b3be2668eca5", "sha512":null, "bug_tracking_url":"https://github.com/valerio-bozzolan/AcrylicPaint/issues", "code_view_url":null, @@ -7259,14 +7159,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-or-later", "notice_text":null, - "source_packages":[ - "pkg:fdroid/anupam.acrylic@19?download_url=https://f-droid.org/repo/anupam.acrylic_19_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/anupam.acrylic", - "repository_download_url":"https://f-droid.org/repo//anupam.acrylic_19.apk", + "repository_download_url":"https://f-droid.org/repo/anupam.acrylic_19_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/anupam.acrylic@19" @@ -7353,11 +7251,11 @@ "Graphics" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//anupam.acrylic_18.apk", - "size":540073, + "download_url":"https://f-droid.org/repo/anupam.acrylic_18_src.tar.gz", + "size":717113, "sha1":null, "md5":null, - "sha256":"b014d0a5febd73ee883b69f1054c015d222003559332a7b489d0fd1e49eca408", + "sha256":"5ea3a0c4a0ec2a1f771debbd3dcc5287274205afca6ba7c5f4dfcd42f39250a1", "sha512":null, "bug_tracking_url":"https://github.com/valerio-bozzolan/AcrylicPaint/issues", "code_view_url":null, @@ -7395,14 +7293,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-or-later", "notice_text":null, - "source_packages":[ - "pkg:fdroid/anupam.acrylic@18?download_url=https://f-droid.org/repo/anupam.acrylic_18_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/anupam.acrylic", - "repository_download_url":"https://f-droid.org/repo//anupam.acrylic_18.apk", + "repository_download_url":"https://f-droid.org/repo/anupam.acrylic_18_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/anupam.acrylic@18" @@ -7489,11 +7385,11 @@ "Graphics" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//anupam.acrylic_17.apk", - "size":461248, + "download_url":"https://f-droid.org/repo/anupam.acrylic_17_src.tar.gz", + "size":460693, "sha1":null, "md5":null, - "sha256":"b06660fd279f443c74aa35b2fc79bd1689f04fb8a23a892d4cf73340de8a261e", + "sha256":"b561e4348ab05b5f8094181f31d99d664496759680b2afd393ad5a74d511eeab", "sha512":null, "bug_tracking_url":"https://github.com/valerio-bozzolan/AcrylicPaint/issues", "code_view_url":null, @@ -7531,14 +7427,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-or-later", "notice_text":null, - "source_packages":[ - "pkg:fdroid/anupam.acrylic@17?download_url=https://f-droid.org/repo/anupam.acrylic_17_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/anupam.acrylic", - "repository_download_url":"https://f-droid.org/repo//anupam.acrylic_17.apk", + "repository_download_url":"https://f-droid.org/repo/anupam.acrylic_17_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/anupam.acrylic@17" @@ -7643,11 +7537,11 @@ "Multimedia" ], "homepage_url":"https://github.com/alextran1502/immich", - "download_url":"https://f-droid.org/repo//app.alextran.immich_54.apk", - "size":57002798, + "download_url":"https://f-droid.org/repo/app.alextran.immich_54_src.tar.gz", + "size":47553968, "sha1":null, "md5":null, - "sha256":"b6d1717613cbeb60cbf342b5543f009f9a04008fc9999ad34dc3ba87909d24be", + "sha256":"ca85cdb973ac46acc20b375226d7227d6010f9c8dfaafd962903181833d4cd96", "sha512":null, "bug_tracking_url":"https://github.com/alextran1502/immich/issues", "code_view_url":null, @@ -7685,14 +7579,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.alextran.immich@54?download_url=https://f-droid.org/repo/app.alextran.immich_54_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.alextran.immich", - "repository_download_url":"https://f-droid.org/repo//app.alextran.immich_54.apk", + "repository_download_url":"https://f-droid.org/repo/app.alextran.immich_54_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.alextran.immich@54" @@ -7797,11 +7689,11 @@ "Multimedia" ], "homepage_url":"https://github.com/alextran1502/immich", - "download_url":"https://f-droid.org/repo//app.alextran.immich_53.apk", - "size":56920878, + "download_url":"https://f-droid.org/repo/app.alextran.immich_53_src.tar.gz", + "size":47547734, "sha1":null, "md5":null, - "sha256":"bd22db2ef4364a84d03b90f0d1770015fd9d500728311e2caa7adb1c8fed58a2", + "sha256":"5e348ab1d8d101ae1b844d8a58b8b6da89ad41933eaf9a5110ab8ff78d765d61", "sha512":null, "bug_tracking_url":"https://github.com/alextran1502/immich/issues", "code_view_url":null, @@ -7839,14 +7731,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.alextran.immich@53?download_url=https://f-droid.org/repo/app.alextran.immich_53_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.alextran.immich", - "repository_download_url":"https://f-droid.org/repo//app.alextran.immich_53.apk", + "repository_download_url":"https://f-droid.org/repo/app.alextran.immich_53_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.alextran.immich@53" @@ -7951,11 +7841,11 @@ "Multimedia" ], "homepage_url":"https://github.com/alextran1502/immich", - "download_url":"https://f-droid.org/repo//app.alextran.immich_52.apk", - "size":56757038, + "download_url":"https://f-droid.org/repo/app.alextran.immich_52_src.tar.gz", + "size":45165676, "sha1":null, "md5":null, - "sha256":"410b2fa7495cb7c8e2b6ba6b296f629e2ea2ca00524e47811339924711ac4ffc", + "sha256":"173a3e7accf415037e20179f0ceb6053f12080eef63e9ab02daca277c7404b9e", "sha512":null, "bug_tracking_url":"https://github.com/alextran1502/immich/issues", "code_view_url":null, @@ -7993,14 +7883,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.alextran.immich@52?download_url=https://f-droid.org/repo/app.alextran.immich_52_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.alextran.immich", - "repository_download_url":"https://f-droid.org/repo//app.alextran.immich_52.apk", + "repository_download_url":"https://f-droid.org/repo/app.alextran.immich_52_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.alextran.immich@52" @@ -8087,11 +7975,11 @@ "Money" ], "homepage_url":"https://crescent.cash/", - "download_url":"https://f-droid.org/repo//app.crescentcash.src_120.apk", - "size":9839433, + "download_url":"https://f-droid.org/repo/app.crescentcash.src_120_src.tar.gz", + "size":12692630, "sha1":null, "md5":null, - "sha256":"a02b64c18d0ec43adfe87686551416a4c68f36db3a25122fc474797eb4880aee", + "sha256":"e9e21882e7f29dab34dfb53697f0d43866819c37b2305fbdd6ac0568e2fd09b4", "sha512":null, "bug_tracking_url":"https://gitlab.com/pokkst/crescentcash/issues", "code_view_url":null, @@ -8129,14 +8017,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.crescentcash.src@120?download_url=https://f-droid.org/repo/app.crescentcash.src_120_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.crescentcash.src", - "repository_download_url":"https://f-droid.org/repo//app.crescentcash.src_120.apk", + "repository_download_url":"https://f-droid.org/repo/app.crescentcash.src_120_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.crescentcash.src@120" @@ -8223,11 +8109,11 @@ "Money" ], "homepage_url":"https://crescent.cash/", - "download_url":"https://f-droid.org/repo//app.crescentcash.src_118.apk", - "size":9837377, + "download_url":"https://f-droid.org/repo/app.crescentcash.src_118_src.tar.gz", + "size":12652634, "sha1":null, "md5":null, - "sha256":"04b4db2625a90d7f413e963d4509342bbc870479700764b2a53cd87ad875b3f8", + "sha256":"bd4d9664749a285a16fa6436311640f45745443d6c1aa9acd8d5f256e62cd822", "sha512":null, "bug_tracking_url":"https://gitlab.com/pokkst/crescentcash/issues", "code_view_url":null, @@ -8265,14 +8151,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.crescentcash.src@118?download_url=https://f-droid.org/repo/app.crescentcash.src_118_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.crescentcash.src", - "repository_download_url":"https://f-droid.org/repo//app.crescentcash.src_118.apk", + "repository_download_url":"https://f-droid.org/repo/app.crescentcash.src_118_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.crescentcash.src@118" @@ -8359,11 +8243,11 @@ "Money" ], "homepage_url":"https://crescent.cash/", - "download_url":"https://f-droid.org/repo//app.crescentcash.src_117.apk", - "size":9802865, + "download_url":"https://f-droid.org/repo/app.crescentcash.src_117_src.tar.gz", + "size":12675494, "sha1":null, "md5":null, - "sha256":"b376c41a96ac242da44944db44ada51f99b6818191b7f50ae0d44c97d8bae3af", + "sha256":"bdb15b54aaef02ac84ab51508936297c2825f9a2735c59db39a945b71e2bb83b", "sha512":null, "bug_tracking_url":"https://gitlab.com/pokkst/crescentcash/issues", "code_view_url":null, @@ -8401,14 +8285,12 @@ "other_license_detections":[], "extracted_license_statement":"MIT", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.crescentcash.src@117?download_url=https://f-droid.org/repo/app.crescentcash.src_117_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.crescentcash.src", - "repository_download_url":"https://f-droid.org/repo//app.crescentcash.src_117.apk", + "repository_download_url":"https://f-droid.org/repo/app.crescentcash.src_117_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.crescentcash.src@117" @@ -8495,11 +8377,11 @@ "Games" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//app.crossword.yourealwaysbe.forkyz_3200000.apk", - "size":5435991, + "download_url":"https://f-droid.org/repo/app.crossword.yourealwaysbe.forkyz_3200000_src.tar.gz", + "size":1912837, "sha1":null, "md5":null, - "sha256":"2ae2f52f2487751b4519fa1670b282c974fa9c8544a621793c94f712106e849e", + "sha256":"4ab9f2bfbd621ef624b11f22e23ad531d57a21c383bd1331f451b0bf5a517952", "sha512":null, "bug_tracking_url":"https://github.com/yourealwaysbe/forkyz/issues", "code_view_url":null, @@ -8537,14 +8419,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.crossword.yourealwaysbe.forkyz@3200000?download_url=https://f-droid.org/repo/app.crossword.yourealwaysbe.forkyz_3200000_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.crossword.yourealwaysbe.forkyz", - "repository_download_url":"https://f-droid.org/repo//app.crossword.yourealwaysbe.forkyz_3200000.apk", + "repository_download_url":"https://f-droid.org/repo/app.crossword.yourealwaysbe.forkyz_3200000_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.crossword.yourealwaysbe.forkyz@3200000" @@ -8631,11 +8511,11 @@ "Games" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//app.crossword.yourealwaysbe.forkyz_3100000.apk", - "size":5427462, + "download_url":"https://f-droid.org/repo/app.crossword.yourealwaysbe.forkyz_3100000_src.tar.gz", + "size":1480726, "sha1":null, "md5":null, - "sha256":"a815d9aa7c680402d76b9c8fe291fc74f564f3e03bb170dc68c6275d3c3c7500", + "sha256":"2f73a7f95bf303c8000fec515d69a67f7fcfe4bf73ab745db551dcfd29f9fe0a", "sha512":null, "bug_tracking_url":"https://github.com/yourealwaysbe/forkyz/issues", "code_view_url":null, @@ -8673,14 +8553,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.crossword.yourealwaysbe.forkyz@3100000?download_url=https://f-droid.org/repo/app.crossword.yourealwaysbe.forkyz_3100000_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.crossword.yourealwaysbe.forkyz", - "repository_download_url":"https://f-droid.org/repo//app.crossword.yourealwaysbe.forkyz_3100000.apk", + "repository_download_url":"https://f-droid.org/repo/app.crossword.yourealwaysbe.forkyz_3100000_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.crossword.yourealwaysbe.forkyz@3100000" @@ -8767,11 +8645,11 @@ "Games" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//app.crossword.yourealwaysbe.forkyz_3000000.apk", - "size":5427462, + "download_url":"https://f-droid.org/repo/app.crossword.yourealwaysbe.forkyz_3000000_src.tar.gz", + "size":1480460, "sha1":null, "md5":null, - "sha256":"079de513de4ac49eee95bc21f03a15e732f4822dbb054d3a958bdd5269e93680", + "sha256":"31cd5689b9e2fd0aab497226b946e3ee799a10c995f13f3a5e2977891655baa1", "sha512":null, "bug_tracking_url":"https://github.com/yourealwaysbe/forkyz/issues", "code_view_url":null, @@ -8809,14 +8687,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.crossword.yourealwaysbe.forkyz@3000000?download_url=https://f-droid.org/repo/app.crossword.yourealwaysbe.forkyz_3000000_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.crossword.yourealwaysbe.forkyz", - "repository_download_url":"https://f-droid.org/repo//app.crossword.yourealwaysbe.forkyz_3000000.apk", + "repository_download_url":"https://f-droid.org/repo/app.crossword.yourealwaysbe.forkyz_3000000_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.crossword.yourealwaysbe.forkyz@3000000" @@ -8903,11 +8779,11 @@ "Security" ], "homepage_url":"http://forum.xda-developers.com/android/apps-games/app-easy-token-source-securid-token-t2805507", - "download_url":"https://f-droid.org/repo//app.easytoken_919.apk", - "size":1024784, + "download_url":"https://f-droid.org/repo/app.easytoken_919_src.tar.gz", + "size":10755431, "sha1":null, "md5":null, - "sha256":"4ea7fe623d6e3920f920335191cd23adaf2533d5bd10cef10a7a5a80473da79e", + "sha256":"c251369d27760a347b5282ff92cb5d6c40a1e2d40e3cda464ef2e30f3e9c2478", "sha512":null, "bug_tracking_url":"https://github.com/cernekee/EasyToken/issues", "code_view_url":null, @@ -8945,14 +8821,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-2.0-or-later", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.easytoken@919?download_url=https://f-droid.org/repo/app.easytoken_919_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.easytoken", - "repository_download_url":"https://f-droid.org/repo//app.easytoken_919.apk", + "repository_download_url":"https://f-droid.org/repo/app.easytoken_919_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.easytoken@919" @@ -9039,11 +8913,11 @@ "Security" ], "homepage_url":"http://forum.xda-developers.com/android/apps-games/app-easy-token-source-securid-token-t2805507", - "download_url":"https://f-droid.org/repo//app.easytoken_909.apk", - "size":809099, + "download_url":"https://f-droid.org/repo/app.easytoken_909_src.tar.gz", + "size":8025551, "sha1":null, "md5":null, - "sha256":"4d688551eec4e75e6ac3469ab220f4c3d3e40e2254c9916f31fecdb1f04cb27e", + "sha256":"12c9383926b5f9f0d1e4df2efacce6cfdf1515dfdb07e32b902802ddd938c53f", "sha512":null, "bug_tracking_url":"https://github.com/cernekee/EasyToken/issues", "code_view_url":null, @@ -9081,14 +8955,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-2.0-or-later", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.easytoken@909?download_url=https://f-droid.org/repo/app.easytoken_909_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.easytoken", - "repository_download_url":"https://f-droid.org/repo//app.easytoken_909.apk", + "repository_download_url":"https://f-droid.org/repo/app.easytoken_909_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.easytoken@909" @@ -9175,11 +9047,11 @@ "Security" ], "homepage_url":"http://forum.xda-developers.com/android/apps-games/app-easy-token-source-securid-token-t2805507", - "download_url":"https://f-droid.org/repo//app.easytoken_819.apk", - "size":804978, + "download_url":"https://f-droid.org/repo/app.easytoken_819_src.tar.gz", + "size":8018460, "sha1":null, "md5":null, - "sha256":"f0594a80c5dc64f63cea7009683453ddcd65485dbbbbef8d84e4281e44f0e2e2", + "sha256":"48910c8fe3e98d6899b11eeafcde96ad30be61af8dda366d0bd1fb41f35b6854", "sha512":null, "bug_tracking_url":"https://github.com/cernekee/EasyToken/issues", "code_view_url":null, @@ -9217,14 +9089,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-2.0-or-later", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.easytoken@819?download_url=https://f-droid.org/repo/app.easytoken_819_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.easytoken", - "repository_download_url":"https://f-droid.org/repo//app.easytoken_819.apk", + "repository_download_url":"https://f-droid.org/repo/app.easytoken_819_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.easytoken@819" @@ -9327,11 +9197,11 @@ "Internet" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//app.fedilab.fedilabtube_45.apk", - "size":12287923, + "download_url":"https://f-droid.org/repo/app.fedilab.fedilabtube_45_src.tar.gz", + "size":6582330, "sha1":null, "md5":null, - "sha256":"bd3f683f838f1fab45192f14aec98379fb3d36960b917b9f2cb7a7e81c6481c8", + "sha256":"ca2fe5033881b074537c01a06ccb31c9dd319010c035d62d4f710fd927ae1452", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/fedilab-tube/issues", "code_view_url":null, @@ -9369,14 +9239,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.fedilabtube@45?download_url=https://f-droid.org/repo/app.fedilab.fedilabtube_45_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.fedilabtube", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.fedilabtube_45.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.fedilabtube_45_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.fedilabtube@45" @@ -9479,11 +9347,11 @@ "Internet" ], "homepage_url":"https://framagit.org/tom79/mobilizon-android-app", - "download_url":"https://f-droid.org/repo//app.fedilab.mobilizon_3.apk", - "size":3037446, + "download_url":"https://f-droid.org/repo/app.fedilab.mobilizon_3_src.tar.gz", + "size":1012014, "sha1":null, "md5":null, - "sha256":"9b7a3d5efee6a925becc2dfbe3a2b2a0e7c1841609c0cbab2481d9557ee3ed4e", + "sha256":"62518770423befc370c46d68a9ada76b10cd8cf023f122e638eda2f0e3d69100", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/mobilizon-android-app/issues", "code_view_url":null, @@ -9521,14 +9389,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.mobilizon@3?download_url=https://f-droid.org/repo/app.fedilab.mobilizon_3_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.mobilizon", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.mobilizon_3.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.mobilizon_3_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.mobilizon@3" @@ -9631,11 +9497,11 @@ "Internet" ], "homepage_url":"https://framagit.org/tom79/mobilizon-android-app", - "download_url":"https://f-droid.org/repo//app.fedilab.mobilizon_2.apk", - "size":3021062, + "download_url":"https://f-droid.org/repo/app.fedilab.mobilizon_2_src.tar.gz", + "size":999588, "sha1":null, "md5":null, - "sha256":"defe55d3423cd24a0830090fdfa1ca1f6edfa02bea79a123b7f9635bff92b726", + "sha256":"1e52ad2425d1d375d33909e9000088c654ac0e9636e3f52212a2cfaf7907d72f", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/mobilizon-android-app/issues", "code_view_url":null, @@ -9673,14 +9539,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.mobilizon@2?download_url=https://f-droid.org/repo/app.fedilab.mobilizon_2_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.mobilizon", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.mobilizon_2.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.mobilizon_2_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.mobilizon@2" @@ -9783,11 +9647,11 @@ "Internet" ], "homepage_url":"https://framagit.org/tom79/mobilizon-android-app", - "download_url":"https://f-droid.org/repo//app.fedilab.mobilizon_1.apk", - "size":3021062, + "download_url":"https://f-droid.org/repo/app.fedilab.mobilizon_1_src.tar.gz", + "size":997708, "sha1":null, "md5":null, - "sha256":"84e17b1b523153a91808e16011d0a6d6d9c6061bdb398756d4d56c9ce339b8e1", + "sha256":"f1413b554480c0fb9088944a57c01fdeb9b8cd23b05271e7c28fba734f40358c", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/mobilizon-android-app/issues", "code_view_url":null, @@ -9825,14 +9689,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.mobilizon@1?download_url=https://f-droid.org/repo/app.fedilab.mobilizon_1_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.mobilizon", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.mobilizon_1.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.mobilizon_1_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.mobilizon@1" @@ -9919,11 +9781,11 @@ "Internet" ], "homepage_url":"https://fedilab.app/wiki/nitterizeme/", - "download_url":"https://f-droid.org/repo//app.fedilab.nitterizeme_33.apk", - "size":3714928, + "download_url":"https://f-droid.org/repo/app.fedilab.nitterizeme_33_src.tar.gz", + "size":1096069, "sha1":null, "md5":null, - "sha256":"bcf251559ee4777f26a9e26b403b1606365893ef96df5edcfcca47a71c377361", + "sha256":"7f151a6aecae7fe1e4de472425b658a2de18d19c1dc44fe784e18cb80d39fe17", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/nitterizeme/issues", "code_view_url":null, @@ -9961,14 +9823,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.nitterizeme@33?download_url=https://f-droid.org/repo/app.fedilab.nitterizeme_33_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.nitterizeme", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.nitterizeme_33.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.nitterizeme_33_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.nitterizeme@33" @@ -10055,11 +9915,11 @@ "Internet" ], "homepage_url":"https://fedilab.app/wiki/nitterizeme/", - "download_url":"https://f-droid.org/repo//app.fedilab.nitterizeme_32.apk", - "size":3732264, + "download_url":"https://f-droid.org/repo/app.fedilab.nitterizeme_32_src.tar.gz", + "size":1398878, "sha1":null, "md5":null, - "sha256":"80608edebc87f3967dbcc14263b0ddbbac31d389970602049f81ea38e247aa82", + "sha256":"217889ed1119e7fc862711a2c5b80f9767176866ac507560cd771f750b3cb131", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/nitterizeme/issues", "code_view_url":null, @@ -10097,14 +9957,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.nitterizeme@32?download_url=https://f-droid.org/repo/app.fedilab.nitterizeme_32_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.nitterizeme", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.nitterizeme_32.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.nitterizeme_32_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.nitterizeme@32" @@ -10191,11 +10049,11 @@ "Internet" ], "homepage_url":"https://fedilab.app/wiki/nitterizeme/", - "download_url":"https://f-droid.org/repo//app.fedilab.nitterizeme_31.apk", - "size":3678975, + "download_url":"https://f-droid.org/repo/app.fedilab.nitterizeme_31_src.tar.gz", + "size":3236208, "sha1":null, "md5":null, - "sha256":"cd7dc93738eb5f7c7c0fa76c616e016ea2cec5bf9572b1f4fb3f24afed345cb6", + "sha256":"cfe56f1fa80ceca3058468ef400be55ef75ca76195c4b42d94949a0d3d958c44", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/nitterizeme/issues", "code_view_url":null, @@ -10233,14 +10091,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.nitterizeme@31?download_url=https://f-droid.org/repo/app.fedilab.nitterizeme_31_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.nitterizeme", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.nitterizeme_31.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.nitterizeme_31_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.nitterizeme@31" @@ -10327,11 +10183,11 @@ "Internet" ], "homepage_url":"https://fedilab.app/wiki/nitterizeme/", - "download_url":"https://f-droid.org/repo//app.fedilab.nitterizemelite_33.apk", - "size":3714928, + "download_url":"https://f-droid.org/repo/app.fedilab.nitterizemelite_33_src.tar.gz", + "size":1096611, "sha1":null, "md5":null, - "sha256":"30ae40611f5fbbce0772e3c26d4103d98d62ed22b7dd83736219ace083b1bc46", + "sha256":"43a03cbdc9c012f2e28717855f0ee18afcd80d618ae3f37e6ac5f12efa906711", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/nitterizeme/issues", "code_view_url":null, @@ -10369,14 +10225,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.nitterizemelite@33?download_url=https://f-droid.org/repo/app.fedilab.nitterizemelite_33_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.nitterizemelite", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.nitterizemelite_33.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.nitterizemelite_33_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.nitterizemelite@33" @@ -10463,11 +10317,11 @@ "Internet" ], "homepage_url":"https://fedilab.app/wiki/nitterizeme/", - "download_url":"https://f-droid.org/repo//app.fedilab.nitterizemelite_32.apk", - "size":3732264, + "download_url":"https://f-droid.org/repo/app.fedilab.nitterizemelite_32_src.tar.gz", + "size":1399379, "sha1":null, "md5":null, - "sha256":"7c8135e64e6d4e3558dc870f459cdf159c31166799f17d85809b528f1d55feda", + "sha256":"e199a466c8d1f3ed771b1803123397d54863bb3261e7ef89a45dd3d6c19c06d5", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/nitterizeme/issues", "code_view_url":null, @@ -10505,14 +10359,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.nitterizemelite@32?download_url=https://f-droid.org/repo/app.fedilab.nitterizemelite_32_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.nitterizemelite", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.nitterizemelite_32.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.nitterizemelite_32_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.nitterizemelite@32" @@ -10599,11 +10451,11 @@ "Internet" ], "homepage_url":"https://fedilab.app/wiki/nitterizeme/", - "download_url":"https://f-droid.org/repo//app.fedilab.nitterizemelite_31.apk", - "size":3674879, + "download_url":"https://f-droid.org/repo/app.fedilab.nitterizemelite_31_src.tar.gz", + "size":3236897, "sha1":null, "md5":null, - "sha256":"3564df4741d8774abffa119d8daea6f6f6f1eef0cd3900cecf85274970105f24", + "sha256":"eb79f7871c4bf8ee0c0c6a97b6d86065e0de19bb1d0519f6bff6874ed1e226f6", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/nitterizeme/issues", "code_view_url":null, @@ -10641,14 +10493,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.nitterizemelite@31?download_url=https://f-droid.org/repo/app.fedilab.nitterizemelite_31_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.nitterizemelite", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.nitterizemelite_31.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.nitterizemelite_31_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.nitterizemelite@31" @@ -10735,11 +10585,11 @@ "Navigation" ], "homepage_url":"https://framagit.org/tom79/openmaps", - "download_url":"https://f-droid.org/repo//app.fedilab.openmaps_13.apk", - "size":3828282, + "download_url":"https://f-droid.org/repo/app.fedilab.openmaps_13_src.tar.gz", + "size":3417207, "sha1":null, "md5":null, - "sha256":"f8f74eb4efd87d25113e960af3f1469839042fbe4da0eea0075290944cc5fb53", + "sha256":"89bd8da46c986b9633c8de48bb61f468021cb4036286dd192ae0eeabc933750b", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/openmaps/issues", "code_view_url":null, @@ -10777,14 +10627,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.openmaps@13?download_url=https://f-droid.org/repo/app.fedilab.openmaps_13_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.openmaps", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.openmaps_13.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.openmaps_13_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.openmaps@13" @@ -10871,11 +10719,11 @@ "Navigation" ], "homepage_url":"https://framagit.org/tom79/openmaps", - "download_url":"https://f-droid.org/repo//app.fedilab.openmaps_12.apk", - "size":3717905, + "download_url":"https://f-droid.org/repo/app.fedilab.openmaps_12_src.tar.gz", + "size":3416732, "sha1":null, "md5":null, - "sha256":"f0e53ba598a761609dcd5dc2a2a2b733b8a8a51611f8a9d1dbc0a777ae339904", + "sha256":"f0eb93ca63d5c4f23e7a403f1d79906ff578451c11d11e084ab680eb604b76a2", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/openmaps/issues", "code_view_url":null, @@ -10913,14 +10761,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.openmaps@12?download_url=https://f-droid.org/repo/app.fedilab.openmaps_12_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.openmaps", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.openmaps_12.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.openmaps_12_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.openmaps@12" @@ -11007,11 +10853,11 @@ "Navigation" ], "homepage_url":"https://framagit.org/tom79/openmaps", - "download_url":"https://f-droid.org/repo//app.fedilab.openmaps_11.apk", - "size":3295949, + "download_url":"https://f-droid.org/repo/app.fedilab.openmaps_11_src.tar.gz", + "size":3407906, "sha1":null, "md5":null, - "sha256":"ae76fbd1ee331c9d7c2a734a5b2f88fe38c8850ce4351ef7ae70550f3caa05ee", + "sha256":"0f5d6fb9f8eeae672fdb73b1c3af613542e56f3a936e8942aa7fe7ebebd53441", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/openmaps/issues", "code_view_url":null, @@ -11049,14 +10895,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.openmaps@11?download_url=https://f-droid.org/repo/app.fedilab.openmaps_11_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.openmaps", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.openmaps_11.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.openmaps_11_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.openmaps@11" @@ -11159,11 +11003,11 @@ "Internet" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//app.fedilab.tubelab_45.apk", - "size":12043946, + "download_url":"https://f-droid.org/repo/app.fedilab.tubelab_45_src.tar.gz", + "size":6581087, "sha1":null, "md5":null, - "sha256":"74987196d05f1003732a4cb99d1237d0b1a4831de5f828988d621b0d9a7a6d81", + "sha256":"a114d34c5f6066ed3045e4b6096119ab715760cc371e9ace8f532196aec07fe7", "sha512":null, "bug_tracking_url":"https://framagit.org/tom79/fedilab-tube/issues", "code_view_url":null, @@ -11201,14 +11045,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.fedilab.tubelab@45?download_url=https://f-droid.org/repo/app.fedilab.tubelab_45_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.fedilab.tubelab", - "repository_download_url":"https://f-droid.org/repo//app.fedilab.tubelab_45.apk", + "repository_download_url":"https://f-droid.org/repo/app.fedilab.tubelab_45_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.fedilab.tubelab@45" @@ -11311,11 +11153,11 @@ "Internet" ], "homepage_url":null, - "download_url":"https://f-droid.org/repo//app.intra_64.apk", - "size":12590857, + "download_url":"https://f-droid.org/repo/app.intra_64_src.tar.gz", + "size":1329599, "sha1":null, "md5":null, - "sha256":"eb19b25591e54c6e3718e9810d38d42f2883df3a834ca511c05532bdf45dbbf3", + "sha256":"8449121f840d7208363c1bb39daea26afeea7317cd708b85c3b006e7db76fe83", "sha512":null, "bug_tracking_url":"https://github.com/Jigsaw-Code/Intra/issues", "code_view_url":null, @@ -11353,14 +11195,12 @@ "other_license_detections":[], "extracted_license_statement":"Apache-2.0", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.intra@64?download_url=https://f-droid.org/repo/app.intra_64_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.intra", - "repository_download_url":"https://f-droid.org/repo//app.intra_64.apk", + "repository_download_url":"https://f-droid.org/repo/app.intra_64_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.intra@64" @@ -11447,11 +11287,11 @@ "Reading" ], "homepage_url":"https://librenews.io/", - "download_url":"https://f-droid.org/repo//app.librenews.io.librenews_5.apk", - "size":2240436, + "download_url":"https://f-droid.org/repo/app.librenews.io.librenews_5_src.tar.gz", + "size":314767, "sha1":null, "md5":null, - "sha256":"cad1fef2b79f7df832a27dbf991e70c83b1639eaa678c177a250e32e74fc52db", + "sha256":"f01e5322c0161259310186612b98612955b0045b4fc07b9d512fb3bc76451281", "sha512":null, "bug_tracking_url":"https://github.com/milesmcc/LibreNews-Android/issues", "code_view_url":null, @@ -11489,14 +11329,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.librenews.io.librenews@5?download_url=https://f-droid.org/repo/app.librenews.io.librenews_5_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.librenews.io.librenews", - "repository_download_url":"https://f-droid.org/repo//app.librenews.io.librenews_5.apk", + "repository_download_url":"https://f-droid.org/repo/app.librenews.io.librenews_5_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.librenews.io.librenews@5" @@ -11583,11 +11421,11 @@ "Reading" ], "homepage_url":"https://librenews.io/", - "download_url":"https://f-droid.org/repo//app.librenews.io.librenews_4.apk", - "size":2239563, + "download_url":"https://f-droid.org/repo/app.librenews.io.librenews_4_src.tar.gz", + "size":314245, "sha1":null, "md5":null, - "sha256":"856fa473c9f9aed97d9f4122a853288ceca3cc3ccceb33dd29cb0f21c706729b", + "sha256":"21e79d2f2aad88aa10d0620dcdb1ee0eb9ffd9830fd7e9d5120e2a1943f5cab2", "sha512":null, "bug_tracking_url":"https://github.com/milesmcc/LibreNews-Android/issues", "code_view_url":null, @@ -11625,14 +11463,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.librenews.io.librenews@4?download_url=https://f-droid.org/repo/app.librenews.io.librenews_4_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.librenews.io.librenews", - "repository_download_url":"https://f-droid.org/repo//app.librenews.io.librenews_4.apk", + "repository_download_url":"https://f-droid.org/repo/app.librenews.io.librenews_4_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.librenews.io.librenews@4" @@ -11719,11 +11555,11 @@ "Reading" ], "homepage_url":"https://librenews.io/", - "download_url":"https://f-droid.org/repo//app.librenews.io.librenews_3.apk", - "size":1993445, + "download_url":"https://f-droid.org/repo/app.librenews.io.librenews_3_src.tar.gz", + "size":310961, "sha1":null, "md5":null, - "sha256":"506b3003a4de2d5eb956a0c995b22efee313c983fdffc5ca3bef940d8428caa6", + "sha256":"8aae95fde276065e50626f5a1d89beffffbe93d6c34502c0ae83106839a03b24", "sha512":null, "bug_tracking_url":"https://github.com/milesmcc/LibreNews-Android/issues", "code_view_url":null, @@ -11761,14 +11597,12 @@ "other_license_detections":[], "extracted_license_statement":"GPL-3.0-only", "notice_text":null, - "source_packages":[ - "pkg:fdroid/app.librenews.io.librenews@3?download_url=https://f-droid.org/repo/app.librenews.io.librenews_3_src.tar.gz" - ], + "source_packages":[], "file_references":[], "extra_data":{}, "dependencies":[], "repository_homepage_url":"https://f-droid.org/en/packages/app.librenews.io.librenews", - "repository_download_url":"https://f-droid.org/repo//app.librenews.io.librenews_3.apk", + "repository_download_url":"https://f-droid.org/repo/app.librenews.io.librenews_3_src.tar.gz", "api_data_url":null, "datasource_id":null, "purl":"pkg:fdroid/app.librenews.io.librenews@3" diff --git a/minecode/tests/testfiles/googlecode/mapper_expected_v2_apache-extras.org_124799961-qian_project.json b/minecode/tests/testfiles/googlecode/mapper_expected_v2_apache-extras.org_124799961-qian_project.json index 9409d329..c6573a4c 100644 --- a/minecode/tests/testfiles/googlecode/mapper_expected_v2_apache-extras.org_124799961-qian_project.json +++ b/minecode/tests/testfiles/googlecode/mapper_expected_v2_apache-extras.org_124799961-qian_project.json @@ -61,7 +61,9 @@ "api_data_url":null, "package_uid":"pkg:googlecode/apache-extras.org/124799961-qian?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "googlecode_json" + ], "purl":"pkg:googlecode/apache-extras.org/124799961-qian" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/googlecode/v2_api/package_expected_project.json b/minecode/tests/testfiles/googlecode/v2_api/package_expected_project.json index 63b1afad..d6c8b89f 100644 --- a/minecode/tests/testfiles/googlecode/v2_api/package_expected_project.json +++ b/minecode/tests/testfiles/googlecode/v2_api/package_expected_project.json @@ -68,7 +68,9 @@ "api_data_url":null, "package_uid":"pkg:googlecode/hg4j?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "googlecode_api_json" + ], "purl":"pkg:googlecode/hg4j" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/npm/lodash_package-expected.json b/minecode/tests/testfiles/npm/lodash_package-expected.json index 32a34466..ae468fd8 100644 --- a/minecode/tests/testfiles/npm/lodash_package-expected.json +++ b/minecode/tests/testfiles/npm/lodash_package-expected.json @@ -57,9 +57,7 @@ "name":"bnjmnt4n", "email":"benjamin@dev.ofcr.se" }, - "directories":{ - - }, + "directories":{}, "maintainers":[ { "name":"mathias", diff --git a/minecode/tests/testfiles/nuget/nuget_mapper_log4net_expected.json b/minecode/tests/testfiles/nuget/nuget_mapper_log4net_expected.json index 5e1de5ad..fb755ff2 100644 --- a/minecode/tests/testfiles/nuget/nuget_mapper_log4net_expected.json +++ b/minecode/tests/testfiles/nuget/nuget_mapper_log4net_expected.json @@ -22,7 +22,7 @@ "code_view_url":null, "vcs_url":null, "copyright":"Copyright 2004-2017 The Apache Software Foundation", - "holder":null, + "holder":"The Apache Software Foundation", "declared_license_expression":"apache-2.0", "declared_license_expression_spdx":"Apache-2.0", "license_detections":[ @@ -60,8 +60,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:nuget/log4net@2.0.8?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://www.nuget.org/packages/log4net" + ], + "datasource_ids":[ + "nuget_metadata_json" + ], "purl":"pkg:nuget/log4net@2.0.8" }, { @@ -87,7 +91,7 @@ "code_view_url":null, "vcs_url":null, "copyright":"Copyright 2004-2017 The Apache Software Foundation", - "holder":null, + "holder":"The Apache Software Foundation", "declared_license_expression":"apache-2.0", "declared_license_expression_spdx":"Apache-2.0", "license_detections":[ @@ -125,8 +129,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:nuget/log4net@2.0.7?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://www.nuget.org/packages/log4net" + ], + "datasource_ids":[ + "nuget_metadata_json" + ], "purl":"pkg:nuget/log4net@2.0.7" }, { @@ -152,7 +160,7 @@ "code_view_url":null, "vcs_url":null, "copyright":"Copyright 2004-2017 The Apache Software Foundation", - "holder":null, + "holder":"The Apache Software Foundation", "declared_license_expression":"apache-2.0", "declared_license_expression_spdx":"Apache-2.0", "license_detections":[ @@ -190,8 +198,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:nuget/log4net@2.0.6?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://www.nuget.org/packages/log4net" + ], + "datasource_ids":[ + "nuget_metadata_json" + ], "purl":"pkg:nuget/log4net@2.0.6" }, { @@ -217,7 +229,7 @@ "code_view_url":null, "vcs_url":null, "copyright":"Copyright 2004-2017 The Apache Software Foundation", - "holder":null, + "holder":"The Apache Software Foundation", "declared_license_expression":"apache-2.0", "declared_license_expression_spdx":"Apache-2.0", "license_detections":[ @@ -255,8 +267,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:nuget/log4net@2.0.5?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://www.nuget.org/packages/log4net" + ], + "datasource_ids":[ + "nuget_metadata_json" + ], "purl":"pkg:nuget/log4net@2.0.5" }, { @@ -282,7 +298,7 @@ "code_view_url":null, "vcs_url":null, "copyright":"Copyright 2004-2017 The Apache Software Foundation", - "holder":null, + "holder":"The Apache Software Foundation", "declared_license_expression":"apache-2.0", "declared_license_expression_spdx":"Apache-2.0", "license_detections":[ @@ -320,8 +336,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:nuget/log4net@2.0.4?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://www.nuget.org/packages/log4net" + ], + "datasource_ids":[ + "nuget_metadata_json" + ], "purl":"pkg:nuget/log4net@2.0.4" }, { @@ -347,7 +367,7 @@ "code_view_url":null, "vcs_url":null, "copyright":"Copyright 2004-2017 The Apache Software Foundation", - "holder":null, + "holder":"The Apache Software Foundation", "declared_license_expression":"apache-2.0", "declared_license_expression_spdx":"Apache-2.0", "license_detections":[ @@ -385,8 +405,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:nuget/log4net@2.0.3?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://www.nuget.org/packages/log4net" + ], + "datasource_ids":[ + "nuget_metadata_json" + ], "purl":"pkg:nuget/log4net@2.0.3" }, { @@ -412,7 +436,7 @@ "code_view_url":null, "vcs_url":null, "copyright":"Copyright 2004-2017 The Apache Software Foundation", - "holder":null, + "holder":"The Apache Software Foundation", "declared_license_expression":"apache-2.0", "declared_license_expression_spdx":"Apache-2.0", "license_detections":[ @@ -450,8 +474,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:nuget/log4net@2.0.2?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://www.nuget.org/packages/log4net" + ], + "datasource_ids":[ + "nuget_metadata_json" + ], "purl":"pkg:nuget/log4net@2.0.2" }, { @@ -477,7 +505,7 @@ "code_view_url":null, "vcs_url":null, "copyright":"Copyright 2004-2017 The Apache Software Foundation", - "holder":null, + "holder":"The Apache Software Foundation", "declared_license_expression":"apache-2.0", "declared_license_expression_spdx":"Apache-2.0", "license_detections":[ @@ -515,8 +543,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:nuget/log4net@2.0.1?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://www.nuget.org/packages/log4net" + ], + "datasource_ids":[ + "nuget_metadata_json" + ], "purl":"pkg:nuget/log4net@2.0.1" }, { @@ -542,7 +574,7 @@ "code_view_url":null, "vcs_url":null, "copyright":"Copyright 2004-2017 The Apache Software Foundation", - "holder":null, + "holder":"The Apache Software Foundation", "declared_license_expression":"apache-2.0", "declared_license_expression_spdx":"Apache-2.0", "license_detections":[ @@ -580,8 +612,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:nuget/log4net@2.0.0?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://www.nuget.org/packages/log4net" + ], + "datasource_ids":[ + "nuget_metadata_json" + ], "purl":"pkg:nuget/log4net@2.0.0" }, { @@ -607,7 +643,7 @@ "code_view_url":null, "vcs_url":null, "copyright":"Copyright 2004-2017 The Apache Software Foundation", - "holder":null, + "holder":"The Apache Software Foundation", "declared_license_expression":"apache-2.0", "declared_license_expression_spdx":"Apache-2.0", "license_detections":[ @@ -645,8 +681,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:nuget/log4net@1.2.10?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://www.nuget.org/packages/log4net" + ], + "datasource_ids":[ + "nuget_metadata_json" + ], "purl":"pkg:nuget/log4net@1.2.10" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/openssl/openssl_mapper_expected.json b/minecode/tests/testfiles/openssl/openssl_mapper_expected.json index 9b7585dd..3a1871a3 100644 --- a/minecode/tests/testfiles/openssl/openssl_mapper_expected.json +++ b/minecode/tests/testfiles/openssl/openssl_mapper_expected.json @@ -22,7 +22,7 @@ "code_view_url":"https://github.com/openssl/openssl", "vcs_url":"git+https://github.com/openssl/openssl.git", "copyright":"Copyright (c) 1998-2018 The OpenSSL Project\nCopyright (c) 1995-1998 Eric A. Young, Tim J. Hudson\nAll rights reserved.", - "holder":null, + "holder":"The OpenSSL Project\nEric A. Young, Tim J. Hudson", "declared_license_expression":"openssl-ssleay", "declared_license_expression_spdx":"OpenSSL", "license_detections":[ @@ -60,8 +60,12 @@ "repository_download_url":null, "api_data_url":null, "package_uid":"pkg:generic/openssl-1.0.2-stable-SNAP-20180518.tar.gz@1.0.2-stable-SNAP-20180518?uuid=fixed-uid-done-for-testing-5642512d1758", - "datafile_paths":[], - "datasource_ids":[], + "datafile_paths":[ + "https://ftp.openssl.org/snapshot/openssl-1.0.2-stable-SNAP-20180518.tar.gz" + ], + "datasource_ids":[ + "openssl_metadeta" + ], "purl":"pkg:generic/openssl-1.0.2-stable-SNAP-20180518.tar.gz@1.0.2-stable-SNAP-20180518" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/packagist/packaglist_00f100_cakephp-opauth_expected.json b/minecode/tests/testfiles/packagist/packaglist_00f100_cakephp-opauth_expected.json index 1bf77f36..7311f8ff 100644 --- a/minecode/tests/testfiles/packagist/packaglist_00f100_cakephp-opauth_expected.json +++ b/minecode/tests/testfiles/packagist/packaglist_00f100_cakephp-opauth_expected.json @@ -35,7 +35,7 @@ "homepage_url":"http://opauth.org", "download_url":"https://api.github.com/repos/00F100/cakephp-opauth/zipball/c82879adc50afb5a5e95436ef057dfefffe02607", "size":null, - "sha1":"", + "sha1":null, "md5":null, "sha256":null, "sha512":null, @@ -82,7 +82,9 @@ "api_data_url":null, "package_uid":"pkg:composer/00f100/cakephp-opauth@dev-master?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "composer_json" + ], "purl":"pkg:composer/00f100/cakephp-opauth@dev-master" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/sourceforge/mapper_niftyphp_expected.json b/minecode/tests/testfiles/sourceforge/mapper_niftyphp_expected.json index 359a221c..86ee4ae9 100644 --- a/minecode/tests/testfiles/sourceforge/mapper_niftyphp_expected.json +++ b/minecode/tests/testfiles/sourceforge/mapper_niftyphp_expected.json @@ -109,7 +109,9 @@ "api_data_url":null, "package_uid":"pkg:sourceforge/niftyphp?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "sourceforge_metadata" + ], "purl":"pkg:sourceforge/niftyphp" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/sourceforge/mapper_odanur_expected.json b/minecode/tests/testfiles/sourceforge/mapper_odanur_expected.json index 8d8f8995..f00aed6e 100644 --- a/minecode/tests/testfiles/sourceforge/mapper_odanur_expected.json +++ b/minecode/tests/testfiles/sourceforge/mapper_odanur_expected.json @@ -18,8 +18,8 @@ "url":"https://sourceforge.net/u/ignaciopl/" } ], - "keywords":null, - "homepage_url":"", + "keywords":[], + "homepage_url":null, "download_url":null, "size":null, "sha1":null, @@ -46,7 +46,9 @@ "api_data_url":null, "package_uid":"pkg:sourceforge/odanur?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "sourceforge_metadata" + ], "purl":"pkg:sourceforge/odanur" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/sourceforge/mapper_omonoql_expected.json b/minecode/tests/testfiles/sourceforge/mapper_omonoql_expected.json index 02f8a421..1a6b6878 100644 --- a/minecode/tests/testfiles/sourceforge/mapper_omonoql_expected.json +++ b/minecode/tests/testfiles/sourceforge/mapper_omonoql_expected.json @@ -122,7 +122,9 @@ "api_data_url":null, "package_uid":"pkg:sourceforge/monoql?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "sourceforge_metadata" + ], "purl":"pkg:sourceforge/monoql" } ] \ No newline at end of file diff --git a/minecode/tests/testfiles/sourceforge/mapper_openstunts_expected.json b/minecode/tests/testfiles/sourceforge/mapper_openstunts_expected.json index bcd5811f..ac166c70 100644 --- a/minecode/tests/testfiles/sourceforge/mapper_openstunts_expected.json +++ b/minecode/tests/testfiles/sourceforge/mapper_openstunts_expected.json @@ -108,7 +108,9 @@ "api_data_url":null, "package_uid":"pkg:sourceforge/openstunts?uuid=fixed-uid-done-for-testing-5642512d1758", "datafile_paths":[], - "datasource_ids":[], + "datasource_ids":[ + "sourceforge_metadata" + ], "purl":"pkg:sourceforge/openstunts" } ] \ No newline at end of file diff --git a/minecode/utils_test.py b/minecode/utils_test.py index 9da25fd1..1480240f 100644 --- a/minecode/utils_test.py +++ b/minecode/utils_test.py @@ -31,6 +31,7 @@ from scancode.cli_test_utils import purl_with_fake_uuid from minecode.utils import get_temp_dir +from minecode.tests import FIXTURES_REGEN """ @@ -241,7 +242,7 @@ def _remove_fields_from_results(self, data, fields_to_remove): continue data.pop(field) - def check_expected_results(self, results, expected_loc, fields_to_remove=[], regen=False): + def check_expected_results(self, results, expected_loc, fields_to_remove=[], regen=FIXTURES_REGEN): """ Check `results` are equal to expected data stored in a JSON file at `expected_loc`. @@ -264,7 +265,7 @@ def check_expected_results(self, results, expected_loc, fields_to_remove=[], reg results = json.loads(json.dumps(results)) self.assertEqual(expected, results) - def check_expected_uris(self, uris, expected_loc, data_is_json=False, regen=False): + def check_expected_uris(self, uris, expected_loc, data_is_json=False, regen=FIXTURES_REGEN): """ Check a `uris` iterable of URIs matches the data stored in the JSON file at `expected_loc`. diff --git a/minecode/visitors/generic.py b/minecode/visitors/generic.py index 652ea286..314a84e4 100644 --- a/minecode/visitors/generic.py +++ b/minecode/visitors/generic.py @@ -88,7 +88,7 @@ def packagedata_from_dict(package_data): cleaned_package_data = { key: value for key, value in package_data.items() if key in supported } - return PackageData(**cleaned_package_data) + return PackageData.from_data(cleaned_package_data) def map_directory_listed_package(package_url): diff --git a/minecode/visitors/repomd_parser.py b/minecode/visitors/repomd_parser.py index fee7abe7..78f8fe8a 100644 --- a/minecode/visitors/repomd_parser.py +++ b/minecode/visitors/repomd_parser.py @@ -55,7 +55,7 @@ def generate_rpm_objects(package_infos, base_url): """ # FIXME: what does package_infos mean? wheer does it come from? for infos in package_infos: - package = PackageData( + package_data = dict( # FIXME: need to add id back? this is id is some hash which is local to the repo. # id=infos.get('pkgid'), type='rpm', @@ -68,6 +68,7 @@ def generate_rpm_objects(package_infos, base_url): base_url, infos.get('href')), extracted_license_statement = infos.get('license', '') ) + package = PackageData.from_data(package_data) if infos.get('source_rpm'): src_rpm = PackageData(name=infos.get('source_rpm')) package.related_packages = [src_rpm] diff --git a/packagedb/tests/test_api.py b/packagedb/tests/test_api.py index ba256f3e..35fce9ab 100644 --- a/packagedb/tests/test_api.py +++ b/packagedb/tests/test_api.py @@ -22,6 +22,7 @@ from minecode.models import PriorityResourceURI from minecode.models import ScannableURI from minecode.utils_test import JsonBasedTesting +from minecode.tests import FIXTURES_REGEN from packagedb.models import Package from packagedb.models import PackageContentType from packagedb.models import PackageSet @@ -208,7 +209,7 @@ def test_api_resource_filter_by_checksums(self): response = self.client.post('/api/resources/filter_by_checksums/', data=data) self.assertEqual(2, response.data['count']) expected = self.get_test_loc('api/resource-filter_by_checksums-expected.json') - self.check_expected_results(response.data['results'], expected, fields_to_remove=["url", "uuid", "package"], regen=False) + self.check_expected_results(response.data['results'], expected, fields_to_remove=["url", "uuid", "package"], regen=FIXTURES_REGEN) class PackageApiTestCase(JsonBasedTesting, TestCase): test_data_dir = os.path.join(os.path.dirname(__file__), 'testfiles') @@ -475,12 +476,12 @@ def test_package_api_filter_by_checksums(self): response = self.client.post('/api/packages/filter_by_checksums/', data=data) self.assertEqual(5, response.data['count']) expected = self.get_test_loc('api/package-filter_by_checksums-expected.json') - self.check_expected_results(response.data['results'], expected, fields_to_remove=["url", "uuid", "resources", "package_sets",], regen=False) + self.check_expected_results(response.data['results'], expected, fields_to_remove=["url", "uuid", "resources", "package_sets",], regen=FIXTURES_REGEN) data["enhance_package_data"] = True enhanced_response = self.client.post('/api/packages/filter_by_checksums/', data=data) self.assertEqual(5, len(enhanced_response.data['results'])) expected = self.get_test_loc('api/package-filter_by_checksums-enhanced-package-data-expected.json') - self.check_expected_results(enhanced_response.data['results'], expected, fields_to_remove=["url", "uuid", "resources", "package_sets",], regen=False) + self.check_expected_results(enhanced_response.data['results'], expected, fields_to_remove=["url", "uuid", "resources", "package_sets",], regen=FIXTURES_REGEN) class PackageApiReindexingTestCase(JsonBasedTesting, TestCase): @@ -721,7 +722,7 @@ def test_package_api_get_enhanced_package(self): response = self.client.get(reverse('api:package-get-enhanced-package-data', args=[self.package3.uuid])) result = response.data expected = self.get_test_loc('api/enhanced_package.json') - self.check_expected_results(result, expected, fields_to_remove=['package_sets'], regen=False) + self.check_expected_results(result, expected, fields_to_remove=['package_sets'], regen=FIXTURES_REGEN) class CollectApiTestCase(JsonBasedTesting, TestCase): test_data_dir = os.path.join(os.path.dirname(__file__), 'testfiles') @@ -807,7 +808,7 @@ def test_package_live(self): 'package_sets', ] - self.check_expected_results(result, expected, fields_to_remove=fields_to_remove, regen=False) + self.check_expected_results(result, expected, fields_to_remove=fields_to_remove, regen=FIXTURES_REGEN) def test_package_api_index_packages_endpoint(self): priority_resource_uris_count = PriorityResourceURI.objects.all().count() diff --git a/purldb-toolkit/src/purldb_toolkit/cli_test_utils.py b/purldb-toolkit/src/purldb_toolkit/cli_test_utils.py index 6883b221..82a9c958 100644 --- a/purldb-toolkit/src/purldb_toolkit/cli_test_utils.py +++ b/purldb-toolkit/src/purldb_toolkit/cli_test_utils.py @@ -15,7 +15,10 @@ import saneyaml from commoncode.system import on_windows from packageurl import PackageURL -from scancode_config import REGEN_TEST_FIXTURES, scancode_root_dir +from scancode_config import scancode_root_dir + + +REGEN_TEST_FIXTURES = os.environ.get("PURLDB_TOOLKIT_TEST_FIXTURES_REGEN", False) def run_scan_plain( @@ -175,7 +178,7 @@ def remove_windows_extra_timeout(scancode_options, timeout=WINDOWS_CI_TIMEOUT): def check_json_scan( expected_file, result_file, - regen=False, + regen=REGEN_TEST_FIXTURES, remove_file_date=False, check_headers=False, remove_uuid=True, @@ -348,7 +351,7 @@ def streamline_scanned_file(scanned_file, remove_file_date=False): def check_jsonlines_scan( expected_file, result_file, - regen=False, + regen=REGEN_TEST_FIXTURES, remove_file_date=False, check_headers=False, remove_uuid=True, diff --git a/requirements.txt b/requirements.txt index 2a039707..98e8e466 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,9 +5,11 @@ attrs==23.2.0 banal==1.0.6 beautifulsoup4==4.12.3 binaryornot==0.4.4 +beartype==0.17.2 bitarray==2.6.0 +bleach==6.1.0 boolean.py==4.0 -certifi==2023.11.17 +certifi==2024.2.2 cffi==1.16.0 chardet==5.2.0 charset-normalizer==3.3.2 @@ -16,23 +18,24 @@ colorama==0.4.6 commoncode==31.0.3 construct==2.10.70 container-inspector==32.0.1 -crispy-bootstrap3==2022.1 +crispy-bootstrap3==2024.1 crontab==1.0.1 -cryptography==42.0.2 -cyclonedx-python-lib==3.1.5 +cryptography==42.0.5 +cyclonedx-python-lib==6.4.3 debian-inspector==31.1.0 Deprecated==1.2.14 -Django==5.0.1 +Django==5.0.3 django-crispy-forms==2.1 django-environ==0.11.2 -django-filter==23.5 +django-filter==24.1 django-probes==1.7.0 django-rq==2.10.1 django-taggit==5.0.1 -djangorestframework==3.14.0 +djangorestframework==3.15.0 dnspython==2.5.0 dockerfile-parse==2.0.1 dparse2==0.7.0 +elf-inspector==0.0.1 email-validator==2.1.0.post1 et-xmlfile==1.1.0 extractcode==31.0.0 @@ -48,26 +51,28 @@ ftfy==6.1.3 ftputil==5.0.4 gemfileparser2==0.9.3 gitdb==4.0.11 -GitPython==3.1.40 +GitPython==3.1.42 gunicorn==21.2.0 hoppr-cyclonedx-models==0.4.10 html5lib==1.1 idna==3.6 -importlib-metadata==7.0.1 +importlib-metadata==7.0.2 inflection==0.5.1 -intbitset==3.0.2 +intbitset==3.1.0 isodate==0.6.1 jaraco.functools==4.0.0 javaproperties==0.8.1 jawa==2.2.0 Jinja2==3.1.3 -jsonschema==4.19.1 +jsonschema==4.21.1 jsonschema-specifications==2023.12.1 jsonstreams==0.6.0 -license-expression==30.2.0 -lxml==4.9.4 +license-expression==30.3.0 +lxml==5.1.0 Markdown==3.5.1 -MarkupSafe==2.1.4 +markdown-it-py==3.0.0 +MarkupSafe==2.1.5 +matchcode-toolkit==4.0.0 mock==5.1.0 more-itertools==10.2.0 natsort==8.2.0 @@ -86,26 +91,26 @@ pkginfo2==30.0.0 pluggy==1.4.0 plugincode==32.0.0 ply==3.11 -psycopg==3.1.17 -psycopg-binary==3.1.17 +psycopg==3.1.18 +psycopg-binary==3.1.18 publicsuffix2==2.20191221 -pyahocorasick==2.0.0 +pyahocorasick==2.1.0 pycparser==2.21 pydantic==1.10.14 PyGithub==1.56 pygmars==0.8.0 Pygments==2.17.2 -pyinstrument==4.6.1 +pyinstrument==4.6.2 PyJWT==2.8.0 -pymaven-patch==0.3.0 +pymaven-patch==0.3.2 PyNaCl==1.5.0 pyparsing==3.1.1 python-dateutil==2.8.2 -python-inspector==0.10.0 +python-inspector==0.11.0 pytz==2023.4 PyYAML==6.0.1 rdflib==7.0.0 -redis==5.0.1 +redis==5.0.3 referencing==0.33.0 regipy==3.1.6 reppy2==0.3.6 @@ -113,20 +118,20 @@ requests==2.31.0 resolvelib==1.0.1 rpds-py==0.17.1 rpm-inspector-rpm==4.16.1.3.210404 -rq==1.15.1 +rq==1.16.1 rq-scheduler==0.13.1 rubymarshal==1.0.3 saneyaml==0.6.0 -scancode-toolkit==32.0.8 -scancodeio==33.0.0 -semantic-version==2.10.0 +scancodeio==34.1.0 +semantic-version==2.8.5 semver==3.0.2 setuptools==65.3.0 six==1.16.0 smmap==5.0.1 sortedcontainers==2.4.0 soupsieve==2.5 -spdx-tools==0.8.1 +source-inspector==0.2.0 +spdx-tools==0.8.2 sqlparse==0.4.4 text-unidecode==1.3 toml==0.10.2 @@ -134,12 +139,13 @@ typecode==30.0.1 typecode-libmagic==5.39.210531 typing_extensions==4.9.0 univers==30.11.0 -urllib3==2.2.0 +uritools==4.0.2 +urllib3==2.2.1 urlpy==0.5 wcwidth==0.2.13 webencodings==0.5.1 wheel==0.37.1 wrapt==1.16.0 -XlsxWriter==3.1.9 +XlsxWriter==3.2.0 xmltodict==0.13.0 zipp==3.17.0 diff --git a/setup.cfg b/setup.cfg index 73a4e61c..c247e990 100644 --- a/setup.cfg +++ b/setup.cfg @@ -39,11 +39,11 @@ install_requires = bitarray == 2.6.0 debian-inspector == 31.1.0 commoncode == 31.0.3 - Django == 5.0.1 + Django == 5.0.3 django-environ == 0.11.2 django-rq == 2.10.1 - djangorestframework == 3.14.0 - django-filter == 23.5 + djangorestframework == 3.15.0 + django-filter == 24.1 drf-spectacular == 0.26.5 fetchcode == 0.4.0 gunicorn == 21.2.0 @@ -52,16 +52,16 @@ install_requires = markdown == 3.5.1 natsort == 8.2.0 packageurl-python == 0.15.0 - psycopg[binary]==3.1.17 + psycopg[binary] == 3.1.18 PyGithub == 1.56 reppy2 == 0.3.6 rq-scheduler == 0.13.1 rubymarshal == 1.0.3 - scancode-toolkit[packages] @ git+https://github.com/nexB/scancode-toolkit.git@c8f854ae1aabf78b19d3fe52e5caca08cc634037 + scancode-toolkit[packages] @ git+https://github.com/nexB/scancode-toolkit.git@684360f2ca01bc676368bc8621eed65065bf0f11 urlpy == 0.5 - matchcode-toolkit == 2.0.1 + matchcode-toolkit == 4.0.0 univers == 30.11.0 - scancodeio == 33.0.0 + scancodeio == 34.1.0 setup_requires = setuptools_scm[toml] >= 4 python_requires = >=3.8