Attr

回報問題 查看來源 夜間 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

這是頂層模組,用於定義規則或層面的屬性結構定義。每個函式都會傳回代表單一屬性結構定義的物件。這些物件會做為 rule()aspect()repository_rule()tag_class()attrs 字典引數值。

如要進一步瞭解如何定義使用屬性,請參閱「規則」頁面。

成員

bool

Attribute attr.bool(configurable=unbound, default=False, doc=None, mandatory=False)

為布林屬性建立結構定義。對應的 ctx.attr 屬性類型為 bool

參數

參數 說明
configurable bool 或未繫結; 預設為 unbound
這個引數只能針對符號巨集的屬性指定。

如果 configurable 明確設為 False,符號巨集屬性就無法設定,也就是說,不能採用 select() 值。如果 configurable 未繫結或明確設為 True,則屬性可設定,且可採用 select() 值。

如果是規則或層面的屬性,configurable 必須保持未繫結狀態。大多數 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性除外,這些屬性一律無法設定。

default bool; 預設值為 False
如果例項化規則時未提供此屬性的值,則使用的預設值。
doc stringNone; 預設為 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
這個引數只能針對符號巨集的屬性指定。

如果 configurable 明確設為 False,符號巨集屬性就無法設定,也就是說,不能採用 select() 值。如果 configurable 未繫結或明確設為 True,則屬性可設定,且可採用 select() 值。

如果是規則或層面的屬性,configurable 必須保持未繫結狀態。大多數 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性除外,這些屬性一律無法設定。

default int; default is 0
A default value to use if no value for this attribute is given when instantiating the rule.
doc stringNone; 預設為 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; default is True
True if the attribute can be empty.
configurable bool 或未繫結; 預設為 unbound
這個引數只能針對符號巨集的屬性指定。

如果 configurable 明確設為 False,符號巨集屬性就無法設定,也就是說,不能採用 select() 值。如果 configurable 未繫結或明確設為 True,則屬性可設定,且可採用 select() 值。

如果是規則或層面的屬性,configurable 必須保持未繫結狀態。大多數 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性除外,這些屬性一律無法設定。

default sequence of ints; default is []
A default value to use if no value for this attribute is given when instantiating the rule.
doc stringNone; 預設為 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
這個引數只能針對符號巨集的屬性指定。

如果 configurable 明確設為 False,符號巨集屬性就無法設定,也就是說,不能採用 select() 值。如果 configurable 未繫結或明確設為 True,則屬性可設定,且可採用 select() 值。

如果是規則或層面的屬性,configurable 必須保持未繫結狀態。大多數 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性除外,這些屬性一律無法設定。

default Label;或 string;或 LateBoundDefault;或 NativeComputedDefault;或 function;或 None; 預設值為 None
如果例項化規則時未提供這個屬性的值,則要使用的預設值。使用字串或 Label 函式指定預設值,例如 attr.label(default = "//a:b")
materializer function; 預設為 None
實驗功能。這項參數仍在實驗階段,因此隨時可能變動。因此請勿依賴這項功能。您可以設定 --experimental_dormant_deps
,以實驗方式啟用這項功能。如果設定這個屬性,系統會從遞移閉包具體化休眠的依附元件。這個參數的值必須是函式,可存取規則屬性的值,這些屬性不是依附元件,就是標示為可供依附元件解析。視屬性類型而定,必須傳回閒置依附元件或這類元件的清單
doc stringNone; 預設為 None
可由文件生成工具擷取的屬性說明。
executable bool; 預設值為 False
如果依附元件必須是可執行檔,則為 True。也就是說,標籤必須參照可執行檔,或是輸出可執行檔的規則。使用 ctx.executable.<attribute_name> 存取標籤。
allow_files bool;或 sequencestring;或 None; 預設值為 None
是否允許 File 目標。可以是 TrueFalse (預設值),或允許的副檔名清單 (例如 [".cc", ".cpp"])。
allow_single_file 預設值為 None
這與 allow_files 類似,但限制是標籤必須對應單一 File。如要存取,請前往 ctx.file.<attribute_name>
mandatory bool; 預設值為 False
如果為 true,則必須明確指定值 (即使有 default 也是如此)。
skip_validations bool; default is False
If true, validation actions of transitive dependencies from this attribute will not run. 這只是暫時性解決方案,日後將移除。
providers sequence; default is []
The providers that must be given by any dependency appearing in this attribute.

