Class: PyPI::Package Private
Overview
This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.
Represents a Python package. This package can be a PyPI package (either by name/version or PyPI distribution URL), or it can be a non-PyPI URL.
Instance Method Summary collapse
- #extras ⇒ Array<String, nil> private
- #initialize(package_string, is_url: false, python_name: "python") ⇒ void constructor private
- #name ⇒ String private
-
#pypi_info(new_version: nil) ⇒ Array<String>?
private
Get name, URL, SHA-256 checksum and latest version for a given package.
- #same_package?(other) ⇒ Boolean private
- #valid_pypi_package? ⇒ Boolean private
- #version ⇒ String? private
- #version=(new_version) ⇒ void private
Constructor Details
#initialize(package_string, is_url: false, python_name: "python") ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
14 15 16 17 18 19 20 |
# File 'utils/pypi.rb', line 14 def initialize(package_string, is_url: false, python_name: "python") @pypi_info = nil @package_string = package_string @is_url = is_url @is_pypi_url = package_string.start_with? PYTHONHOSTED_URL_PREFIX @python_name = python_name end |
Instance Method Details
#extras ⇒ Array<String, nil>
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
29 30 31 32 |
# File 'utils/pypi.rb', line 29 def extras if @extras.blank? @extras end |
#name ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
23 24 25 26 |
# File 'utils/pypi.rb', line 23 def name if @name.blank? @name end |
#pypi_info(new_version: nil) ⇒ Array<String>?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Get name, URL, SHA-256 checksum and latest version for a given package.
This only works for packages from PyPI or from a PyPI URL; packages
derived from non-PyPI URLs will produce nil
here.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'utils/pypi.rb', line 56 def pypi_info(new_version: nil) return unless valid_pypi_package? return @pypi_info if @pypi_info.present? && new_version.blank? new_version ||= version = if new_version.present? "https://pypi.org/pypi/#{name}/#{new_version}/json" else "https://pypi.org/pypi/#{name}/json" end out, _, status = Utils::Curl.curl_output , "--location", "--fail" return unless status.success? begin json = JSON.parse out rescue JSON::ParserError return end sdist = json["urls"].find { |url| url["packagetype"] == "sdist" } return if sdist.nil? @pypi_info = [ PyPI.normalize_python_package(json["info"]["name"]), sdist["url"], sdist["digests"]["sha256"], json["info"]["version"] ] end |
#same_package?(other) ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
98 99 100 101 |
# File 'utils/pypi.rb', line 98 def same_package?(other) # These names are pre-normalized, so we can compare them directly. name == other.name end |
#valid_pypi_package? ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
48 49 50 |
# File 'utils/pypi.rb', line 48 def valid_pypi_package? @is_pypi_url || !@is_url end |
#version ⇒ String?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
35 36 37 38 |
# File 'utils/pypi.rb', line 35 def version if @version.blank? @version end |
#version=(new_version) ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
41 42 43 44 45 |
# File 'utils/pypi.rb', line 41 def version=(new_version) raise ArgumentError, "can't update version for non-PyPI packages" unless valid_pypi_package? @version = new_version end |