Metadata-Version: 2.1
Name: bazel_runfiles
Home-page: https://github.com/bazelbuild/rules_python
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: Apache Software License
Version: 0.18.0

bazel-runfiles library
======================

This is a Bazel Runfiles lookup library for Bazel-built Python binaries and tests.

Typical Usage
-------------

1.  Add the 'runfiles' dependency along with other third-party dependencies, for example in your
    ``requirements.txt`` file.

2.  Depend on this runfiles library from your build rule, like you would other third-party libraries::

      py_binary(
          name = "my_binary",
          ...
          deps = [requirement("runfiles")],
      )

3.  Import the runfiles library::

      import runfiles  # not "from runfiles import runfiles"

4.  Create a Runfiles object and use rlocation to look up runfile paths::

      r = runfiles.Create()
      ...
      with open(r.Rlocation("my_workspace/path/to/my/data.txt"), "r") as f:
        contents = f.readlines()
        ...

    The code above creates a manifest- or directory-based implementations based
    on the environment variables in os.environ. See `Create()` for more info.

    If you want to explicitly create a manifest- or directory-based
    implementations, you can do so as follows::

      r1 = runfiles.CreateManifestBased("path/to/foo.runfiles_manifest")

      r2 = runfiles.CreateDirectoryBased("path/to/foo.runfiles/")

    If you want to start subprocesses, and the subprocess can't automatically
    find the correct runfiles directory, you can explicitly set the right
    environment variables for them::

      import subprocess
      import runfiles

      r = runfiles.Create()
      env = {}
      ...
      env.update(r.EnvVars())
      p = subprocess.Popen([r.Rlocation("path/to/binary")], env, ...)
