Skip to content

Commit ea3bdd4

Browse files
authored
Merge pull request #941 from gerrod3/md-util-rewrite
Rewrite metadata extraction function to take in a file object
2 parents 2a40538 + 68dd933 commit ea3bdd4

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

pulp_python/app/utils.py

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ def parse_metadata(project, version, distribution):
162162
return package
163163

164164

165-
def get_project_metadata_from_artifact(filename, artifact):
165+
def get_project_metadata_from_file(filename):
166166
"""
167167
Gets the metadata of a Python Package.
168168
@@ -173,30 +173,31 @@ def get_project_metadata_from_artifact(filename, artifact):
173173
# If no supported extension is found, ValueError is raised here
174174
pkg_type_index = [filename.endswith(ext) for ext in extensions].index(True)
175175
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](filename)
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(filename):
185+
pyver = bdist_name.group("pyver") or ""
186+
metadata.python_version = pyver
187+
return metadata
193188

194189

195190
def artifact_to_python_content_data(filename, artifact, domain=None):
196191
"""
197192
Takes the artifact/filename and returns the metadata needed to create a PythonPackageContent.
198193
"""
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.name)
200201
data = parse_project_metadata(vars(metadata))
201202
data["sha256"] = artifact.sha256
202203
data["filename"] = filename

0 commit comments

Comments
 (0)