def analyze_dists(root: Path, dist_dir: str) -> Optional[DistInfo]:
    if not dist_dir:
        return None
    name = None
    version = None
    tarball_path = None
    dists = root / dist_dir
    for dist in dists.iterdir():
        if ".tar" in dist.suffixes:
            tmp_path = Path(tempfile.mkdtemp(suffix="tarfile"))
            shutil.unpack_archive(dist, tmp_path)
            tarball_path = tmp_path / dist.name
            # drop '.tar.gz' suffix
            tarball_path = tarball_path.with_suffix("").with_suffix("")
            assert tarball_path.is_dir()
            nam, ver = parse_sdist_filename(dist.name)
        else:
            nam, ver, build, tags = parse_wheel_filename(dist.name)
        if name is not None:
            assert name == nam, f"{nam} != {name} for {dist}"
        else:
            name = nam
        if version is not None:
            assert version == ver, f"{ver} != {version} for {dist}"
        else:
            version = ver

    assert version is not None
    assert name is not None
    assert tarball_path is not None
    return DistInfo(str(version), name, tarball_path)
def test_parse_sdist_invalid_filename(filename):
    with pytest.raises(InvalidSdistFilename):
        parse_sdist_filename(filename)
def test_parse_sdist_filename(filename, name, version):
    assert parse_sdist_filename(filename) == (name, version)