Пример #1
0
def archive(request, test_zip_path, test_tar_gz_path, test_tar_bz2_path):
    if request.param == "tar":
        return Archive(path=test_tar_gz_path)
    elif request.param == "bz2":
        return Archive(path=test_tar_bz2_path)
    else:
        return Archive(path=test_zip_path)
Пример #2
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,
        )
Пример #3
0
 def _build_package(self, build_directory: Path, name: str,
                    version: str) -> Archive:
     subprocess.run(["python", "setup.py", "sdist"],
                    cwd=str(build_directory),
                    check=True)
     tar_gz_path = build_directory / "dist" / f"{name}-{version}.tar.gz"
     return Archive(path=str(tar_gz_path))
Пример #4
0
def distribution_archive_for_jsonschema(pip, download_dir,
                                        requirements_for_jsonschema):
    pip.download_sources(requirements_for_jsonschema, download_dir)
    for file_name in os.listdir(download_dir):
        if "jsonschema" in file_name:
            return Archive(path=os.path.join(download_dir, file_name))
    raise Exception("Could not download source distribution for `jsonschema`")
Пример #5
0
 def from_archive(
     source_distribution,
     archive: Archive,
     logger: Logger,
     requirement_parser: RequirementParser,
 ) -> "SourceDistribution":
     with archive.extracted_files() as extraction_directory:
         extracted_files = [
             os.path.join(directory_path, file_name) for directory_path, _,
             file_names in os.walk(extraction_directory)
             for file_name in file_names
         ]
         metadata = source_distribution.metadata_from_uncompressed_distribution(
             extracted_files, archive)
         name: str = metadata.get("name")
         if isinstance(name, Header):
             raise DistributionNotDetected(
                 "Could not parse source distribution metadata, name detection failed"
             )
         pyproject_toml = source_distribution.get_pyproject_toml(
             name, extracted_files, logger, requirement_parser)
         setup_cfg = source_distribution.get_setup_cfg(
             name, extracted_files, logger, requirement_parser)
     return source_distribution(
         name=name,
         pyproject_toml=pyproject_toml,
         setup_cfg=setup_cfg,
         logger=logger,
         requirement_parser=requirement_parser,
     )
def test_that_trying_to_create_source_distribution_from_random_zip_throws(
        test_zip_path, logger: Logger, requirement_parser: RequirementParser):
    archive = Archive(path=test_zip_path)
    with pytest.raises(DistributionNotDetected):
        SourceDistribution.from_archive(
            archive,
            logger,
            requirement_parser=requirement_parser,
        )
Пример #7
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,
        )
Пример #8
0
def test_build_dependencies_for_invalid_deps_logs_warning(
        data_directory, current_platform, logger: Logger):
    spacy_distribution_path = os.path.join(data_directory,
                                           "spacy-2.1.0.tar.gz")
    archive = Archive(spacy_distribution_path)

    dist = SourceDistribution.from_archive(archive, logger)

    assert "WARNING:" not in get_logger_output(logger)
    dist.build_dependencies(current_platform)
    assert "WARNING:" in get_logger_output(logger)
Пример #9
0
def test_invalid_build_dependencies_for_setupcfg_package_logs_warning(
        data_directory, current_platform, logger):
    distribution_path = os.path.join(data_directory, "setupcfg-package",
                                     "setupcfg-package.tar.gz")
    archive = Archive(distribution_path)

    dist = SourceDistribution.from_archive(archive, logger)

    assert "WARNING:" not in get_logger_output(logger)
    dist.build_dependencies(current_platform)
    assert "WARNING:" in get_logger_output(logger)
Пример #10
0
def source_distribution_archive(pip, requirement, download_dir,
                                current_platform):
    requirement_set = RequirementSet(current_platform)
    requirement_set.add(requirement)
    pip.download_sources(requirement_set, download_dir)
    for file_name in os.listdir(download_dir):
        if file_name.startswith(requirement.name()):
            return Archive(path=os.path.join(download_dir, file_name))
    else:
        raise Exception(
            "Could not download source distribution for `{}`".format(
                requirement.name()))
Пример #11
0
 def get_uninspected_source_distributions(self) -> List[SourceDistribution]:
     archives = [
         Archive(path=path) for path in list_files(self.download_directory)
         if path not in self.inspected_source_distribution_files
     ]
     distributions = list()
     for archive in archives:
         try:
             distributions.append(
                 SourceDistribution.from_archive(archive, self.logger))
         except DistributionNotDetected:
             continue
     return distributions
