@@ -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+
7683class 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 (
0 commit comments