這個引數的格式為提供者清單的清單,也就是 provider() 傳回的 *Info 物件 (如果是舊版提供者,則為其字串名稱)。依附元件必須傳回至少一個內部清單中提及的「所有」供應商。為方便起見,這個引數也可以是供應商的單層清單,在這種情況下,該清單會包裝在含有一個元素的外層清單中。規則的依附元件「不一定」要在 provides 參數中宣傳這些供應商,但建議這麼做。

for_dependency_resolution 預設值為 unbound
如果設定這個值,屬性就會提供給實體化工具。只有標示相同名稱旗標的規則,才能透過這類屬性參照。
allow_rules 字串序列;或 None; 預設為 None
允許的規則目標 (類別名稱)。
這項功能已淘汰 (僅保留相容性),請改用供應器。
cfg 預設值為屬性的 None
Configuration。可以是 "exec" (表示依附元件是為 execution platform 建構),也可以是 "target" (表示依附元件是為 target platform 建構)。舉例來說,在建構行動應用程式時,target platformAndroidiOS,而 execution platform 則是 LinuxmacOSWindows。如果 executable 為 True,則必須提供這項參數,以免在目標設定中意外建構主機工具。"target" 沒有語意效果,因此除非有助於釐清意圖,否則請勿在 executable 為 False 時設定這項屬性。
aspects sequence of Aspects; default is []
Aspects that should be applied to the dependency or dependencies specified by this attribute.
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; default is True
True if the attribute can be empty.
configurable bool 或未繫結; 預設為 unbound
這個引數只能針對符號巨集的屬性指定。

如果 configurable 明確設為 False,符號巨集屬性就無法設定,也就是說,不能採用 select() 值。如果 configurable 未繫結或明確設為 True,則屬性可設定,且可採用 select() 值。

如果是規則或層面的屬性,configurable 必須保持未繫結狀態。大多數 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性除外,這些屬性一律無法設定。

default dictfunction; 預設值為 {}
如果例項化規則時未提供這個屬性的值,則要使用的預設值。請使用字串或 Label 函式指定預設值,例如 attr.label_keyed_string_dict(default = {"//a:b": "value", "//a:c": "string"})
doc stringNone; 預設為 None
可由文件生成工具擷取的屬性說明。
allow_files bool;或 sequencestring;或 None; 預設值為 None
是否允許 File 目標。可以是 TrueFalse (預設值),或允許的副檔名清單 (例如 [".cc", ".cpp"])。
allow_rules 字串序列;或 None; 預設為 None
允許的規則目標 (類別名稱)。
這項功能已淘汰 (僅保留相容性),請改用供應器。
providers sequence; default is []
The providers that must be given by any dependency appearing in this attribute.

這個引數的格式為提供者清單的清單,也就是 provider() 傳回的 *Info 物件 (如果是舊版提供者,則為其字串名稱)。依附元件必須傳回至少一個內部清單中提及的「所有」供應商。為方便起見,這個引數也可以是供應商的單層清單,在這種情況下,該清單會包裝在含有一個元素的外層清單中。規則的依附元件「不一定」要在 provides 參數中宣傳這些供應商,但建議這麼做。

for_dependency_resolution 預設值為 unbound
如果設定這個值,屬性就會提供給實體化工具。只有標示相同名稱旗標的規則,才能透過這類屬性參照。
flags 字串序列; 預設為 []
已淘汰,將移除。
mandatory bool; 預設值為 False
如果為 true,則必須明確指定值 (即使有 default 也是如此)。
cfg 預設值為屬性的 None
Configuration。可以是 "exec" (表示依附元件是為 execution platform 建構),也可以是 "target" (表示依附元件是為 target platform 建構)。舉例來說,在建構行動應用程式時,target platformAndroidiOS,而 execution platform 則是 LinuxmacOSWindows
aspects sequence of Aspects; default is []
Aspects that should be applied to the dependency or dependencies specified by this attribute.

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 屬性會是 list 類型的 Targets

這項屬性包含不重複的 Label 值。如果提供字串來取代 Label,系統會使用標籤建構函式轉換字串。標籤路徑的相對部分 (包括可能已重新命名的存放區) 會根據例項化目標的套件解析。

在分析期間 (規則實作函式內),從 ctx.attr 擷取屬性值時,標籤會替換為對應的 Target。這樣一來,您就能存取目前目標依附元件的供應商。

參數

參數 說明
allow_empty bool; default is True
True if the attribute can be empty.
configurable bool 或未繫結; 預設為 unbound
這個引數只能針對符號巨集的屬性指定。

如果 configurable 明確設為 False,符號巨集屬性就無法設定,也就是說,不能採用 select() 值。如果 configurable 未繫結或明確設為 True,則屬性可設定,且可採用 select() 值。

如果是規則或層面的屬性,configurable 必須保持未繫結狀態。大多數 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性除外,這些屬性一律無法設定。

default Label序列;或函式; 預設值為 []
如果例項化規則時未提供這個屬性的值,則要使用的預設值。請使用字串或 Label 函式指定預設值,例如 attr.label_list(default = ["//a:b", "//a:c"])
materializer function; 預設為 None
實驗功能。這項參數仍在實驗階段,因此隨時可能變動。因此請勿依賴這項功能。您可以設定 --experimental_dormant_deps
,以實驗方式啟用這項功能。如果設定這個屬性,系統會從遞移閉包具體化休眠的依附元件。這個參數的值必須是函式,可存取規則屬性的值,這些屬性不是依附元件,就是標示為可供依附元件解析。視屬性類型而定,必須傳回閒置依附元件或這類元件的清單
doc stringNone; 預設為 None
可由文件生成工具擷取的屬性說明。
allow_files bool;或 sequencestring;或 None; 預設值為 None
是否允許 File 目標。可以是 TrueFalse (預設值),或允許的副檔名清單 (例如 [".cc", ".cpp"])。
allow_rules 字串序列;或 None; 預設為 None
允許的規則目標 (類別名稱)。
這項功能已淘汰 (僅保留相容性),請改用供應器。
providers sequence; default is []
The providers that must be given by any dependency appearing in this attribute.

這個引數的格式為提供者清單的清單,也就是 provider() 傳回的 *Info 物件 (如果是舊版提供者,則為其字串名稱)。依附元件必須傳回至少一個內部清單中提及的「所有」供應商。為方便起見,這個引數也可以是供應商的單層清單,在這種情況下,該清單會包裝在含有一個元素的外層清單中。規則的依附元件「不一定」要在 provides 參數中宣傳這些供應商,但建議這麼做。

for_dependency_resolution 預設值為 unbound
如果設定這個值,屬性就會提供給實體化工具。只有標示相同名稱旗標的規則,才能透過這類屬性參照。
flags 字串序列; 預設為 []
已淘汰,將移除。
mandatory bool; 預設值為 False
如果為 true,則必須明確指定值 (即使有 default 也是如此)。
skip_validations bool; default is False
If true, validation actions of transitive dependencies from this attribute will not run. 這只是暫時性解決方案,日後將移除。
cfg 預設值為屬性的 None
Configuration。可以是 "exec" (表示依附元件是為 execution platform 建構),也可以是 "target" (表示依附元件是為 target platform 建構)。舉例來說,在建構行動應用程式時,target platformAndroidiOS,而 execution platform 則是 LinuxmacOSWindows
aspects sequence of Aspects; default is []
Aspects that should be applied to the dependency or dependencies specified by this attribute.

output

Attribute attr.output(doc=None, mandatory=False)

為輸出 (標籤) 屬性建立結構定義。

這項屬性包含不重複的 Label 值。如果提供字串來取代 Label,系統會使用標籤建構函式轉換字串。標籤路徑的相對部分 (包括可能已重新命名的存放區) 會根據例項化目標的套件解析。

在分析時,可以使用 ctx.outputs 擷取對應的 File

參數

參數 說明
doc stringNone; 預設為 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; default is True
True if the attribute can be empty.
doc stringNone; 預設為 None
可由文件生成工具擷取的屬性說明。
mandatory bool; 預設值為 False
如果為 true,則必須明確指定值 (即使有 default 也是如此)。

字串

Attribute attr.string(configurable=unbound, default='', doc=None, mandatory=False, values=[])

字串屬性建立結構定義。

參數

參數 說明
configurable bool 或未繫結; 預設為 unbound
這個引數只能針對符號巨集的屬性指定。

如果 configurable 明確設為 False,符號巨集屬性就無法設定,也就是說,不能採用 select() 值。如果 configurable 未繫結或明確設為 True,則屬性可設定,且可採用 select() 值。

如果是規則或層面的屬性,configurable 必須保持未繫結狀態。大多數 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性除外,這些屬性一律無法設定。

default string; 或 NativeComputedDefault; 預設值為 ''
如果例項化規則時未提供這個屬性的值,則要使用的預設值。
doc stringNone; 預設為 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; default is True
True if the attribute can be empty.
configurable bool 或未繫結; 預設為 unbound
這個引數只能針對符號巨集的屬性指定。

如果 configurable 明確設為 False,符號巨集屬性就無法設定,也就是說,不能採用 select() 值。如果 configurable 未繫結或明確設為 True,則屬性可設定,且可採用 select() 值。

如果是規則或層面的屬性,configurable 必須保持未繫結狀態。大多數 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性除外,這些屬性一律無法設定。

default dict; default is {}
A default value to use if no value for this attribute is given when instantiating the rule.
doc stringNone; 預設為 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; default is True
True if the attribute can be empty.
configurable bool 或未繫結; 預設為 unbound
這個引數只能針對符號巨集的屬性指定。

如果 configurable 明確設為 False,符號巨集屬性就無法設定,也就是說,不能採用 select() 值。如果 configurable 未繫結或明確設為 True,則屬性可設定,且可採用 select() 值。

如果是規則或層面的屬性,configurable 必須保持未繫結狀態。大多數 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性除外,這些屬性一律無法設定。

default dictfunction; 預設值為 {}
如果例項化規則時未提供這個屬性的值,則要使用的預設值。請使用字串或 Label 函式指定預設值,例如 attr.string_keyed_label_dict(default = {"foo": "//a:b", "bar": "//a:c"})
doc stringNone; 預設為 None
可由文件生成工具擷取的屬性說明。
allow_files bool;或 sequencestring;或 None; 預設值為 None
是否允許 File 目標。可以是 TrueFalse (預設值),或允許的副檔名清單 (例如 [".cc", ".cpp"])。
allow_rules 字串序列;或 None; 預設為 None
允許的規則目標 (類別名稱)。
這項功能已淘汰 (僅保留相容性),請改用供應器。
providers sequence; default is []
The providers that must be given by any dependency appearing in this attribute.

這個引數的格式為提供者清單的清單,也就是 provider() 傳回的 *Info 物件 (如果是舊版提供者,則為其字串名稱)。依附元件必須傳回至少一個內部清單中提及的「所有」供應商。為方便起見,這個引數也可以是供應商的單層清單,在這種情況下,該清單會包裝在含有一個元素的外層清單中。規則的依附元件「不一定」要在 provides 參數中宣傳這些供應商,但建議這麼做。

for_dependency_resolution 預設值為 unbound
如果設定這個值,屬性就會提供給實體化工具。只有標示相同名稱旗標的規則,才能透過這類屬性參照。
flags 字串序列; 預設為 []
已淘汰,將移除。
mandatory bool; 預設值為 False
如果為 true,則必須明確指定值 (即使有 default 也是如此)。
cfg 預設值為屬性的 None
Configuration。可以是 "exec" (表示依附元件是為 execution platform 建構),也可以是 "target" (表示依附元件是為 target platform 建構)。舉例來說,在建構行動應用程式時,target platformAndroidiOS,而 execution platform 則是 LinuxmacOSWindows
aspects sequence of Aspects; default is []
Aspects that should be applied to the dependency or dependencies specified by this attribute.

string_list

Attribute attr.string_list(mandatory=False, allow_empty=True, *, configurable=unbound, default=[], doc=None)

為字串清單屬性建立結構定義。

參數

參數 說明
mandatory bool; 預設值為 False
如果為 true,則必須明確指定值 (即使有 default 也是如此)。
allow_empty bool; default is True
True if the attribute can be empty.
configurable bool 或未繫結; 預設為 unbound
這個引數只能針對符號巨集的屬性指定。

如果 configurable 明確設為 False,符號巨集屬性就無法設定,也就是說,不能採用 select() 值。如果 configurable 未繫結或明確設為 True,則屬性可設定,且可採用 select() 值。

如果是規則或層面的屬性,configurable 必須保持未繫結狀態。大多數 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性除外,這些屬性一律無法設定。

default 字串序列;或 NativeComputedDefault; 預設值為 []
如果例項化規則時未提供這個屬性的值,則要使用的預設值。
doc stringNone; 預設為 None
可由文件生成工具擷取的屬性說明。

string_list_dict

Attribute attr.string_list_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, mandatory=False)

為保存字典的屬性建立結構定義,其中鍵為字串,值為字串清單。

參數

參數 說明
allow_empty bool; default is True
True if the attribute can be empty.
configurable bool 或未繫結; 預設為 unbound
這個引數只能針對符號巨集的屬性指定。

如果 configurable 明確設為 False,符號巨集屬性就無法設定,也就是說,不能採用 select() 值。如果 configurable 未繫結或明確設為 True,則屬性可設定,且可採用 select() 值。

如果是規則或層面的屬性,configurable 必須保持未繫結狀態。大多數 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性除外,這些屬性一律無法設定。

default dict; default is {}
A default value to use if no value for this attribute is given when instantiating the rule.
doc stringNone; 預設為 None
可由文件生成工具擷取的屬性說明。
mandatory bool; 預設值為 False
如果為 true,則必須明確指定值 (即使有 default 也是如此)。