Skip to content

Commit 70ff686

Browse files
committed
Merge latest
Signed-off-by: Philippe Ombredanne <pombredanne@nexb.com>
2 parents fab36af + 761d8ab commit 70ff686

220 files changed

Lines changed: 2090 additions & 1075 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/source/contribute/contrib_dev.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,20 @@ These are enabled by adding a ``--test-suite`` option to the pytest command.
109109
extensive data-driven and data validations (for package, copyright and license
110110
detection)
111111

112+
In some cases we need to regenerate test data when expected behavious/result data
113+
structures change, and we have an environement variable to regenerate test data.
114+
`SCANCODE_REGEN_TEST_FIXTURES` is present in `scancode_config` and this can be
115+
set to regenerate test data for specific tests like this:
112116

117+
``SCANCODE_REGEN_TEST_FIXTURES=yes pytest -vvs tests/packagedcode/test_package_models.py``
118+
119+
This command will only regenerate test data for only the tests in `test_package_models.py`,
120+
and we can further specify the tests to regen by using more pytest options like `--lf` and
121+
`-k test_instances`.
122+
123+
If test data is regenerated, it is important to review the diff for test files and
124+
carefully go through all of it to make sure there are no unintended changes there,
125+
and then commit all the regenerated test data.
113126

114127
.. _scancode_toolkit_development_thirdparty_libraries:
115128

src/packagedcode/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
from packagedcode import jar_manifest
3030
from packagedcode import maven
3131
from packagedcode import misc
32-
from packagedcode import models
3332
from packagedcode import msi
3433
from packagedcode import npm
3534
from packagedcode import nuget

src/packagedcode/bower.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,9 @@ def parse(cls, location):
108108
)
109109
)
110110

