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

Method parse

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

Source from the content-addressed store, hash-verified

948
949 @classmethod
950 def parse(cls, location, package_only=False):
951 with open(location, "rb") as fp:
952 toml_data = tomllib.load(fp)
953
954 project_data = toml_data.get("project")
955 if not project_data:
956 return
957
958 name = project_data.get('name')
959 version = project_data.get('version')
960 description = project_data.get('description') or ''
961 description = description.strip()
962
963 urls, extra_data = get_urls(metainfo=project_data, name=name, version=version)
964
965 extracted_license_statement, license_file = get_declared_license(project_data)
966 if license_file:
967 extra_data['license_file'] = license_file
968
969 requires_python = project_data.get('requires-python')
970 if requires_python:
971 extra_data['python_requires'] = requires_python
972
973 dependencies = []
974 dependencies.extend(
975 get_requires_dependencies(requires=project_data.get("dependencies", []))
976 )
977
978 for dep_type, deps in project_data.get("optional-dependencies", {}).items():
979 dependencies.extend(
980 get_requires_dependencies(
981 requires=deps,
982 default_scope=dep_type,
983 is_optional=True,
984 )
985 )
986
987 dependencies.extend(
988 get_dependency_group_dependencies(toml_data.get("dependency-groups", {}))
989 )
990
991 package_data = dict(
992 datasource_id=cls.datasource_id,
993 type=cls.default_package_type,
994 primary_language='Python',
995 name=name,
996 version=version,
997 extracted_license_statement=extracted_license_statement,
998 description=description,
999 keywords=get_keywords(project_data),
1000 parties=get_pyproject_toml_parties(project_data),
1001 dependencies=dependencies,
1002 extra_data=extra_data,
1003 **urls,
1004 )
1005 yield models.PackageData.from_data(package_data, package_only)
1006
1007

Callers

nothing calls this directly

Calls 9

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