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

Method parse

src/packagedcode/pypi.py:474–520  ·  view source on GitHub ↗
(cls, location, package_only=False)

Source from the content-addressed store, hash-verified

472
473 @classmethod
474 def parse(cls, location, package_only=False):
475 with open(location, "rb") as fp:
476 package_data = tomllib.load(fp)
477 project_data = package_data.get("project")
478 if not project_data:
479 return
480
481 name = project_data.get('name')
482 version = project_data.get('version')
483 description = project_data.get('description') or ''
484 description = description.strip()
485
486 urls, extra_data = get_urls(metainfo=project_data, name=name, version=version)
487
488 extracted_license_statement, license_file = get_declared_license(project_data)
489 if license_file:
490 extra_data['license_file'] = license_file
491
492 dependencies = []
493 parsed_dependencies = get_requires_dependencies(
494 requires=project_data.get("dependencies", []),
495 )
496 dependencies.extend(parsed_dependencies)
497
498 for dep_type, deps in project_data.get("optional-dependencies", {}).items():
499 parsed_dependencies = get_requires_dependencies(
500 requires=deps,
501 default_scope=dep_type,
502 is_optional=True,
503 )
504 dependencies.extend(parsed_dependencies)
505
506 package_data = dict(
507 datasource_id=cls.datasource_id,
508 type=cls.default_package_type,
509 primary_language='Python',
510 name=name,
511 version=version,
512 extracted_license_statement=extracted_license_statement,
513 description=description,
514 keywords=get_keywords(project_data),
515 parties=get_pyproject_toml_parties(project_data),
516 dependencies=dependencies,
517 extra_data=extra_data,
518 **urls,
519 )
520 yield models.PackageData.from_data(package_data, package_only)
521
522
523def is_poetry_pyproject_toml(location):

Callers

nothing calls this directly

Calls 8

get_declared_licenseFunction · 0.85
get_keywordsFunction · 0.85
from_dataMethod · 0.80
get_urlsFunction · 0.70
getMethod · 0.65
loadMethod · 0.45

Tested by

no test coverage detected