111-
yield cls(
111+
yield models.PackageData(
112+
datasource_id=cls.datasource_id,
113+
type=cls.default_package_type,
112114
name=name,
113115
description=description,
114116
version=version,

src/packagedcode/cocoapods.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ def parse(cls, location):
187187
if isinstance(pod, dict):
188188
for main_pod, _dep_pods in pod.items():
189189

190-
purl, xreq = parse_dep_requirements(main_pod).to_string()
190+
purl, xreq = parse_dep_requirements(main_pod)
191191

192192
dependencies.append(
193193
models.DependentPackage(
@@ -203,7 +203,7 @@ def parse(cls, location):
203203

204204
elif isinstance(pod, str):
205205

206-
purl, xreq = parse_dep_requirements(pod).to_string()
206+
purl, xreq = parse_dep_requirements(pod)
207207

208208
dependencies.append(
209209
models.DependentPackage(
@@ -218,7 +218,7 @@ def parse(cls, location):
218218
)
219219

220220
yield models.PackageData(
221-
datasouource_id=cls.datasource_id,
221+
datasource_id=cls.datasource_id,
222222
type=cls.default_package_type,
223223
primary_language=cls.default_primary_language,
224224
dependencies=dependencies,

src/packagedcode/freebsd.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ def parse(cls, location):
5151
freebsd_manifest = saneyaml.load(loc)
5252

5353
package_data = models.PackageData(
54+
datasource_id=cls.datasource_id,
55+
type=cls.default_package_type,
5456
qualifiers=dict(
5557
arch=freebsd_manifest.get('arch'),
5658
origin=freebsd_manifest.get('origin'),

src/packagedcode/haxe.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,39 +63,40 @@ def parse(cls, location):
6363
}
6464
"""
6565
with io.open(location, encoding='utf-8') as loc:
66-
package_data = json.load(loc)
66+
json_data = json.load(loc)
6767

68-
name = package_data.get('name')
69-
version = package_data.get('version')
68+
name = json_data.get('name')
69+
version = json_data.get('version')
7070

7171
package_data = models.PackageData(
7272
datasource_id=cls.datasource_id,
7373
type=cls.default_package_type,
7474
name=name,
7575
version=version,
76-
homepage_url=package_data.get('url'),
77-
declared_license=package_data.get('license'),
78-
keywords=package_data.get('tags'),
79-
description=package_data.get('description'),
76+
homepage_url=json_data.get('url'),
77+
declared_license=json_data.get('license'),
78+
keywords=json_data.get('tags'),
79+
description=json_data.get('description'),
80+
primary_language=cls.default_primary_language,
8081
)
8182

8283
if name and version:
83-
download_url = f'https://lib.haxe.org/p//{name}/{version}/download/'
84+
download_url = f'https://lib.haxe.org/p/{name}/{version}/download/'
8485
package_data.repository_download_url = download_url
8586
package_data.download_url = download_url
8687

8788
if name:
8889
package_data.repository_homepage_url = f'https://lib.haxe.org/p/{name}'
8990

90-
for contrib in package_data.get('contributors', []):
91+
for contrib in json_data.get('contributors', []):
9192
party = models.Party(
9293
type=models.party_person,
9394
name=contrib,
9495
role='contributor',
9596
url='https://lib.haxe.org/u/{}'.format(contrib))
9697
package_data.parties.append(party)
9798

98-
for dep_name, dep_version in package_data.get('dependencies', {}).items():
99+
for dep_name, dep_version in json_data.get('dependencies', {}).items():
99100
dep_version = dep_version and dep_version.strip()
100101
is_resolved = bool(dep_version)
101102
dep_purl = PackageURL(

src/packagedcode/maven.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1153,7 +1153,8 @@ def parse(
11531153

11541154
scm = pom.scm or {}
11551155
urls = build_vcs_and_code_view_urls(scm)
1156-
urls .update(get_urls(
1156+
print(urls)
1157+
urls.update(get_urls(
11571158
namespace=group_id,
11581159
name=artifact_id, version=version,
11591160
qualifiers=qualifiers,

src/packagedcode/opam.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class OpamFileHandler(models.DatafileHandler):
2222
datasource_id = 'opam_file'
2323
path_patterns = ('*opam',)
2424
default_package_type = 'opam'
25-
default_primary_language = 'OCaml'
25+
default_primary_language = 'Ocaml'
2626
description = 'Ocaml Opam file'
2727
documentation_url = 'https://opam.ocaml.org/doc/Manual.html#Common-file-format'
2828

@@ -39,8 +39,8 @@ def parse(cls, location):
3939
for dep in deps:
4040
package_dependencies.append(
4141
models.DependentPackage(
42-
purl=dep.to_string(),
43-
extracted_requirement=dep.version,
42+
purl=dep["purl"],
43+
extracted_requirement=dep["version"],
4444
scope='dependency',
4545
is_runtime=True,
4646
is_optional=False,
@@ -91,6 +91,8 @@ def parse(cls, location):
9191
)
9292

9393
yield models.PackageData(
94+
datasource_id=cls.datasource_id,
95+
type=cls.default_package_type,
9496
name=name,
9597
version=version,
9698
vcs_url=vcs_url,
@@ -106,7 +108,8 @@ def parse(cls, location):
106108
parties=parties,
107109
dependencies=package_dependencies,
108110
api_data_url=api_data_url,
109-
repository_homepage_url=repository_homepage_url
111+
repository_homepage_url=repository_homepage_url,
112+
primary_language=cls.default_primary_language
110113
)
111114

112115
@classmethod
@@ -262,7 +265,10 @@ def parse_opam_from_text(text):
262265
if parsed_dep:
263266
version = parsed_dep.group('version').strip('{ } ').replace('"', '')
264267
name = parsed_dep.group('name').strip()
265-
value.append(PackageURL(type='opam', name=name, version=version))
268+
value.append(dict(
269+
purl=PackageURL(type='opam', name=name).to_string(),
270+
version=version,
271+
))
266272
opam_data[key] = value
267273

268274
elif key == 'src': # Get multiline src

src/packagedcode/phpcomposer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def parse(cls, location):
7070
with io.open(location, encoding='utf-8') as loc:
7171
package_json = json.load(loc)
7272

73-
yield build_package_data(cls, package_json)
73+
yield build_package_data(package_json)
7474

7575

7676
def get_repository_homepage_url(namespace, name):
@@ -174,11 +174,11 @@ def parse(cls, location):
174174
package_data = json.load(loc)
175175

176176
packages = [
177-
build_package_data(cls, p)
177+
build_package_data(p)
178178
for p in package_data.get('packages', [])
179179
]
180180
packages_dev = [
181-
build_package_data(cls, p)
181+
build_package_data(p)
182182
for p in package_data.get('packages-dev', [])
183183
]
184184

src/packagedcode/pypi.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ def get_file_references(dist):
355355
"""
356356
Yield FileReference found in a ``dist`` importlib_metadata.Distribution.
357357
"""
358-
if not dist:
358+
if not dist.files:
359359
return
360360

361361
for filepath in dist.files or []:

0 commit comments

Comments
 (0)