(cls, location, package_only=False)
| 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 |
nothing calls this directly
no test coverage detected