| 129 | |
| 130 | |
| 131 | def build_upload_entries( |
| 132 | dist_dir: Path, tag: str |
| 133 | ) -> tuple[list[UploadEntry], list[str]]: |
| 134 | build_datetime = infer_build_datetime(dist_dir) |
| 135 | dest_names = parse_shasums(dist_dir / "SHA256SUMS") |
| 136 | |
| 137 | uploads: list[UploadEntry] = [] |
| 138 | missing: list[str] = [] |
| 139 | |
| 140 | for dest_name in dest_names: |
| 141 | source_name = destination_to_source_name(dest_name, tag, build_datetime) |
| 142 | if not (dist_dir / source_name).exists(): |
| 143 | missing.append(source_name) |
| 144 | continue |
| 145 | uploads.append(UploadEntry(source_name=source_name, dest_name=dest_name)) |
| 146 | |
| 147 | return uploads, missing |
| 148 | |
| 149 | |
| 150 | def make_s3_client() -> tuple[Boto3S3Client, TransferConfig]: |