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