Skip to content

Commit a0da730

Browse files
committed
Cast the Distribution to a CheckedDistribution, capturing the new type signature.
1 parent 7f201a0 commit a0da730

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

twine/package.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,19 @@ def _safe_name(name: str) -> str:
7373
return re.sub("[^A-Za-z0-9.]+", "-", name)
7474

7575

76+
class CheckedDistribution(pkginfo.Distribution):
77+
"""A Distribution whose name and version are confirmed to be defined."""
78+
79+
name: str
80+
version: str
81+
82+
7683
class PackageFile:
7784
def __init__(
7885
self,
7986
filename: str,
8087
comment: Optional[str],
81-
metadata: pkginfo.Distribution,
88+
metadata: CheckedDistribution,
8289
python_version: Optional[str],
8390
filetype: Optional[str],
8491
) -> None:
@@ -88,7 +95,7 @@ def __init__(
8895
self.metadata = metadata
8996
self.python_version = python_version
9097
self.filetype = filetype
91-
self.safe_name = _safe_name(cast(str, metadata.name))
98+
self.safe_name = _safe_name(metadata.name)
9299
self.signed_filename = self.filename + ".asc"
93100
self.signed_basefilename = self.basefilename + ".asc"
94101
self.gpg_signature: Optional[Tuple[str, bytes]] = None
@@ -156,7 +163,9 @@ def from_filename(cls, filename: str, comment: Optional[str]) -> "PackageFile":
156163
else:
157164
py_version = None
158165

159-
return cls(filename, comment, meta, py_version, dtype)
166+
return cls(
167+
filename, comment, cast(CheckedDistribution, meta), py_version, dtype
168+
)
160169

161170
@staticmethod
162171
def _is_unknown_metadata_version(

twine/repository.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,10 @@ def _upload(self, package: package_file.PackageFile) -> requests.Response:
142142

143143
with open(package.filename, "rb") as fp:
144144
data_to_send.append(
145-
("content", (package.basefilename, fp, "application/octet-stream"))
145+
(
146+
"content",
147+
(package.basefilename, fp, "application/octet-stream"),
148+
)
146149
)
147150
encoder = requests_toolbelt.MultipartEncoder(data_to_send)
148151

@@ -223,7 +226,7 @@ def package_is_uploaded(
223226
releases = {}
224227
self._releases_json_data[safe_name] = releases
225228

226-
packages = releases.get(cast(str, package.metadata.version), [])
229+
packages = releases.get(package.metadata.version, [])
227230

228231
for uploaded_package in packages:
229232
if uploaded_package["filename"] == package.basefilename:

0 commit comments

Comments
 (0)