Spec-Zone.ru › Homebrew

Модуль: Language::Python

Расширяет:
Utils::Output::Mixin
Определён в:
language/python.rb

Обзор

Вспомогательные функции для формул Python.

Определено в пространстве имён

Модули: Shebang, Virtualenv

Краткое описание методов класса свернуть

  • .each_python(build, &block) ⇒ void приватный
  • .homebrew_site_packages(python = "python3.7") ⇒ Pathname приватный
  • .in_sys_path?(python, path) ⇒ Boolean приватный
  • .major_minor_version(python) ⇒ Version? приватный
  • .reads_brewed_pth_files?(python) ⇒ Boolean приватный
  • .site_packages(python = "python3.7") ⇒ String приватный
  • .user_site_packages(python) ⇒ Pathname приватный

Методы, включённые из 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

Подробное описание методов класса

.each_python(build, &block) ⇒ void

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

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

Параметры:

  • build (BuildOptions, Tab)
  • block (T.proc.params(python: String, version: T.nilable(Version)).void, nil)


43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'language/python.rb', line 43

def self.each_python(build, &block)
  original_pythonpath = ENV.fetch("PYTHONPATH", nil)
  pythons = { "python@3" => "python3",
              "pypy"     => "pypy",
              "pypy3"    => "pypy3" }
  pythons.each do |python_formula, python|
    python_formula = Formulary.factory(python_formula)
    next if build.without? python_formula.to_s

    version = major_minor_version python
    ENV["PYTHONPATH"] = if python_formula.latest_version_installed?
      nil
    else
      homebrew_site_packages(python).to_s
    end
    block&.call python, version
  end
  ENV["PYTHONPATH"] = original_pythonpath
end

.homebrew_site_packages(python = "python3.7") ⇒ Pathname

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

Параметры:

  • python (String, Pathname) (по умолчанию: "python3.7")

Возвращает:

  • (Pathname)


24
25
26
# File 'language/python.rb', line 24

def self.homebrew_site_packages(python = "python3.7")
  HOMEBREW_PREFIX/site_packages(python)
end

.in_sys_path?(python, path) ⇒ Boolean

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

Параметры:

  • python (String, Pathname)
  • path (String, Pathname)

Возвращает:

  • (Boolean)


83
84
85
86
87
88
89
# File 'language/python.rb', line 83

def self.in_sys_path?(python, path)
  script = <<~PYTHON
    import os, sys
    [os.path.realpath(p) for p in sys.path].index(os.path.realpath("#{path}"))
  PYTHON
  quiet_system python, "-c", script
end

.major_minor_version(python) ⇒ Version?

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

Параметры:

  • python (String, Pathname)

Возвращает:

  • (Version, nil)


16
17
18
19
20
21
# File 'language/python.rb', line 16

def self.major_minor_version(python)
  version = `#{python} --version 2>&1`.chomp[/(\d\.\d+)/, 1]
  return unless version

  Version.new(version)
end

.reads_brewed_pth_files?(python) ⇒ Boolean

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

Параметры:

  • python (String, Pathname)

Возвращает:

  • (Boolean)


64
65
66
67
68
69
70
71
72
73
74
75
# File 'language/python.rb', line 64

def self.reads_brewed_pth_files?(python)
  return false unless homebrew_site_packages(python).directory?
  return false unless homebrew_site_packages(python).writable?

  probe_file = homebrew_site_packages(python)/"homebrew-pth-probe.pth"
  begin
    probe_file.atomic_write("import site; site.homebrew_was_here = True")
    with_homebrew_path { quiet_system python, "-c", "import site; assert(site.homebrew_was_here)" }
  ensure
    probe_file.unlink if probe_file.exist?
  end
end

.site_packages(python = "python3.7") ⇒ String

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

Параметры:

  • python (String, Pathname) (по умолчанию: "python3.7")

Возвращает:

  • (String)


29
30
31
32
33
34
35
# File 'language/python.rb', line 29

def self.site_packages(python = "python3.7")
  if (python == "pypy") || (python == "pypy3")
    "site-packages"
  else
    "lib/python#{major_minor_version python}/site-packages"
  end
end

.user_site_packages(python) ⇒ Pathname

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

Параметры:

  • python (String, Pathname)

Возвращает:

  • (Pathname)


78
79
80
# File 'language/python.rb', line 78

def self.user_site_packages(python)
  Pathname.new(`#{python} -c "import site; print(site.getusersitepackages())"`.chomp)
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Language/Python.html

Spec-Zone.ru

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