text: """Repository rule for Python autoconfiguration.
  
  `python_configure` depends on the following environment variables:
  
    * `PYTHON_BIN_PATH`: location of python binary.
  """
  
  _PYTHON_BIN_PATH = "PYTHON_BIN_PATH"
  
  def _tpl(repository_ctx, tpl, substitutions = {}, out = None):
      if not out:
          out = tpl
      repository_ctx.template(
          out,
          Label("//third_party/py:%s.tpl" % tpl),
          substitutions,
      )
  
  def _fail(msg):
      """Output failure message when auto configuration fails."""
      red = "\033[0;31m"
      no_color = "\033[0m"
      fail("%sPython Configuration Error:%s %s\n" % (red, no_color, msg))
  
  def _get_python_bin(repository_ctx):
      """Gets the python bin path."""
      python_bin = repository_ctx.os.environ.get(_PYTHON_BIN_PATH)
      if python_bin != None:
          return python_bin
      python_bin_path = repository_ctx.which("python")
      if python_bin_path != None:
          return str(python_bin_path)
      _fail("Cannot find python in PATH, please make sure " +
            "python is installed and add its directory in PATH, or --define " +
            "%s='/something/else'.\nPATH=%s" % (
                _PYTHON_BIN_PATH,
                repository_ctx.os.environ.get("PATH", ""),
            ))
  
  def _create_local_python_repository(repository_ctx):
      """Creates the repository containing files set up to build with Python."""
      python_bin = _get_python_bin(repository_ctx)
      _tpl(repository_ctx, "BUILD", {
          "%{PYTHON_BIN_PATH}": python_bin,
      })
  
  def _python_autoconf_impl(repository_ctx):
      """Implementation of the python_autoconf repository rule."""
      _create_local_python_repository(repository_ctx)
  
  python_configure = repository_rule(
      implementation = _python_autoconf_impl,
      environ = [
          _PYTHON_BIN_PATH,
      ],
  )
  """Detects and configures the local Python toolchain.
  
  Add the following to your WORKSPACE FILE:
  
  ```python
  load("//third_party/py:python_configure.bzl", "python_configure")
  
  python_configure(name = "local_config_py_toolchain")
  
  register_toolchains("@local_config_py_toolchain//:py_toolchain")
  ```
  
  Args:
    name: A unique name for this workspace rule.
  """
  