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

Function dependency_mapper

src/packagedcode/cargo.py:333–369  ·  view source on GitHub ↗

Yield DependentPackage collected from a list of cargo dependencies

(dependencies, scope='dependencies')

Source from the content-addressed store, hash-verified

331
332
333def dependency_mapper(dependencies, scope='dependencies'):
334 """
335 Yield DependentPackage collected from a list of cargo dependencies
336 """
337 is_runtime = not scope.endswith(('dev-dependencies', 'build-dependencies'))
338 for name, requirement in dependencies.items():
339 extra_data = {}
340 extracted_requirement = None
341 if isinstance(requirement, str):
342 # plain version requirement
343 is_optional = False
344 extracted_requirement = requirement
345
346 elif isinstance(requirement, dict):
347 # complex requirement, we extract version if available
348 # everything else is just dumped in extra data
349 # here {workspace = true} means dependency version
350 # should be inherited
351 is_optional = requirement.pop('optional', False)
352 if 'version' in requirement:
353 extracted_requirement = requirement.get('version')
354
355 if requirement:
356 extra_data = requirement
357
358 yield models.DependentPackage(
359 purl=PackageURL(
360 type='cargo',
361 name=name,
362 ).to_string(),
363 extracted_requirement=extracted_requirement,
364 scope=scope,
365 is_runtime=is_runtime,
366 is_optional=is_optional,
367 is_pinned=False,
368 extra_data=extra_data,
369 )
370
371
372def get_parties(person_names, party_role):

Callers 2

parseMethod · 0.85

Calls 3

to_stringMethod · 0.80
getMethod · 0.65
popMethod · 0.45

Tested by

no test coverage detected