MCPcopy Create free account
hub / github.com/aboutcode-org/scancode-toolkit / parse

Method parse

src/packagedcode/opam.py:34–114  ·  view source on GitHub ↗
(cls, location, package_only=False)

Source from the content-addressed store, hash-verified

32
33 @classmethod
34 def parse(cls, location, package_only=False):
35 opams = parse_opam(location)
36
37 package_dependencies = []
38 deps = opams.get('depends') or []
39 for dep in deps:
40 package_dependencies.append(
41 models.DependentPackage(
42 purl=dep["purl"],
43 extracted_requirement=dep["version"],
44 scope='dependency',
45 is_runtime=True,
46 is_optional=False,
47 is_pinned=False,
48 )
49 )
50
51 name = opams.get('name')
52 version = opams.get('version')
53
54 homepage_url = opams.get('homepage')
55 download_url = opams.get('src')
56 vcs_url = opams.get('dev-repo')
57 bug_tracking_url = opams.get('bug-reports')
58 extracted_license_statement = opams.get('license')
59 sha1 = opams.get('sha1')
60 md5 = opams.get('md5')
61 sha256 = opams.get('sha256')
62 sha512 = opams.get('sha512')
63 repository_homepage_url = get_repository_homepage_url(name)
64 api_data_url = get_api_data_url(name, version)
65
66 short_desc = opams.get('synopsis') or ''
67 long_desc = opams.get('description') or ''
68 if long_desc == short_desc:
69 long_desc = None
70 descriptions = [d for d in (short_desc, long_desc) if d and d.strip()]
71 description = '\n'.join(descriptions)
72
73 parties = []
74 authors = opams.get('authors') or []
75 for author in authors:
76 parties.append(
77 models.Party(
78 type=models.party_person,
79 name=author,
80 role='author'
81 )
82 )
83 maintainers = opams.get('maintainer') or []
84 for maintainer in maintainers:
85 parties.append(
86 models.Party(
87 type=models.party_person,
88 email=maintainer,
89 role='maintainer'
90 )
91 )

Callers

nothing calls this directly

Calls 7

parse_opamFunction · 0.85
from_dataMethod · 0.80
get_api_data_urlFunction · 0.70
getMethod · 0.65
appendMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected