Класс: PyPI::Package Приватный
- Наследует:
- Object
- Object
- PyPI::Package
- Подключает:
- Utils::Output::Mixin
- Определён в:
- utils/pypi.rb
Обзор
Этот класс является частью приватного API. Этот класс можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого класса, поскольку он может быть удалён или изменён без предупреждения.
Представляет пакет Python. Это может быть пакет PyPI (указанный по имени и версии или URL дистрибутива PyPI) либо URL, не относящийся к PyPI.
Краткое описание методов экземпляра свернуть
- #extras ⇒ Array<String>? приватный
- #initialize(package_string, is_url: false, python_name: "python") ⇒ void конструктор приватный
- #name ⇒ String? приватный
- #pypi_info(new_version: nil, ignore_errors: false) ⇒ Array<String>? приватный
Получает имя, URL, контрольную сумму SHA-256 и последнюю версию указанного пакета.
- #same_package?(other) ⇒ Boolean приватный
- #valid_pypi_package? ⇒ Boolean приватный
- #version ⇒ String? приватный
- #version=(new_version) ⇒ void приватный
Методы, подключённые из Utils::Output::Mixin
#issue_reporting_message, #odebug, #odeprecated, #odie, #odisabled, #ofail, #oh1, #oh1_title, #ohai, #ohai_title, #onoe, #opoo, #opoo_outside_github_actions, #opoo_without_github_actions_annotation, #pretty_deprecated, #pretty_disabled, #pretty_duration, #pretty_install_status, #pretty_installed, #pretty_uninstalled, #pretty_upgradable, #pretty_warning
Подробное описание конструкторов
#initialize(package_string, is_url: false, python_name: "python") ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
24 25 26 27 28 29 30 | # File 'utils/pypi.rb', line 24 def initialize(package_string, is_url: false, python_name: "python") @pypi_info = T.let(nil, T.nilable(T::Array[String])) @package_string = package_string @is_url = is_url @is_pypi_url = T.let(package_string.start_with?(PYTHONHOSTED_URL_PREFIX), T::Boolean) @python_name = python_name end |
Подробное описание методов экземпляра
#extras ⇒ Array<String>?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
39 40 41 42 | # File 'utils/pypi.rb', line 39 def extras if @extras.blank? @extras end |
#name ⇒ String?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
33 34 35 36 | # File 'utils/pypi.rb', line 33 def name if @name.blank? @name end |
#pypi_info(new_version: nil, ignore_errors: false) ⇒ Array<String>?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Получает имя, URL, контрольную сумму SHA-256 и последнюю версию указанного пакета. Работает только с пакетами из PyPI или по URL PyPI; для пакетов, полученных из URL, не относящихся к PyPI, здесь будет возвращено nil.
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | # File 'utils/pypi.rb', line 69 def pypi_info(new_version: nil, ignore_errors: false) 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 result = Utils::Curl.curl_output(, "--location", "--fail") return unless result.status.success? begin json = JSON.parse(result.stdout) rescue JSON::ParserError return end dist = json["urls"].find do |url| url["packagetype"] == "sdist" end # If there isn't an sdist, we use the first pure Python3 or universal wheel if dist.nil? dist = json["urls"].find do |url| url["filename"].match?("[.-]py3[^-]*-none-any.whl$") end end if dist.nil? return ["", "", "", "", "no suitable source distribution on PyPI"] if ignore_errors onoe "#{name} exists on PyPI but lacks a suitable source distribution" return end @pypi_info = [ PyPI.normalize_python_package(json["info"]["name"]), dist["url"], dist["digests"]["sha256"], json["info"]["version"] ] end |
#same_package?(other) ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
128 129 130 131 | # File 'utils/pypi.rb', line 128 def same_package?(other) # These names are pre-normalized, so we can compare them directly. name == other.name end |
#valid_pypi_package? ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
58 59 60 | # File 'utils/pypi.rb', line 58 def valid_pypi_package? @is_pypi_url || !@is_url end |
#version ⇒ String?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
45 46 47 48 | # File 'utils/pypi.rb', line 45 def version if @version.blank? @version end |
#version=(new_version) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
51 52 53 54 55 | # File 'utils/pypi.rb', line 51 def version=(new_version) raise ArgumentError, "can't update version for non-PyPI packages" unless valid_pypi_package? @version = T.let(new_version, T.nilable(String)) end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/PyPI/Package.html