@@ -162,7 +162,7 @@ def parse_metadata(project, version, distribution):
162
162
return package
163
163
164
164
165
- def get_project_metadata_from_artifact ( filename , artifact ):
165
+ def get_project_metadata_from_file ( file ):
166
166
"""
167
167
Gets the metadata of a Python Package.
168
168
@@ -171,32 +171,33 @@ def get_project_metadata_from_artifact(filename, artifact):
171
171
extensions = list (DIST_EXTENSIONS .keys ())
172
172
# Iterate through extensions since splitext does not support things like .tar.gz
173
173
# If no supported extension is found, ValueError is raised here
174
- pkg_type_index = [filename .endswith (ext ) for ext in extensions ].index (True )
174
+ pkg_type_index = [file . name .endswith (ext ) for ext in extensions ].index (True )
175
175
packagetype = DIST_EXTENSIONS [extensions [pkg_type_index ]]
176
- # Copy file to a temp directory under the user provided filename, we do this
177
- # because pkginfo validates that the filename has a valid extension before
178
- # reading it
179
- with tempfile .NamedTemporaryFile ("wb" , dir = "." , suffix = filename ) as temp_file :
180
- shutil .copyfileobj (artifact .file , temp_file )
181
- temp_file .flush ()
182
- metadata = DIST_TYPES [packagetype ](temp_file .name )
183
- metadata .packagetype = packagetype
184
- if packagetype == "sdist" :
185
- metadata .python_version = "source"
186
- else :
187
- pyver = ""
188
- regex = DIST_REGEXES [extensions [pkg_type_index ]]
189
- if bdist_name := regex .match (filename ):
190
- pyver = bdist_name .group ("pyver" ) or ""
191
- metadata .python_version = pyver
192
- return metadata
176
+
177
+ metadata = DIST_TYPES [packagetype ](file .name )
178
+ metadata .packagetype = packagetype
179
+ if packagetype == "sdist" :
180
+ metadata .python_version = "source"
181
+ else :
182
+ pyver = ""
183
+ regex = DIST_REGEXES [extensions [pkg_type_index ]]
184
+ if bdist_name := regex .match (file .name ):
185
+ pyver = bdist_name .group ("pyver" ) or ""
186
+ metadata .python_version = pyver
187
+ return metadata
193
188
194
189
195
190
def artifact_to_python_content_data (filename , artifact , domain = None ):
196
191
"""
197
192
Takes the artifact/filename and returns the metadata needed to create a PythonPackageContent.
198
193
"""
199
- metadata = get_project_metadata_from_artifact (filename , artifact )
194
+ # Copy file to a temp directory under the user provided filename, we do this
195
+ # because pkginfo validates that the filename has a valid extension before
196
+ # reading it
197
+ with tempfile .NamedTemporaryFile ("wb" , dir = "." , suffix = filename ) as temp_file :
198
+ shutil .copyfileobj (artifact .file , temp_file )
199
+ temp_file .flush ()
200
+ metadata = get_project_metadata_from_file (temp_file )
200
201
data = parse_project_metadata (vars (metadata ))
201
202
data ["sha256" ] = artifact .sha256
202
203
data ["filename" ] = filename
0 commit comments