Exemple #1
0
def test_can_create_wheel_from_valid_directory(
    extracted_six_package,
    current_platform,
    logger: Logger,
    requirement_parser: RequirementParser,
):
    Wheel.from_wheel_directory_path(extracted_six_package, current_platform,
                                    logger, requirement_parser)
Exemple #2
0
    def import_wheel(self, wheel: Wheel,
                     requirement_parser: RequirementParser) -> None:
        dependent = requirement_parser.parse(wheel.name)
        for runtime_dependency in wheel.runtime_dependencies(
                wheel.target_platform()):

            self.set_runtime_dependency(dependent, runtime_dependency)
        for build_dependency in wheel.build_dependencies(
                wheel.target_platform()):
            self.set_buildtime_dependency(dependent, build_dependency)
Exemple #3
0
def test_can_add_build_dependencies_to_wheel(
    wheel: Wheel,
    current_platform: TargetPlatform,
    requirement_parser: RequirementParser,
):
    build_dependencies = RequirementSet(current_platform)
    build_dependencies.add(requirement_parser.parse("dep1"))
    build_dependencies.add(requirement_parser.parse("dep2"))
    wheel.add_build_dependencies(build_dependencies)
    assert "dep1" in wheel.build_dependencies(current_platform)
    assert "dep2" in wheel.build_dependencies(current_platform)
def test_can_understand_wheel_dependecies(
        current_platform: TargetPlatform,
        requirement_parser: RequirementParser):
    runtime_dependencies = RequirementSet(current_platform)
    runtime_dependency = requirement_parser.parse("runtime_dependency")
    runtime_dependencies.add(runtime_dependency)
    build_dependencies = RequirementSet(current_platform)
    build_dependency = requirement_parser.parse("build_dependency")
    build_dependencies.add(build_dependency)
    wheel = Wheel(
        name="testpackage",
        version="",
        deps=runtime_dependencies,
        target_platform=current_platform,
        license="",
        homepage="",
        description="",
        build_dependencies=build_dependencies,
    )
    requirement = requirement_parser.parse("testpackage")
    dependency_graph = DependencyGraph()
    dependency_graph.import_wheel(wheel, requirement_parser)

    assert dependency_graph.is_buildtime_dependency(requirement,
                                                    build_dependency)
    assert dependency_graph.is_runtime_dependency(requirement,
                                                  runtime_dependency)
Exemple #5
0
def flit_wheel(data_directory, current_platform, logger, requirement_parser):
    path = os.path.join(data_directory, "flit-1.3-py3-none-any.whl")
    with Archive(path=path).extracted_files() as wheel_directory:
        return Wheel.from_wheel_directory_path(
            os.path.join(wheel_directory, "flit-1.3.dist-info"),
            current_platform,
            logger,
            requirement_parser,
        )
Exemple #6
0
def extracted_six_package(six_requirements, wheel_builder,
                          default_environment):
    wheels = wheel_builder.build(six_requirements)
    for wheel_directory in wheels:
        wheel = Wheel.from_wheel_directory_path(wheel_directory,
                                                default_environment)
        if wheel.name == "six":
            return wheel_directory
    raise Exception('Error when trying to build wheel for "six == 1.12.0"')
Exemple #7
0
def wheel():
    return Wheel(
        name="test-wheel",
        version="1.0",
        deps=set(),
        homepage="https://example.test",
        license="",
        description="description",
    )
Exemple #8
0
def extracted_six_package(six_requirements, wheel_builder, current_platform,
                          logger, requirement_parser):
    wheels = wheel_builder.build(six_requirements)
    for wheel_directory in wheels:
        wheel = Wheel.from_wheel_directory_path(wheel_directory,
                                                current_platform, logger,
                                                requirement_parser)
        if wheel.name == "six":
            return wheel_directory
    raise Exception('Error when trying to build wheel for "six == 1.12.0"')
Exemple #9
0
def wheel(current_platform):
    build_dependencies = RequirementSet(current_platform)
    dependencies = RequirementSet(current_platform)
    return Wheel(
        name="test-wheel",
        version="1.0",
        deps=dependencies,
        homepage="https://example.test",
        license="",
        description="description",
        build_dependencies=build_dependencies,
        target_platform=current_platform,
    )
Exemple #10
0
def setupcfg_package_wheel(
    setupcfg_package_wheel_path: str,
    logger: Logger,
    requirement_parser: RequirementParser,
    current_platform: TargetPlatform,
) -> Wheel:
    archive = Archive(path=setupcfg_package_wheel_path)
    with archive.extracted_files() as directory:
        return Wheel.from_wheel_directory_path(
            os.path.join(directory, "setupcfg_package-1.0.dist-info"),
            current_platform,
            logger,
            requirement_parser,
        )
    def main(
        self,
        wheel_paths: Iterable[str],
        target_platform: TargetPlatform,
        source_distributions: Dict[str, SourceDistribution],
    ) -> List[Wheel]:
        """Extract packages metadata from wheels dist-info folders.
        """
        output = ""
        metadata: List[Wheel] = []

        self.logger.info(
            "-- sources ---------------------------------------------------------------"
        )
        for name, source in self.sources.items():
            self.logger.info("{name}, {source}".format(name=name, source=name))
        self.logger.info(
            "--------------------------------------------------------------------------"
        )

        wheels = []
        for wheel_path in wheel_paths:

            self.logger.debug("|-> from %s" % os.path.basename(wheel_path))

            wheel_metadata = Wheel.from_wheel_directory_path(
                wheel_path, target_platform, self.logger,
                self.requirement_parser)
            if not wheel_metadata:
                continue

            if wheel_metadata.name in source_distributions:
                source_distribution = source_distributions[wheel_metadata.name]
                wheel_metadata.add_build_dependencies(
                    source_distribution.build_dependencies(target_platform))
                wheel_metadata.package_format = source_distribution.package_format

            wheels.append(wheel_metadata)

            self.logger.debug(
                "-- wheel_metadata --------------------------------------------------------"
            )
            self.logger.debug(
                json.dumps(wheel_metadata.to_dict(), sort_keys=True, indent=4))
            self.logger.debug(
                "--------------------------------------------------------------------------"
            )

            self.process_wheel(wheel_metadata)
        return wheels
Exemple #12
0
def test_can_create_wheel_from_valid_directory(extracted_six_package,
                                               default_environment):
    Wheel.from_wheel_directory_path(extracted_six_package, default_environment)
Exemple #13
0
def test_that_setupcfg_package_wheel_contains_pytest_as_testing_dependency(
    setupcfg_package_wheel: Wheel, ):
    assert "pytest" in setupcfg_package_wheel.dependencies(extras=["testing"])
Exemple #14
0
def test_that_setupcfg_package_wheel_contains_requests_as_dependency(
    setupcfg_package_wheel: Wheel, ):
    assert "requests" in setupcfg_package_wheel.dependencies()
Exemple #15
0
def test_that_to_dict_is_json_serializable(wheel: Wheel):
    json.dumps(wheel.to_dict())
Exemple #16
0
def test_that_setupcfg_package_wheel_does_not_contain_pytest_as_non_testing_dependency(
    setupcfg_package_wheel: Wheel, ):
    assert "pytest" not in setupcfg_package_wheel.dependencies()
Exemple #17
0
    def main(
        self,
        wheel_paths: Iterable[str],
        default_environment: Any,
        wheel_cache_dir: str,
        additional_dependencies: Dict[str, RequirementSet],
    ) -> List[Wheel]:
        """Extract packages metadata from wheels dist-info folders.
        """
        output = ""
        metadata: List[Wheel] = []

        if self.verbose > 1:
            click.echo(
                "-- sources ---------------------------------------------------------------"
            )
            for name, source in self.sources.items():
                click.echo("{name}, {source}".format(name=name, source=name))
            click.echo(
                "--------------------------------------------------------------------------"
            )

        wheels = []
        try:
            for wheel_path in wheel_paths:

                output += "|-> from %s" % os.path.basename(wheel_path)
                if self.verbose > 0:
                    click.echo("|-> from %s" % os.path.basename(wheel_path))

                wheel_metadata = Wheel.from_wheel_directory_path(
                    wheel_path, default_environment)
                if not wheel_metadata:
                    continue

                if wheel_metadata.name in TO_IGNORE:
                    if self.verbose > 0:
                        click.echo("    SKIPPING")
                    continue
                if wheel_metadata.name in additional_dependencies:
                    wheel_metadata.add_build_dependencies(
                        map(
                            lambda dependency: dependency.name(),
                            additional_dependencies[wheel_metadata.name],
                        ))

                wheels.append(wheel_metadata)

                if self.verbose > 1:
                    click.echo(
                        "-- wheel_metadata --------------------------------------------------------"
                    )
                    click.echo(
                        json.dumps(wheel_metadata.to_dict(),
                                   sort_keys=True,
                                   indent=4))
                    click.echo(
                        "--------------------------------------------------------------------------"
                    )

                self.process_wheel(wheel_metadata)
        except Exception as e:
            if self.verbose == 0:
                click.echo(output)
            raise

        return wheels