diff options
Diffstat (limited to 'docs/Python-for-Formula-Authors.md')
| -rw-r--r-- | docs/Python-for-Formula-Authors.md | 16 | 
1 files changed, 9 insertions, 7 deletions
| diff --git a/docs/Python-for-Formula-Authors.md b/docs/Python-for-Formula-Authors.md index a530dbef7..e4d50e524 100644 --- a/docs/Python-for-Formula-Authors.md +++ b/docs/Python-for-Formula-Authors.md @@ -16,16 +16,16 @@ Applications should unconditionally bundle all of their Python-language dependen  ### Python declarations +Formulae for apps that require Python 3 **should** declare an unconditional dependency on `"python"`. These apps **must** work with the current Homebrew Python 3.x formula. +  Applications that are compatible with Python 2 **should** use the Apple-provided system Python in `/usr/bin` on systems that provide Python 2.7. To do this, declare:  ```ruby -depends_on "python" if MacOS.version <= :snow_leopard +depends_on "python@2" if MacOS.version <= :snow_leopard  ```  No explicit Python dependency is needed on recent OS versions since `/usr/bin` is always in `PATH` for Homebrew formulae; on Leopard and older, the `python` in `PATH` is used if it's at least version 2.7, or else Homebrew's Python 2.7.x is installed. -Formulae for apps that require Python 3 **should** declare an unconditional dependency on `"python3"`. These apps **must** work with the current Homebrew Python 3.x formula. -  ### Installing  Applications should be installed into a Python [virtualenv](https://virtualenv.pypa.io/en/stable/) environment rooted in `libexec`. This prevents the app's Python modules from contaminating the system site-packages and vice versa. @@ -66,7 +66,7 @@ This is exactly the same as writing:  ```ruby  def install    # Create a virtualenv in `libexec`. If your app needs Python 3, make sure that -  # `depends_on "python3"` is declared, and use `virtualenv_create(libexec, "python3")`. +  # `depends_on "python"` is declared, and use `virtualenv_create(libexec, "python")`.    venv = virtualenv_create(libexec)    # Install all of the resources declared on the formula into the virtualenv.    venv.pip_install resources @@ -121,9 +121,9 @@ in case you need to do different things for different resources.  ## Bindings -Build bindings with the system Python by default (don't add an option) and they should be usable with any binary-compatible Python. If that isn't the case, it's an upstream bug; [here's some advice for resolving it](http://blog.tim-smith.us/2015/09/python-extension-modules-os-x/). +To add bindings for Python 3, please add `depends_on "python"`. -To add bindings for Python 3, please add `depends_on "python3" => :optional` and make the bindings conditional on `build.with?("python3")`. +Build Python 2 bindings with the system Python by default (don't add an option) and they should be usable with any binary-compatible Python. If that isn't the case, it's an upstream bug; [here's some advice for resolving it](http://blog.tim-smith.us/2015/09/python-extension-modules-os-x/).  ### Dependencies @@ -153,7 +153,9 @@ Sometimes we have to `inreplace` a `Makefile` to use our prefix for the Python b  ### Python declarations -Python 2 libraries do not need a `depends_on "python"` declaration; they will be built with the system Python, but should still be usable with any other Python 2.7. If this is not the case, it is an upstream bug; [here is some advice for resolving it](http://blog.tim-smith.us/2015/09/python-extension-modules-os-x/). Libraries built for Python 3 should include `depends_on "python3"`, which will bottle against Homebrew's Python 3.x. If a library supports both Python 2.x and Python 3.x, the `"python3"` dependency should be `:optional`. Python 2.x libraries must function when they are installed against either the system Python or brewed Python. +Libraries built for Python 3 should include `depends_on "python"`, which will bottle against Homebrew's Python 3.x. Python 2.x libraries must function when they are installed against either the system Python or brewed Python. + +Python 2 libraries do not need a `depends_on "python@2"` declaration; they will be built with the system Python, but should still be usable with any other Python 2.7. If this is not the case, it is an upstream bug; [here is some advice for resolving it](http://blog.tim-smith.us/2015/09/python-extension-modules-os-x/).  ### Installing | 
