这是一个顶级模块,用于定义规则或方面属性架构。每个函数都会返回一个对象,表示单个属性的架构。这些对象用作 rule()
、aspect()
、repository_rule()
和 tag_class()
的 attrs
字典参数的值。
成员
- bool
- int
- int_list
- label
- label_keyed_string_dict
- label_list
- output
- output_list
- 字符串
- string_dict
- string_keyed_label_dict
- string_list
- string_list_dict
bool
Attribute attr.bool(configurable=unbound, default=False, doc=None, mandatory=False)为布尔值属性创建架构。相应的
ctx.attr
属性将为 bool
类型。
参数
参数 | 说明 |
---|---|
configurable
|
bool;或未绑定;
默认值为 unbound 此参数只能为符号宏的属性指定。 如果 对于规则或方面属性, |
default
|
bool;
默认值为 False 如果在实例化规则时未为此属性指定值,则使用此默认值。 |
doc
|
字符串;或 None ;
默认为 None 可由文档生成工具提取的属性说明。 |
mandatory
|
bool;
默认为 False 如果为 true,则必须明确指定值(即使它具有 default )。
|
int
Attribute attr.int(configurable=unbound, default=0, doc=None, mandatory=False, values=[])为整数属性创建架构。值必须在 32 位有符号范围内。相应的
ctx.attr
属性将为 int
类型。
参数
参数 | 说明 |
---|---|
configurable
|
bool;或未绑定;
默认值为 unbound 此参数只能为符号宏的属性指定。 如果 对于规则或方面属性, |
default
|
int;
默认值为 0 如果在实例化规则时未为此属性指定值,则使用此默认值。 |
doc
|
字符串;或 None ;
默认为 None 可由文档生成工具提取的属性说明。 |
mandatory
|
bool;
默认为 False 如果为 true,则必须明确指定值(即使它具有 default )。
|
values
|
int 的序列;默认为 [] 该属性允许的值的列表。如果提供任何其他值,则会引发错误。 |
int_list
Attribute attr.int_list(mandatory=False, allow_empty=True, *, configurable=unbound, default=[], doc=None)为整数列表属性创建架构。每个元素都必须在 32 位有符号范围内。
参数
参数 | 说明 |
---|---|
mandatory
|
bool;
默认为 False 如果为 true,则必须明确指定值(即使它具有 default )。
|
allow_empty
|
bool;
默认为 True 如果属性可以为空,则为 true。 |
configurable
|
bool;或未绑定;
默认值为 unbound 此参数只能为符号宏的属性指定。 如果 对于规则或方面属性, |
default
|
int 的序列;默认为 [] 如果在实例化规则时未为此属性指定值,则使用此默认值。 |
doc
|
字符串;或 None ;
默认为 None 可由文档生成工具提取的属性说明。 |
标签
Attribute attr.label(configurable=unbound, default=None, materializer=None, doc=None, executable=False, allow_files=None, allow_single_file=None, mandatory=False, skip_validations=False, providers=[], for_dependency_resolution=unbound, allow_rules=None, cfg=None, aspects=[], flags=[])
为标签属性创建架构。这是依赖项属性。
此属性包含唯一的 Label
值。如果提供字符串来替代 Label
,系统会使用标签构造函数进行转换。标签路径的相对部分(包括可能已重命名的代码库)会相对于实例化的目标的软件包进行解析。
在分析时(在规则的实现函数内),从 ctx.attr
检索属性值时,标签会被相应的 Target
替换。这样,您就可以访问当前目标的依赖项的提供程序。
除了普通的源文件之外,此类属性通常也用于引用工具,例如编译器。这些工具与源文件一样,也被视为依赖项。为避免要求用户每次在 BUILD 文件中使用规则时都指定工具的标签,您可以将规范工具的标签作为此属性的 default
值进行硬编码。如果您还想阻止用户替换此默认值,可以为该属性指定一个以下划线开头的名称,使其变为私有属性。如需了解详情,请参阅规则页面。
参数
参数 | 说明 |
---|---|
configurable
|
bool;或未绑定;
默认值为 unbound 此参数只能为符号宏的属性指定。 如果 对于规则或方面属性, |
default
|
Label;或字符串;或 LateBoundDefault;或 NativeComputedDefault;或函数;或 None ;
默认值为 None 在实例化规则时,如果未为此属性指定值,则使用的默认值。使用字符串或 Label 函数指定默认值,例如 attr.label(default = "//a:b") 。
|
materializer
|
function;
默认值为 None 实验性。此参数目前处于实验阶段,随时可能发生变化。请勿依赖此功能。您可以通过设置 --experimental_dormant_deps 在实验性的基础上启用此功能。如果设置此属性,系统会从传递闭包中具体化休眠依赖项。此参数的值必须是一个函数,该函数可访问规则的属性值,这些属性值不是依赖项,或者已标记为可用于依赖项解析。它必须返回一个休眠依赖项或一组休眠依赖项,具体取决于属性的类型 |
doc
|
字符串;或 None ;
默认为 None 可由文档生成工具提取的属性说明。 |
executable
|
bool;
默认为 False 如果依赖项必须是可执行的,则为 true。这意味着标签必须引用可执行文件,或者引用输出可执行文件的规则。使用 ctx.executable.<attribute_name> 访问标签。
|
allow_files
|
bool;或字符串的序列;或 None ;
默认为 None 是否允许 File 目标。可以是 True 、False (默认值)或允许的文件扩展名列表(例如 [".cc", ".cpp"] )。
|
allow_single_file
|
默认值为 None 这与 allow_files 类似,但限制是标签必须与单个文件对应。通过 ctx.file.<attribute_name> 访问它。
|
mandatory
|
bool;
默认为 False 如果为 true,则必须明确指定值(即使它具有 default )。
|
skip_validations
|
bool;
默认值为 False 如果为 true,系统不会运行此属性中传递依赖项的验证操作。这只是一项临时缓解措施,日后将被移除。 |
providers
|
sequence;
默认为 [] 此属性中显示的任何依赖项都必须提供的提供程序。 此参数的格式为提供程序列表的列表,即 |
for_dependency_resolution
|
默认值为 unbound 如果设置此属性,则该属性可供 Material 化器使用。只有标记为具有相同标志的规则才能通过此类属性进行引用。 |
allow_rules
|
字符串的序列;或 None ;
默认为 None 允许的规则目标(类的名称)。此方法已废弃(仅出于兼容性目的而保留),请改用提供程序。 |
cfg
|
默认值为 None 属性的配置。它可以是 "exec" ,表示依赖项是为 execution platform 构建的,也可以是 "target" ,表示依赖项是为 target platform 构建的。一个典型的区别示例是,在构建移动应用时,target platform 为 Android 或 iOS ,而 execution platform 为 Linux 、macOS 或 Windows 。如果 executable 为 True,则必须使用此参数,以防止在目标配置中意外构建宿主工具。"target" 没有语义影响,因此,除非它确实有助于阐明您的意图,否则请勿在 executable 为 False 时设置它。
|
aspects
|
Aspect 的序列;默认为 [] 应应用于此属性指定的依赖项的 Aspect。 |
flags
|
字符串的序列;默认为 [] 已废弃,将被移除。 |
label_keyed_string_dict
Attribute attr.label_keyed_string_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, allow_files=None, allow_rules=None, providers=[], for_dependency_resolution=unbound, flags=[], mandatory=False, cfg=None, aspects=[])
为包含字典的属性创建架构,其中键是标签,值是字符串。这是依赖项属性。
此属性包含唯一的 Label
值。如果提供字符串来替代 Label
,系统会使用标签构造函数进行转换。标签路径的相对部分(包括可能已重命名的代码库)会相对于实例化的目标的软件包进行解析。
在分析时(在规则的实现函数内),从 ctx.attr
检索属性值时,标签会被相应的 Target
替换。这样,您就可以访问当前目标的依赖项的提供程序。
参数
参数 | 说明 |
---|---|
allow_empty
|
bool;
默认为 True 如果属性可以为空,则为 true。 |
configurable
|
bool;或未绑定;
默认值为 unbound 此参数只能为符号宏的属性指定。 如果 对于规则或方面属性, |
default
|
字典;或函数;
默认值为 {} 如果在实例化规则时未为此属性指定值,则使用此默认值。使用字符串或 Label 函数指定默认值,例如 attr.label_keyed_string_dict(default = {"//a:b": "value", "//a:c": "string"}) 。
|
doc
|
字符串;或 None ;
默认为 None 可由文档生成工具提取的属性说明。 |
allow_files
|
bool;或字符串的序列;或 None ;
默认为 None 是否允许 File 目标。可以是 True 、False (默认值)或允许的文件扩展名列表(例如 [".cc", ".cpp"] )。
|
allow_rules
|
字符串的序列;或 None ;
默认为 None 允许的规则目标(类的名称)。此方法已废弃(仅出于兼容性目的而保留),请改用提供程序。 |
providers
|
sequence;
默认为 [] 此属性中显示的任何依赖项都必须提供的提供程序。 此参数的格式为提供程序列表的列表,即 |
for_dependency_resolution
|
默认值为 unbound 如果设置此属性,则该属性可供 Material 化器使用。只有标记为具有相同标志的规则才能通过此类属性进行引用。 |
flags
|
字符串的序列;默认为 [] 已废弃,将被移除。 |
mandatory
|
bool;
默认为 False 如果为 true,则必须明确指定值(即使它具有 default )。
|
cfg
|
默认值为 None 属性的配置。它可以是 "exec" ,表示依赖项是为 execution platform 构建的,也可以是 "target" ,表示依赖项是为 target platform 构建的。这两者的区别的一个典型示例是,在构建移动应用时,target platform 为 Android 或 iOS ,而 execution platform 为 Linux 、macOS 或 Windows 。
|
aspects
|
Aspect 的序列;默认为 [] 应应用于此属性指定的依赖项的 Aspect。 |
label_list
Attribute attr.label_list(allow_empty=True, *, configurable=unbound, default=[], materializer=None, doc=None, allow_files=None, allow_rules=None, providers=[], for_dependency_resolution=unbound, flags=[], mandatory=False, skip_validations=False, cfg=None, aspects=[])
为“标签列表”属性创建架构。这是依赖项属性。相应的 ctx.attr
属性将为 Target
的列表类型。
此属性包含唯一的 Label
值。如果提供字符串来替代 Label
,系统会使用标签构造函数进行转换。标签路径的相对部分(包括可能已重命名的代码库)会相对于实例化的目标的软件包进行解析。
在分析时(在规则的实现函数内),从 ctx.attr
检索属性值时,标签会被相应的 Target
替换。这样,您就可以访问当前目标的依赖项的提供程序。
参数
参数 | 说明 |
---|---|
allow_empty
|
bool;
默认为 True 如果属性可以为空,则为 true。 |
configurable
|
bool;或未绑定;
默认值为 unbound 此参数只能为符号宏的属性指定。 如果 对于规则或方面属性, |
default
|
标签的序列;或函数;
默认值为 [] 如果在实例化规则时未为此属性指定值,则使用此默认值。使用字符串或 Label 函数指定默认值,例如 attr.label_list(default = ["//a:b", "//a:c"]) 。
|
materializer
|
function;
默认值为 None 实验性。此参数目前处于实验阶段,随时可能发生变化。请勿依赖此功能。您可以通过设置 --experimental_dormant_deps 在实验性的基础上启用此功能。如果设置此属性,系统会从传递闭包中具体化休眠依赖项。此参数的值必须是一个函数,该函数可访问规则的属性值,这些属性值不是依赖项,或者已标记为可用于依赖项解析。它必须返回一个休眠依赖项或一组休眠依赖项,具体取决于属性的类型 |
doc
|
字符串;或 None ;
默认为 None 可由文档生成工具提取的属性说明。 |
allow_files
|
bool;或字符串的序列;或 None ;
默认为 None 是否允许 File 目标。可以是 True 、False (默认值)或允许的文件扩展名列表(例如 [".cc", ".cpp"] )。
|
allow_rules
|
字符串的序列;或 None ;
默认为 None 允许的规则目标(类的名称)。此方法已废弃(仅出于兼容性目的而保留),请改用提供程序。 |
providers
|
sequence;
默认为 [] 此属性中显示的任何依赖项都必须提供的提供程序。 此参数的格式为提供程序列表的列表,即 |
for_dependency_resolution
|
默认值为 unbound 如果设置此属性,则该属性可供 Material 化器使用。只有标记为具有相同标志的规则才能通过此类属性进行引用。 |
flags
|
字符串的序列;默认为 [] 已废弃,将被移除。 |
mandatory
|
bool;
默认为 False 如果为 true,则必须明确指定值(即使它具有 default )。
|
skip_validations
|
bool;
默认值为 False 如果为 true,系统不会运行此属性中传递依赖项的验证操作。这只是一项临时缓解措施,日后将被移除。 |
cfg
|
默认值为 None 属性的配置。它可以是 "exec" ,表示依赖项是为 execution platform 构建的,也可以是 "target" ,表示依赖项是为 target platform 构建的。这两者的区别的一个典型示例是,在构建移动应用时,target platform 为 Android 或 iOS ,而 execution platform 为 Linux 、macOS 或 Windows 。
|
aspects
|
Aspect 的序列;默认为 [] 应应用于此属性指定的依赖项的 Aspect。 |
output
Attribute attr.output(doc=None, mandatory=False)
为输出(标签)属性创建架构。
此属性包含唯一的 Label
值。如果提供字符串来替代 Label
,系统会使用标签构造函数进行转换。标签路径的相对部分(包括可能已重命名的代码库)会相对于实例化的目标的软件包进行解析。
在分析时,可以使用 ctx.outputs
检索相应的 File
。
参数
参数 | 说明 |
---|---|
doc
|
字符串;或 None ;
默认为 None 可由文档生成工具提取的属性说明。 |
mandatory
|
bool;
默认为 False 如果为 true,则必须明确指定值(即使它具有 default )。
|
output_list
Attribute attr.output_list(allow_empty=True, *, doc=None, mandatory=False)为输出列表属性创建架构。
此属性包含唯一的 Label
值。如果提供字符串来替代 Label
,系统会使用标签构造函数进行转换。标签路径的相对部分(包括可能已重命名的代码库)会相对于实例化的目标的软件包进行解析。
在分析时,可以使用 ctx.outputs
检索相应的 File
。
参数
参数 | 说明 |
---|---|
allow_empty
|
bool;
默认为 True 如果属性可以为空,则为 true。 |
doc
|
字符串;或 None ;
默认为 None 可由文档生成工具提取的属性说明。 |
mandatory
|
bool;
默认为 False 如果为 true,则必须明确指定值(即使它具有 default )。
|
字符串
Attribute attr.string(configurable=unbound, default='', doc=None, mandatory=False, values=[])为字符串属性创建架构。
参数
参数 | 说明 |
---|---|
configurable
|
bool;或未绑定;
默认值为 unbound 此参数只能为符号宏的属性指定。 如果 对于规则或方面属性, |
default
|
字符串;或 NativeComputedDefault;
默认为 '' 如果在实例化规则时未为此属性指定值,则使用此默认值。 |
doc
|
字符串;或 None ;
默认为 None 可由文档生成工具提取的属性说明。 |
mandatory
|
bool;
默认为 False 如果为 true,则必须明确指定值(即使它具有 default )。
|
values
|
字符串的序列;默认为 [] 该属性允许的值的列表。如果提供任何其他值,则会引发错误。 |
string_dict
Attribute attr.string_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, mandatory=False)为包含字典的属性创建架构,其中键和值均为字符串。
参数
参数 | 说明 |
---|---|
allow_empty
|
bool;
默认为 True 如果属性可以为空,则为 true。 |
configurable
|
bool;或未绑定;
默认值为 unbound 此参数只能为符号宏的属性指定。 如果 对于规则或方面属性, |
default
|
字典;
默认值为 {} 如果在实例化规则时未为此属性指定值,则使用此默认值。 |
doc
|
字符串;或 None ;
默认为 None 可由文档生成工具提取的属性说明。 |
mandatory
|
bool;
默认为 False 如果为 true,则必须明确指定值(即使它具有 default )。
|
string_keyed_label_dict
Attribute attr.string_keyed_label_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, allow_files=None, allow_rules=None, providers=[], for_dependency_resolution=unbound, flags=[], mandatory=False, cfg=None, aspects=[])
为属性创建架构,其值为字典,其中键为字符串,值为标签。这是依赖项属性。
此属性包含唯一的 Label
值。如果提供字符串来替代 Label
,系统会使用标签构造函数进行转换。标签路径的相对部分(包括可能已重命名的代码库)会相对于实例化的目标的软件包进行解析。
在分析时(在规则的实现函数内),从 ctx.attr
检索属性值时,标签会被相应的 Target
替换。这样,您就可以访问当前目标的依赖项的提供程序。
参数
参数 | 说明 |
---|---|
allow_empty
|
bool;
默认为 True 如果属性可以为空,则为 true。 |
configurable
|
bool;或未绑定;
默认值为 unbound 此参数只能为符号宏的属性指定。 如果 对于规则或方面属性, |
default
|
字典;或函数;
默认值为 {} 如果在实例化规则时未为此属性指定值,则使用此默认值。使用字符串或 Label 函数指定默认值,例如 attr.string_keyed_label_dict(default = {"foo": "//a:b", "bar": "//a:c"}) 。
|
doc
|
字符串;或 None ;
默认为 None 可由文档生成工具提取的属性说明。 |
allow_files
|
bool;或字符串的序列;或 None ;
默认为 None 是否允许 File 目标。可以是 True 、False (默认值)或允许的文件扩展名列表(例如 [".cc", ".cpp"] )。
|
allow_rules
|
字符串的序列;或 None ;
默认为 None 允许的规则目标(类的名称)。此方法已废弃(仅出于兼容性目的而保留),请改用提供程序。 |
providers
|
sequence;
默认为 [] 此属性中显示的任何依赖项都必须提供的提供程序。 此参数的格式为提供程序列表的列表,即 |
for_dependency_resolution
|
默认值为 unbound 如果设置此属性,则该属性可供 Material 化器使用。只有标记为具有相同标志的规则才能通过此类属性进行引用。 |
flags
|
字符串的序列;默认为 [] 已废弃,将被移除。 |
mandatory
|
bool;
默认为 False 如果为 true,则必须明确指定值(即使它具有 default )。
|
cfg
|
默认值为 None 属性的配置。它可以是 "exec" ,表示依赖项是为 execution platform 构建的,也可以是 "target" ,表示依赖项是为 target platform 构建的。这两者的区别的一个典型示例是,在构建移动应用时,target platform 为 Android 或 iOS ,而 execution platform 为 Linux 、macOS 或 Windows 。
|
aspects
|
Aspect 的序列;默认为 [] 应应用于此属性指定的依赖项的 Aspect。 |
string_list
Attribute attr.string_list(mandatory=False, allow_empty=True, *, configurable=unbound, default=[], doc=None)为字符串列表属性创建架构。
参数
参数 | 说明 |
---|---|
mandatory
|
bool;
默认为 False 如果为 true,则必须明确指定值(即使它具有 default )。
|
allow_empty
|
bool;
默认为 True 如果属性可以为空,则为 true。 |
configurable
|
bool;或未绑定;
默认值为 unbound 此参数只能为符号宏的属性指定。 如果 对于规则或方面属性, |
default
|
字符串的序列;或 NativeComputedDefault;
默认为 [] 如果在实例化规则时未为此属性指定值,则使用此默认值。 |
doc
|
字符串;或 None ;
默认为 None 可由文档生成工具提取的属性说明。 |
string_list_dict
Attribute attr.string_list_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, mandatory=False)为包含字典的属性创建架构,其中键为字符串,值为字符串列表。
参数
参数 | 说明 |
---|---|
allow_empty
|
bool;
默认为 True 如果属性可以为空,则为 true。 |
configurable
|
bool;或未绑定;
默认值为 unbound 此参数只能为符号宏的属性指定。 如果 对于规则或方面属性, |
default
|
字典;
默认值为 {} 如果在实例化规则时未为此属性指定值,则使用此默认值。 |
doc
|
字符串;或 None ;
默认为 None 可由文档生成工具提取的属性说明。 |
mandatory
|
bool;
默认为 False 如果为 true,则必须明确指定值(即使它具有 default )。
|