configurable | bool; or unbound; default is unbound This argument can only be specified for an attribute of a symbolic macro. If configurable is explicitly set to False, the symbolic macro attribute is non-configurable - in other words, it cannot take a select() value. If the configurable is either unbound or explicitly set to True, the attribute is configurable and can take a select() value. For an attribute of a rule or aspect, configurable must be left unbound. Most Starlark rule attributes are always configurable, with the exception of attr.output(), attr.output_list(), and attr.license() rule attributes, which are always non-configurable. |
default | Label; or string; or LateBoundDefault; or NativeComputedDefault; or function; or None; default is None A default value to use if no value for this attribute is given when instantiating the rule.Use a string or the Label function to specify a default value, for example, attr.label(default = "//a:b"). |
materializer | function; default is None Experimental. This parameter is experimental and may change at any time. Please do not depend on it. It may be enabled on an experimental basis by setting --experimental_dormant_deps If set, the attribute materializes dormant dependencies from the transitive closure. The value of this parameter must be a functon that gets access to the values of the attributes of the rule that either are not dependencies or are marked as available for dependency resolution. It must return either a dormant dependency or a list of them depending on the type of the attribute |
doc | string; or None; default is None |
executable | bool; default is False True if the dependency has to be executable. This means the label must refer to an executable file, or to a rule that outputs an executable file. Access the label with ctx.executable.<attribute_name>. |
allow_files | bool; or sequence of strings; or None; default is None Whether File targets are allowed. Can be True, False (default), or a list of file extensions that are allowed (for example, [".cc", ".cpp"]). |
allow_single_file | default is None This is similar to allow_files, with the restriction that the label must correspond to a single File. Access it through ctx.file.<attribute_name>. |
mandatory | bool; default is False If true, the value must be specified explicitly (even if it has a default). |
skip_validations | bool; default is False If true, validation actions of transitive dependencies from this attribute will not run. This is a temporary mitigation and WILL be removed in the future. |
providers | sequence; default is [] The providers that must be given by any dependency appearing in this attribute. The format of this argument is a list of lists of providers — *Info objects returned by provider() (or in the case of a legacy provider, its string name). The dependency must return ALL providers mentioned in at least ONE of the inner lists. As a convenience, this argument may also be a single-level list of providers, in which case it is wrapped in an outer list with one element (i.e. [A, B] means [[A, B]]). It is NOT required that the rule of the dependency advertises those providers in its provides parameter, however, it is considered best practice. |
for_dependency_resolution | default is unbound If this is set, the attribute is available for materializers. Only rules marked with the flag of the same name are allowed to be referenced through such attributes. |
allow_rules | sequence of strings; or None; default is None Which rule targets (name of the classes) are allowed. This is deprecated (kept only for compatibility), use providers instead. |
cfg | default is None Configuration of the attribute. It can be either "exec", which indicates that the dependency is built for the execution platform, or "target", which indicates that the dependency is build for the target platform. A typical example of the difference is when building mobile apps, where the target platform is Android or iOS while the execution platform is Linux, macOS, or Windows. This parameter is required if executable is True to guard against accidentally building host tools in the target configuration. "target" has no semantic effect, so don’t set it when executable is False unless it really helps clarify your intentions. |
aspects | sequence of Aspects; default is [] Aspects that should be applied to the dependency or dependencies specified by this attribute. |
flags | sequence of strings; default is [] Deprecated, will be removed. |