Module: Language::Python
- Defined in:
- language/python.rb
Overview
Helper functions for Python formulae.
Defined Under Namespace
Modules: Shebang, Virtualenv
Class Method Summary
collapse
Class Method Details
.each_python(build, &block) ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'language/python.rb', line 28
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)
end
block&.call python, version
end
ENV["PYTHONPATH"] = original_pythonpath
end
|
.homebrew_site_packages(python = "python3.7") ⇒ Object
16
17
18
|
# File 'language/python.rb', line 16
def self.homebrew_site_packages(python = "python3.7")
HOMEBREW_PREFIX/site_packages(python)
end
|
.in_sys_path?(python, path) ⇒ Boolean
65
66
67
68
69
70
71
|
# File 'language/python.rb', line 65
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) ⇒ Object
9
10
11
12
13
14
|
# File 'language/python.rb', line 9
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
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'language/python.rb', line 48
def self.reads_brewed_pth_files?(python)
return unless homebrew_site_packages(python).directory?
return unless homebrew_site_packages(python).writable_real?
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
|
.setup_install_args(prefix, python = "python3") ⇒ Object
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# File 'language/python.rb', line 73
def self.setup_install_args(prefix, python = "python3")
shim = <<~PYTHON
import setuptools, tokenize
__file__ = 'setup.py'
exec(compile(getattr(tokenize, 'open', open)(__file__).read()
.replace('\\r\\n', '\\n'), __file__, 'exec'))
PYTHON
%W[
-c
#{shim}
--no-user-cfg
install
--prefix=#{prefix}
--install-scripts=#{prefix}/bin
--install-lib=#{prefix/site_packages(python)}
--single-version-externally-managed
--record=installed.txt
]
end
|
.site_packages(python = "python3.7") ⇒ Object
20
21
22
23
24
25
26
|
# File 'language/python.rb', line 20
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) ⇒ Object
61
62
63
|
# File 'language/python.rb', line 61
def self.user_site_packages(python)
Pathname.new(`#{python} -c "import site; print(site.getusersitepackages())"`.chomp)
end
|