這是頂層模組,用於定義規則或面向的屬性結構定義。每個函式都會傳回代表單一屬性架構的物件。這些物件會用於 rule()、aspect()、repository_rule() 和 tag_class() 的 attrs 字典引數。
成員
- 布林值
- 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
|
string 或 None;
預設為 None說明可供說明文件產生工具擷取的屬性。 |
mandatory
|
bool;預設值為 False。 如果為 true,則必須明確指定值 (即使有 default 也一樣)。
|
int
Attribute attr.int(configurable=unbound, default=0, doc=None, mandatory=False, values=[])
ctx.attr 屬性將為 int 類型。
參數
| 參數 | 說明 |
|---|---|
configurable
|
bool 或未繫結;
預設為 unbound這個引數只能用於指定符號巨集的屬性。 如果 對於規則或層面的屬性, |
default
|
int;預設值為 0。如果在例項化規則時未提供此屬性的值,則會使用此預設值。 |
doc
|
string 或 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)
參數
| 參數 | 說明 |
|---|---|
mandatory
|
bool;預設值為 False。 如果為 true,則必須明確指定值 (即使有 default 也一樣)。
|
allow_empty
|
bool;
預設為 True。 如果屬性可為空白,則為「是」。 |
configurable
|
bool 或未繫結;
預設為 unbound這個引數只能用於指定符號巨集的屬性。 如果 對於規則或層面的屬性, |
default
|
int 的序列;預設值為 []。如果在例項化規則時未提供此屬性的值,則會使用這個預設值。 |
doc
|
string 或 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
|
string 或 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 類似,但標籤必須對應至單一 File。透過 ctx.file.<attribute_name> 存取。 |
mandatory
|
bool;預設值為 False。 如果為 true,則必須明確指定值 (即使有 default 也一樣)。
|
skip_validations
|
bool;預設值為 False。 如果設為 true,系統就不會執行此屬性所產生傳遞式依附元件的驗證動作。這是暫時性緩解措施,日後將會移除。 |
providers
|
sequence;預設為 []。 這個屬性中出現的任何依附元件必須提供的供應器。 這個引數的格式為提供者清單的清單,也就是 |
for_dependency_resolution
|
預設為 unbound如果設定此屬性,Materializers 就能使用。只有標示為相同名稱的規則才能透過這類屬性參照。 |
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,請勿設定 "target",除非這有助於釐清您的意圖。 |
aspects
|
切面的序列;預設值為 []。 應套用至此屬性指定的相依項目或相依項目的切面。 |
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。 如果屬性可為空白,則為「是」。 |
configurable
|
bool 或未繫結;
預設為 unbound這個引數只能用於指定符號巨集的屬性。 如果 對於規則或層面的屬性, |
default
|
字典或函式;
預設為 {}如果在例項化規則時未提供這個屬性的值,就會使用這個預設值。請使用字串或 Label 函式指定預設值,例如 attr.label_keyed_string_dict(default = {"//a:b": "value", "//a:c": "string"})。
|
doc
|
string 或 None;
預設為 None說明可供說明文件產生工具擷取的屬性。 |
allow_files
|
bool;或 字串的序列;或 None;預設為 None。是否允許 File 目標。可以是 True、False (預設值),或是允許的副檔名清單 (例如 [".cc", ".cpp"])。
|
allow_rules
|
字串的序列;或 None;預設為 None。 允許哪些規則目標 (類別名稱)。這項功能已淘汰 (僅保留用於相容性),請改用供應器。 |
providers
|
sequence;預設為 []。 這個屬性中出現的任何依附元件必須提供的供應器。 這個引數的格式為提供者清單的清單,也就是 |
for_dependency_resolution
|
預設為 unbound如果設定此屬性,Materializers 就能使用。只有標示為相同名稱的規則才能透過這類屬性參照。 |
flags
|
字串序列;預設為 []。已淘汰,將予以移除。 |
mandatory
|
bool;預設值為 False。 如果為 true,則必須明確指定值 (即使有 default 也一樣)。
|
cfg
|
預設為 None屬性的設定。可以是 "exec",表示依附元件是為 execution platform 建構;或是 "target",表示依附元件是為 target platform 建構。舉例來說,在建構行動應用程式時,target platform 為 Android 或 iOS,而 execution platform 則為 Linux、macOS 或 Windows。 |
aspects
|
切面的序列;預設值為 []。 應套用至此屬性指定的相依項目或相依項目的切面。 |
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。 如果屬性可為空白,則為「是」。 |
configurable
|
bool 或未繫結;
預設為 unbound這個引數只能用於指定符號巨集的屬性。 如果 對於規則或層面的屬性, |
default
|
標籤序列或函式;預設為 []如果在例項化規則時未提供這個屬性的值,系統會使用預設值。請使用字串或 Label 函式指定預設值,例如 attr.label_list(default = ["//a:b", "//a:c"])。 |
materializer
|
function;預設為 None。實驗功能。這項參數仍在實驗階段,隨時可能變更。請勿依賴這項功能。您可以設定 --experimental_dormant_deps 來啟用實驗功能。如果設定了這個屬性,系統就會從傳遞閉包中實現休眠中的依附元件。這個參數的值必須是函式,可存取規則屬性的值,這些值不是依附元件,或標示為可用於依附元件解析。它必須傳回休眠中依附元件或依附元件清單,這取決於屬性類型 |
doc
|
string 或 None;
預設為 None說明可供說明文件產生工具擷取的屬性。 |
allow_files
|
bool;或 字串的序列;或 None;預設為 None。是否允許 File 目標。可以是 True、False (預設值),或是允許的副檔名清單 (例如 [".cc", ".cpp"])。
|
allow_rules
|
字串的序列;或 None;預設為 None。 允許哪些規則目標 (類別名稱)。這項功能已淘汰 (僅保留用於相容性),請改用供應器。 |
providers
|
sequence;預設為 []。 這個屬性中出現的任何依附元件必須提供的供應器。 這個引數的格式為提供者清單的清單,也就是 |
for_dependency_resolution
|
預設為 unbound如果設定此屬性,Materializers 就能使用。只有標示為相同名稱的規則才能透過這類屬性參照。 |
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
|
切面的序列;預設值為 []。 應套用至此屬性指定的相依項目或相依項目的切面。 |
output
Attribute attr.output(doc=None, mandatory=False)
為輸出 (標籤) 屬性建立結構定義。
此屬性含有專屬的 Label 值。如果您提供字串來取代 Label,系統會使用標籤建構函式進行轉換。標籤路徑的相對部分 (包括可能已重新命名的存放區) 會根據已實例化的目標套件解析。
在分析期間,您可以使用 ctx.outputs 擷取對應的 File。
參數
| 參數 | 說明 |
|---|---|
doc
|
string 或 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
|
string 或 None;
預設為 None說明可供說明文件產生工具擷取的屬性。 |
mandatory
|
bool;預設值為 False。 如果為 true,則必須明確指定值 (即使有 default 也一樣)。
|
字串
Attribute attr.string(configurable=unbound, default='', doc=None, mandatory=False, values=[])
參數
| 參數 | 說明 |
|---|---|
configurable
|
bool 或未繫結;
預設為 unbound這個引數只能用於指定符號巨集的屬性。 如果 對於規則或層面的屬性, |
default
|
字串或原生計算預設值;預設值為 ''。 如果在例項化規則時未提供此屬性的值,則會使用這個預設值。 |
doc
|
string 或 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。 如果屬性可為空白,則為「是」。 |
configurable
|
bool 或未繫結;
預設為 unbound這個引數只能用於指定符號巨集的屬性。 如果 對於規則或層面的屬性, |
default
|
字典;
預設值為 {}。 如果在例項化規則時未提供此屬性的值,則會使用這個預設值。 |
doc
|
string 或 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。 如果屬性可為空白,則為「是」。 |
configurable
|
bool 或未繫結;
預設為 unbound這個引數只能指定為符號巨集的屬性。 如果 對於規則或層面的屬性, |
default
|
字典或函式;
預設為 {}如果在例項化規則時未提供這個屬性的值,就會使用這個預設值。請使用字串或 Label 函式指定預設值,例如 attr.string_keyed_label_dict(default = {"foo": "//a:b", "bar": "//a:c"})。
|
doc
|
string 或 None;
預設為 None說明可供說明文件產生工具擷取的屬性。 |
allow_files
|
bool;或 字串的序列;或 None;預設為 None。是否允許 File 目標。可以是 True、False (預設值),或是允許的副檔名清單 (例如 [".cc", ".cpp"])。
|
allow_rules
|
字串的序列;或 None;預設為 None。 允許哪些規則目標 (類別名稱)。這項功能已淘汰 (僅保留用於相容性),請改用供應器。 |
providers
|
sequence;預設為 []。 這個屬性中出現的任何依附元件必須提供的供應器。 這個引數的格式為提供者清單的清單,也就是 |
for_dependency_resolution
|
預設為 unbound如果設定此屬性,Materializers 就能使用。只有標示為相同名稱的規則才能透過這類屬性參照。 |
flags
|
字串序列;預設為 []。已淘汰,將予以移除。 |
mandatory
|
bool;預設值為 False。 如果為 true,則必須明確指定值 (即使有 default 也一樣)。
|
cfg
|
預設為 None屬性的設定。可以是 "exec",表示依附元件是為 execution platform 建構;或是 "target",表示依附元件是為 target platform 建構。舉例來說,在建構行動應用程式時,target platform 為 Android 或 iOS,而 execution platform 則為 Linux、macOS 或 Windows。 |
aspects
|
切面的序列;預設值為 []。 應套用至此屬性指定的相依項目或相依項目的切面。 |
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。 如果屬性可為空白,則為「是」。 |
configurable
|
bool 或未繫結;
預設為 unbound這個引數只能用於指定符號巨集的屬性。 如果 對於規則或層面的屬性, |
default
|
字串的序列或 NativeComputedDefault;預設值為 []。 如果在例項化規則時未提供此屬性的值,則會使用這個預設值。 |
doc
|
string 或 None;
預設為 None說明可供說明文件產生工具擷取的屬性。 |
string_list_dict
Attribute attr.string_list_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, mandatory=False)
參數
| 參數 | 說明 |
|---|---|
allow_empty
|
bool;
預設為 True。 如果屬性可為空白,則為「是」。 |
configurable
|
bool 或未繫結;
預設為 unbound這個引數只能用於指定符號巨集的屬性。 如果 對於規則或層面的屬性, |
default
|
字典;
預設值為 {}。 如果在例項化規則時未提供此屬性的值,則會使用這個預設值。 |
doc
|
string 或 None;
預設為 None說明可供說明文件產生工具擷取的屬性。 |
mandatory
|
bool;預設值為 False。 如果為 true,則必須明確指定值 (即使有 default 也一樣)。
|