MCPcopy
hub / github.com/python-poetry/poetry / create_new_package

Function create_new_package

tests/conftest.py:541–604  ·  view source on GitHub ↗
(
        name: str,
        version: str | None = None,
        dependencies: list[Dependency] | None = None,
        extras: dict[str, list[str]] | None = None,
        merge_extras: bool = False,
    )

Source from the content-addressed store, hash-verified

539 """
540
541 def create_new_package(
542 name: str,
543 version: str | None = None,
544 dependencies: list[Dependency] | None = None,
545 extras: dict[str, list[str]] | None = None,
546 merge_extras: bool = False,
547 ) -> Package:
548 version = version or "1.0"
549 package = get_package(name, version)
550
551 package_extras: dict[NormalizedName, list[Dependency]] = {}
552
553 for extra, extra_dependencies in (extras or {}).items():
554 extra = canonicalize_name(extra)
555
556 if extra not in package_extras:
557 package_extras[extra] = []
558
559 for extra_dependency_spec in extra_dependencies:
560 extra_dependency = Dependency.create_from_pep_508(extra_dependency_spec)
561 extra_dependency._optional = True
562 extra_dependency.marker = extra_dependency.marker.intersect(
563 parse_marker(f"extra == '{extra}'")
564 )
565
566 if extra_dependency.name != package.name:
567 assert extra_dependency.constraint.allows(package.version)
568
569 # if it is not a self-referencing dependency, make sure we add it to the repo
570 try:
571 pkg = repo.package(extra_dependency.name, package.version)
572 except PackageNotFoundError:
573 pkg = get_package(extra_dependency.name, str(package.version))
574 repo.add_package(pkg)
575
576 extra_dependency.constraint = parse_constraint(f"^{pkg.version}")
577
578 if merge_extras:
579 # if requirement already exists in the package,
580 # update the marker
581 for requirement in package.requires:
582 if (
583 requirement.name == extra_dependency.name
584 and requirement.is_optional()
585 ):
586 requirement.marker = requirement.marker.union(
587 extra_dependency.marker
588 )
589 break
590 else:
591 package.add_dependency(extra_dependency)
592 else:
593 package.add_dependency(extra_dependency)
594
595 package_extras[extra].append(extra_dependency)
596
597 package.extras = package_extras
598

Callers

nothing calls this directly

Calls 5

get_packageFunction · 0.90
allowsMethod · 0.80
packageMethod · 0.45
add_packageMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…