Пример #12
0
def flit_distribution(pip, project_dir, download_dir, flit_requirements,
                      logger):
    pip.download_sources(flit_requirements, download_dir)
    archives = [
        Archive(path=os.path.join(download_dir, filename))
        for filename in os.listdir(download_dir)
    ]
    distributions = list(
        map(lambda archive: SourceDistribution.from_archive(archive, logger),
            archives))
    for distribution in distributions:
        if distribution.name == "flit":
            return distribution
    raise Exception("Could not download source distribution for `flit`")
Пример #13
0
 def get_uninspected_source_distributions(self) -> List[SourceDistribution]:
     archives = [
         Archive(path=str(path))
         for path in self._download_directory.list_files()
         if path not in self.inspected_source_distribution_files
     ]
     distributions = list()
     for archive in archives:
         try:
             distribution = SourceDistribution.from_archive(
                 archive,
                 self.logger,
                 requirement_parser=self.requirement_parser)
         except DistributionNotDetected:
             continue
         distributions.append(distribution)
     return distributions
Пример #14
0
 def from_archive(
     source_distribution,
     archive: Archive,
     logger: Logger,
     requirement_parser: RequirementParser,
 ) -> "SourceDistribution":
     with archive.extracted_files() as extraction_directory:
         first_level_paths = os.listdir(extraction_directory)
         if len(first_level_paths) != 1:
             raise DistributionNotDetected(
                 f"Multiple package directories or files extracted from {archive}"
             )
         package_dir = os.path.join(extraction_directory, first_level_paths[0])
         if not os.path.isdir(package_dir):
             raise DistributionNotDetected(
                 f"No package directory could be extracted from source distribution {archive}"
             )
         extracted_files = [
             os.path.join(package_dir, file_name)
             for file_name in os.listdir(package_dir)
             if os.path.isfile(os.path.join(package_dir, file_name))
         ]
         setup_cfg = source_distribution.get_setup_cfg(
             extracted_files, logger, requirement_parser
         )
         metadata = source_distribution._get_package_metadata(package_dir)
         name = source_distribution._get_name(setup_cfg, metadata, archive)
         pyproject_toml = source_distribution.get_pyproject_toml(
             name, extracted_files, logger, requirement_parser
         )
     return source_distribution(
         name=name,
         pyproject_toml=pyproject_toml,
         setup_cfg=setup_cfg,
         logger=logger,
         requirement_parser=requirement_parser,
     )
Пример #15
0
def distribution_archive_for_jsonschema(data_directory):
    return Archive(
        path=os.path.join(data_directory, "jsonschema-3.0.1.tar.gz"))
Пример #16
0
def six_source_distribution_archive(data_directory):
    return Archive(path=os.path.join(data_directory, "six-1.12.0.tar.gz"))
Пример #17
0
def source_distribution_archive(request, data_directory):
    return Archive(path=os.path.join(data_directory, request.param))
Пример #18
0
def six_source_distribution_archive(pip, download_dir, six_requirements):
    pip.download_sources(six_requirements, download_dir)
    for file_name in os.listdir(download_dir):
        if "six" in file_name:
            return Archive(path=os.path.join(download_dir, file_name))
    raise Exception("Could not create source archive for `six`")
Пример #19
0
def flit_distribution(data_directory, logger):
    archive = Archive(os.path.join(data_directory, "flit-1.3.tar.gz"))
    return SourceDistribution.from_archive(archive, logger)
def flit_distribution(data_directory, logger: Logger,
                      requirement_parser: RequirementParser):
    archive = Archive(os.path.join(data_directory, "flit-1.3.tar.gz"))
    return SourceDistribution.from_archive(
        archive, logger, requirement_parser=requirement_parser)
Пример #21
0
def test_that_we_can_inspect_the_content_of_a_wheel(
        setupcfg_package_wheel_path: str):
    archive = Archive(path=setupcfg_package_wheel_path)
    with archive.extracted_files() as directory:
        assert "setupcfg_package-1.0.dist-info" in os.listdir(directory)
Пример #22
0
def test_that_we_can_inspect_the_content_of_an_archive(archive: Archive):
    with archive.extracted_files() as directory:
        files = tuple(os.listdir(directory))
        assert files == ("test.txt", )