(filename: str)
| 144 | |
| 145 | |
| 146 | def parse_sdist_filename(filename: str) -> Tuple[NormalizedName, Version]: |
| 147 | if filename.endswith(".tar.gz"): |
| 148 | file_stem = filename[: -len(".tar.gz")] |
| 149 | elif filename.endswith(".zip"): |
| 150 | file_stem = filename[: -len(".zip")] |
| 151 | else: |
| 152 | raise InvalidSdistFilename( |
| 153 | f"Invalid sdist filename (extension must be '.tar.gz' or '.zip'):" |
| 154 | f" {filename}" |
| 155 | ) |
| 156 | |
| 157 | # We are requiring a PEP 440 version, which cannot contain dashes, |
| 158 | # so we split on the last dash. |
| 159 | name_part, sep, version_part = file_stem.rpartition("-") |
| 160 | if not sep: |
| 161 | raise InvalidSdistFilename(f"Invalid sdist filename: {filename}") |
| 162 | |
| 163 | name = canonicalize_name(name_part) |
| 164 | |
| 165 | try: |
| 166 | version = Version(version_part) |
| 167 | except InvalidVersion as e: |
| 168 | raise InvalidSdistFilename( |
| 169 | f"Invalid sdist filename (invalid version): {filename}" |
| 170 | ) from e |
| 171 | |
| 172 | return (name, version) |
nothing calls this directly
no test coverage detected