Extensions > API reference > DefaultInfo

DefaultInfo

A provider that gives general information about a target's direct and transitive files. Every rule type has this provider, even if it is not returned explicitly by the rule's implementation function. Each DefaultInfo instance has the following fields:
  • files
  • files_to_run
  • data_runfiles
  • default_runfiles
See the rules page for extensive guides on how to use this provider.

DefaultInfo

DefaultInfo DefaultInfo(files=None, runfiles=None, data_runfiles=None, default_runfiles=None, executable=None)

The DefaultInfo constructor.

Parameters

Parameter Description
files

depset

A depset of File objects representing the default outputs to build when this target is specified on the bazel command line. By default it is all predeclared outputs.

runfiles

runfiles

runfiles descriptor describing the files that this target needs when run (via the run command or as a tool dependency).

data_runfiles

runfiles

It is recommended that you avoid using this parameter (see "runfiles features to avoid")

runfiles descriptor describing the runfiles this target needs to run when it is a dependency via the data attribute.

default_runfiles

runfiles

It is recommended that you avoid using this parameter (see "runfiles features to avoid")

runfiles descriptor describing the runfiles this target needs to run when it is a dependency via any attribute other than the data attribute.

executable

File

If this rule is marked executable or test, this is a File object representing the file that should be executed to run the target. By default it is the predeclared output ctx.outputs.executable.

data_runfiles

runfiles DefaultInfo.data_runfiles

runfiles descriptor describing the files that this target needs when run in the condition that it is a data dependency attribute. Under most circumstances, use the default_runfiles parameter instead. See "runfiles features to avoid" for details. May return None.

default_runfiles

runfiles DefaultInfo.default_runfiles

runfiles descriptor describing the files that this target needs when run (via the run command or as a tool dependency). May return None.

files

depset DefaultInfo.files

A depset of File objects representing the default outputs to build when this target is specified on the bazel command line. By default it is all predeclared outputs. May return None.

files_to_run

FilesToRunProvider DefaultInfo.files_to_run

A FilesToRunProvider object containing information about the executable and runfiles of the target. May return None.

to_json

string DefaultInfo.to_json()

Creates a JSON string from the struct parameter. This method only works if all struct elements (recursively) are strings, ints, booleans, other structs, a list of these types or a dictionary with string keys and values of these types. Quotes and new lines in strings are escaped. Examples:
struct(key=123).to_json()
# {"key":123}

struct(key=True).to_json()
# {"key":true}

struct(key=[1, 2, 3]).to_json()
# {"key":[1,2,3]}

struct(key='text').to_json()
# {"key":"text"}

struct(key=struct(inner_key='text')).to_json()
# {"key":{"inner_key":"text"}}

struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_json()
# {"key":[{"inner_key":1},{"inner_key":2}]}

struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_json()
# {"key":{"inner_key":{"inner_inner_key":"text"}}}

to_proto

string DefaultInfo.to_proto()

Creates a text message from the struct parameter. This method only works if all struct elements (recursively) are strings, ints, booleans, other structs or dicts or lists of these types. Quotes and new lines in strings are escaped. Struct keys are iterated in the sorted order. Examples:
struct(key=123).to_proto()
# key: 123

struct(key=True).to_proto()
# key: true

struct(key=[1, 2, 3]).to_proto()
# key: 1
# key: 2
# key: 3

struct(key='text').to_proto()
# key: "text"

struct(key=struct(inner_key='text')).to_proto()
# key {
#   inner_key: "text"
# }

struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_proto()
# key {
#   inner_key: 1
# }
# key {
#   inner_key: 2
# }

struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_proto()
# key {
#    inner_key {
#     inner_inner_key: "text"
#   }
# }

struct(foo={4: 3, 2: 1}).to_proto()
# foo: {
#   key: 4
#   value: 3
# }
# foo: {
#   key: 2
#   value: 1
# }