Spec-Zone.ru › Homebrew

Класс: 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. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • package_string (String)
  • is_url (Boolean) (по умолчанию: false)
  • python_name (String) (по умолчанию: "python")


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. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Array<String>, nil)


39
40
41
42
# File 'utils/pypi.rb', line 39

def extras
  basic_metadata if @extras.blank?
  @extras
end

#name ⇒ String?

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (String, nil)


33
34
35
36
# File 'utils/pypi.rb', line 33

def name
  basic_metadata 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.

Параметры:

  • new_version (String, Version, nil) (по умолчанию: nil)
  • ignore_errors (Boolean, nil) (по умолчанию: false)

Возвращает:

  • (Array<String>, 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
  metadata_url = 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(metadata_url, "--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. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • other (Package)

Возвращает:

  • (Boolean)


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. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


58
59
60
# File 'utils/pypi.rb', line 58

def valid_pypi_package?
  @is_pypi_url || !@is_url
end

#version ⇒ String?

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (String, nil)


45
46
47
48
# File 'utils/pypi.rb', line 45

def version
  basic_metadata if @version.blank?
  @version
end

#version=(new_version) ⇒ void

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Этот метод возвращает неопределённое значение.

Параметры:

  • new_version (String)

Вызывает исключение:

  • (ArgumentError)


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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API