utils/pypi: refactor instance variables

Signed-off-by: William Woodruff <william@yossarian.net>
This commit is contained in:
William Woodruff 2023-06-05 10:16:19 -04:00
parent 7067f72eb0
commit 0f40e224bd
No known key found for this signature in database

View File

@ -23,17 +23,20 @@ module PyPI
sig { returns(String) } sig { returns(String) }
def name def name
@name ||= basic_metadata[0] basic_metadata if @name.blank?
@name
end end
sig { returns(T::Array[T.nilable(String)]) } sig { returns(T::Array[T.nilable(String)]) }
def extras def extras
@extras ||= basic_metadata[1] basic_metadata if @extras.blank?
@extras
end end
sig { returns(T.nilable(String)) } sig { returns(T.nilable(String)) }
def version def version
@version ||= basic_metadata[2] basic_metadata if @version.blank?
@version
end end
sig { params(new_version: String).void } sig { params(new_version: String).void }
@ -120,11 +123,13 @@ module PyPI
# Returns [name, [extras], version] for this package. # Returns [name, [extras], version] for this package.
def basic_metadata def basic_metadata
@basic_metadata ||= if @is_pypi_url if @is_pypi_url
match = File.basename(@package_string).match(/^(.+)-([a-z\d.]+?)(?:.tar.gz|.zip)$/) match = File.basename(@package_string).match(/^(.+)-([a-z\d.]+?)(?:.tar.gz|.zip)$/)
raise ArgumentError, "Package should be a valid PyPI URL" if match.blank? raise ArgumentError, "Package should be a valid PyPI URL" if match.blank?
[PyPI.normalize_python_package(match[1]), [], match[2]] @name = PyPI.normalize_python_package match[1]
@extras = []
@version = match[2]
elsif @is_url elsif @is_url
ensure_formula_installed!("python") ensure_formula_installed!("python")
@ -146,7 +151,10 @@ module PyPI
end end
metadata = JSON.parse(pip_output)["install"].first["metadata"] metadata = JSON.parse(pip_output)["install"].first["metadata"]
[PyPI.normalize_python_package(metadata["name"]), [], metadata["version"]]
@name = PyPI.normalize_python_package metadata["name"]
@extras = []
@version = metadata["version"]
else else
if @package_string.include? "==" if @package_string.include? "=="
name, version = @package_string.split("==") name, version = @package_string.split("==")
@ -158,11 +166,13 @@ module PyPI
if (match = T.must(name).match(/^(.*?)\[(.+)\]$/)) if (match = T.must(name).match(/^(.*?)\[(.+)\]$/))
name = match[1] name = match[1]
extras = T.must(match[2]).split "," extras = T.must(match[2]).split ","
[PyPI.normalize_python_package(name), extras, version]
else else
[PyPI.normalize_python_package(name), [], version] extras = []
end end
@name = PyPI.normalize_python_package name
@extras = extras
@version = version
end end
end end
end end