Exemplo n.º 1
0
    def _validate_license(self, license: str) -> str:
        from poetry.core.spdx.helpers import license_by_id

        if license:
            license_by_id(license)

        return license
Exemplo n.º 2
0
def test_license_by_id_is_case_insensitive() -> None:
    license = license_by_id("mit")

    assert license.id == "MIT"

    license = license_by_id("miT")

    assert license.id == "MIT"
Exemplo n.º 3
0
def test_license_by_id() -> None:
    license = license_by_id("MIT")

    assert license.id == "MIT"
    assert license.name == "MIT License"
    assert license.is_osi_approved
    assert not license.is_deprecated

    license = license_by_id("LGPL-3.0-or-later")

    assert license.id == "LGPL-3.0-or-later"
    assert license.name == "GNU Lesser General Public License v3.0 or later"
    assert license.is_osi_approved
    assert not license.is_deprecated
Exemplo n.º 4
0
def test_classifier():
    license = license_by_id("lgpl-3.0-or-later")

    assert license.classifier == (
        "License :: "
        "OSI Approved :: "
        "GNU Lesser General Public License v3 or later (LGPLv3+)")
Exemplo n.º 5
0
def test_license_by_id_custom() -> None:
    license = license_by_id("Custom")

    assert license.id == "Custom"
    assert license.name == "Custom"
    assert not license.is_osi_approved
    assert not license.is_deprecated
Exemplo n.º 6
0
def test_license_by_id_with_full_name():
    license = license_by_id("GNU Lesser General Public License v3.0 or later")

    assert license.id == "LGPL-3.0-or-later"
    assert license.name == "GNU Lesser General Public License v3.0 or later"
    assert license.is_osi_approved
    assert not license.is_deprecated
Exemplo n.º 7
0
    def license(self, value: str | License | None) -> None:
        from poetry.core.spdx.helpers import license_by_id
        from poetry.core.spdx.license import License

        if value is None or isinstance(value, License):
            self._license = value
        else:
            self._license = license_by_id(value)
Exemplo n.º 8
0
    def license(self, value: Optional[Union[str, "License"]]) -> None:
        from poetry.core.spdx.helpers import license_by_id
        from poetry.core.spdx.license import License  # noqa

        if value is None:
            self._license = value
        elif isinstance(value, License):
            self._license = value
        else:
            self._license = license_by_id(value)
Exemplo n.º 9
0
def test_classifier_no_classifer():
    license = license_by_id("Leptonica")

    assert license.classifier == "License :: Other/Proprietary License"
Exemplo n.º 10
0
def test_classifier_no_classifer_osi_approved():
    license = license_by_id("LiLiQ-R-1.1")

    assert license.classifier == "License :: OSI Approved"
Exemplo n.º 11
0
def test_classifier_name():
    license = license_by_id("lgpl-3.0-or-later")

    assert (license.classifier_name ==
            "GNU Lesser General Public License v3 or later (LGPLv3+)")
Exemplo n.º 12
0
def test_classifier_name_no_classifer_osi_approved():
    license = license_by_id("LiLiQ-R-1.1")

    assert license.classifier_name is None
Exemplo n.º 13
0
def test_proprietary_license() -> None:
    license = license_by_id("Proprietary")

    assert license.classifier == "License :: Other/Proprietary License"
Exemplo n.º 14
0
    def configure_package(
        cls,
        package: ProjectPackage,
        config: dict[str, Any],
        root: Path,
        with_groups: bool = True,
    ) -> ProjectPackage:
        from poetry.core.packages.dependency import Dependency
        from poetry.core.packages.dependency_group import MAIN_GROUP
        from poetry.core.packages.dependency_group import DependencyGroup
        from poetry.core.spdx.helpers import license_by_id

        package.root_dir = root

        for author in config["authors"]:
            package.authors.append(combine_unicode(author))

        for maintainer in config.get("maintainers", []):
            package.maintainers.append(combine_unicode(maintainer))

        package.description = config.get("description", "")
        package.homepage = config.get("homepage")
        package.repository_url = config.get("repository")
        package.documentation_url = config.get("documentation")
        try:
            license_: License | None = license_by_id(config.get("license", ""))
        except ValueError:
            license_ = None

        package.license = license_
        package.keywords = config.get("keywords", [])
        package.classifiers = config.get("classifiers", [])

        if "readme" in config:
            if isinstance(config["readme"], str):
                package.readmes = (root / config["readme"], )
            else:
                package.readmes = tuple(root / readme
                                        for readme in config["readme"])

        if "platform" in config:
            package.platform = config["platform"]

        if "dependencies" in config:
            cls._add_package_group_dependencies(
                package=package,
                group=MAIN_GROUP,
                dependencies=config["dependencies"])

        if with_groups and "group" in config:
            for group_name, group_config in config["group"].items():
                group = DependencyGroup(group_name,
                                        optional=group_config.get(
                                            "optional", False))
                cls._add_package_group_dependencies(
                    package=package,
                    group=group,
                    dependencies=group_config["dependencies"],
                )

        if with_groups and "dev-dependencies" in config:
            cls._add_package_group_dependencies(
                package=package,
                group="dev",
                dependencies=config["dev-dependencies"])

        extras = config.get("extras", {})
        for extra_name, requirements in extras.items():
            package.extras[extra_name] = []

            # Checking for dependency
            for req in requirements:
                req = Dependency(req, "*")

                for dep in package.requires:
                    if dep.name == req.name:
                        dep.in_extras.append(extra_name)
                        package.extras[extra_name].append(dep)

                        break

        if "build" in config:
            build = config["build"]
            if not isinstance(build, dict):
                build = {"script": build}
            package.build_config = build or {}

        if "include" in config:
            package.include = []

            for include in config["include"]:
                if not isinstance(include, dict):
                    include = {"path": include}

                formats = include.get("format", [])
                if formats and not isinstance(formats, list):
                    formats = [formats]
                include["format"] = formats

                package.include.append(include)

        if "exclude" in config:
            package.exclude = config["exclude"]

        if "packages" in config:
            package.packages = config["packages"]

        # Custom urls
        if "urls" in config:
            package.custom_urls = config["urls"]

        return package
Exemplo n.º 15
0
def test_license_by_id_invalid() -> None:
    with pytest.raises(ValueError):
        license_by_id("")
Exemplo n.º 16
0
def test_proprietary_license():
    license = license_by_id("Proprietary")

    assert "License :: Other/Proprietary License" == license.classifier
Exemplo n.º 17
0
def test_custom_license():
    license = license_by_id("Amazon Software License")

    assert "License :: Other/Proprietary License" == license.classifier
Exemplo n.º 18
0
def test_classifier_name_no_classifer() -> None:
    license = license_by_id("Leptonica")

    assert license.classifier_name == "Other/Proprietary License"