Created
June 26, 2024 14:18
-
-
Save jaraco/22c22564a9fe6fdb137ef0a217511030 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/twine/package.py b/twine/package.py | |
index 0845105..9361ba9 100644 | |
--- a/twine/package.py | |
+++ b/twine/package.py | |
@@ -18,6 +18,7 @@ import logging | |
import os | |
import re | |
import subprocess | |
+import typing | |
import warnings | |
from typing import ( | |
Any, | |
@@ -73,12 +74,17 @@ def _safe_name(name: str) -> str: | |
return re.sub("[^A-Za-z0-9.]+", "-", name) | |
+class CheckedDistribution(pkginfo.Distribution, typing.Protocol): | |
+ name: str | |
+ version: str | |
+ | |
+ | |
class PackageFile: | |
def __init__( | |
self, | |
filename: str, | |
comment: Optional[str], | |
- metadata: pkginfo.Distribution, | |
+ metadata: CheckedDistribution, | |
python_version: Optional[str], | |
filetype: Optional[str], | |
) -> None: | |
@@ -88,7 +94,7 @@ class PackageFile: | |
self.metadata = metadata | |
self.python_version = python_version | |
self.filetype = filetype | |
- self.safe_name = _safe_name(cast(str, metadata.name)) | |
+ self.safe_name = _safe_name(metadata.name) | |
self.signed_filename = self.filename + ".asc" | |
self.signed_basefilename = self.basefilename + ".asc" | |
self.gpg_signature: Optional[Tuple[str, bytes]] = None | |
@@ -156,7 +162,9 @@ class PackageFile: | |
else: | |
py_version = None | |
- return cls(filename, comment, meta, py_version, dtype) | |
+ return cls( | |
+ filename, comment, cast(CheckedDistribution, meta), py_version, dtype | |
+ ) | |
@staticmethod | |
def _is_unknown_metadata_version( | |
diff --git a/twine/repository.py b/twine/repository.py | |
index 32c5470..bf3078e 100644 | |
--- a/twine/repository.py | |
+++ b/twine/repository.py | |
@@ -128,22 +128,21 @@ class Repository: | |
def _upload(self, package: package_file.PackageFile) -> requests.Response: | |
data = package.metadata_dictionary() | |
- data.update( | |
- { | |
- # action | |
- ":action": "file_upload", | |
- "protocol_version": "1", | |
- } | |
- ) | |
+ data.update({ | |
+ # action | |
+ ":action": "file_upload", | |
+ "protocol_version": "1", | |
+ }) | |
data_to_send = self._convert_data_to_list_of_tuples(data) | |
print(f"Uploading {package.basefilename}") | |
with open(package.filename, "rb") as fp: | |
- data_to_send.append( | |
- ("content", (package.basefilename, fp, "application/octet-stream")) | |
- ) | |
+ data_to_send.append(( | |
+ "content", | |
+ (package.basefilename, fp, "application/octet-stream"), | |
+ )) | |
encoder = requests_toolbelt.MultipartEncoder(data_to_send) | |
with rich.progress.Progress( | |
@@ -223,7 +222,7 @@ class Repository: | |
releases = {} | |
self._releases_json_data[safe_name] = releases | |
- packages = releases.get(cast(str, package.metadata.version), []) | |
+ packages = releases.get(package.metadata.version, []) | |
for uploaded_package in packages: | |
if uploaded_package["filename"] == package.basefilename: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment