python_library()
This is liable to change in the future.
Apython_library() rule is used to group together Python source files and resources to package them into a PEX using a top-level python_binary rule.Arguments
name(required) #The short name for this build target.
srcs(defaults to[]) #The set of Python (
.py) files to include in this library.platform_srcs(defaults to[]) #Python-platform-specific source files. These should be specified as a list of pairs where the first element in each pair is an un-anchored regex against which the platform name is matched, and the second element is a list of source files. The regex should use
java.util.regex.Patternsyntax. The platform name is a Python platform flavor defined in the[python]section of.buckconfig.resources(defaults to[]) #Static files to be packaged along with the Python sources. These resources can be accessed at runtime using the pkg_resources module distributed with Python's setuptools.
platform_resources(defaults to[]) #Python-platform-specific resource files. These should be specified as a list of pairs where the first element in each pair is an un-anchored regex against which the platform name is matched, and the second element is a list of resource files. The regex should use
java.util.regex.Patternsyntax. The platform name is a Python platform flavor defined in the[python]section of.buckconfig.base_module(defaults toNone) #The package in which the specified source files and resources should reside in their final location in the top-level binary. If unset, Buck uses the project-relative directory that contains the BUCK file.
deps(defaults to[]) #Other
python_library()rules that listsrcsfrom which this rule imports modules.exclude_deps_from_merged_linking(defaults toFalse) #When linking the top-level binary with a
merged, do not merge or re-link any native transitive deps of this library. This is useful if this library wraps prebuilt native extensions which cannot be re-linked as part of library merging.[python].native_link_strategyvisibility(defaults to[]) #List of build target patterns that identify the build rules that can include this rule as a dependency, for example, by listing it in their
depsorexported_depsattributes. For more information, see visibility.licenses(defaults to[]) #Set of license files for this library. To get the list of license files for a given build rule and all of its dependencies, you can use
buck query.labels(defaults to[]) #Set of arbitrary strings which allow you to annotate a build rule with tags that can be searched for over an entire dependency tree using
buck query attrfilter().
Examples
Include Python source files and resource files.
# BUCK 
# A rule that includes a single Python file.
python_library(
  name = 'fileutil',
  srcs = ['fileutil.py'],
  deps = [
    '//third_party/python-magic:python-magic',
  ],
)
# A rule that uses glob() to include all Python source files in the
# directory in which the rule is defined. The rule also specifies a 
# resource file that gets packaged with the source file.
python_library(
  name = 'testutil',
  srcs = glob(['testutil/**/*.py']),
  resources = [
    'testdata.dat',
  ],
)
Use the platform_srcs and platform_resources arguments to pull in source files and resources only when building for a specific Python platform.
; .buckconfig [python#py2] interpreter = /usr/bin/python2.7 [python#py3] interpreter = /usr/bin/python3.4
# BUCK
python_library(
  name = 'utils',
  platform_srcs = [
    ('py2', ['foo.py']),
    ('py3', ['bar.py']),
  ],
  platform_resources = [
    ('py2', ['foo.dat']),
    ('py3', ['bar.dat']),
  ],
)