Attr

回報問題 查看原始碼 Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

這是頂層模組,用於定義規則或面向的屬性結構定義。每個函式都會傳回代表單一屬性架構的物件。這些物件會用做 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;預設值為 0
。如果在例項化規則時未提供此屬性的值,則會使用這個預設值。
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;預設值為 True
如果屬性可以留空,則值為 True。
configurable bool 或未繫結; 預設為 unbound
這個引數只能指定為符號巨集的屬性。

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

對於規則或層面的屬性,configurable 必須保持未繫結。大部分的 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性一律無法設定。

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
這個引數只能用於指定符號巨集的屬性。

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

對於規則或層面的屬性,configurable 必須保持未繫結。大部分的 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性一律無法設定。

default Label;或是 stringLateBoundDefault;或 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; 或 sequence;預設為 None
是否允許 File 目標。None可以是 TrueFalse (預設值),或是允許的副檔名清單 (例如 [".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;預設為 []
這個屬性中出現的任何依附元件必須提供的供應器。

這個引數的格式是提供者清單,由 provider() 傳回的 *Info 物件 (如果是舊版供應器,則為其字串名稱)。依附元件必須傳回至少一份內部清單中提及的「所有」提供者。為了方便起見,這個引數也可以是單一層級的供應器清單,在這種情況下,系統會將其包裝在包含一個元素的外部清單中。依附元件的規則並不需要在其 provides 參數中宣告這些供應器,但這項做法被視為最佳做法。

for_dependency_resolution 預設值為 unbound
如果設定了這個屬性,表示該屬性可供 Material Design 使用。只有標示為相同名稱的規則才能透過這類屬性參照。
allow_rules 字串序列;或 None;預設為 None
。 允許的規則目標 (類別名稱)。這項功能已淘汰 (僅保留相容性),請改用供應商。
cfg 預設為 None
屬性的設定。可以是 "exec",表示依附元件是為 execution platform 建構;或是 "target",表示依附元件是為 target platform 建構。這兩者之間的差異,最常見的例子就是在建構行動應用程式時,target platformAndroidiOS,而 execution platform 則是 LinuxmacOSWindows。如果 executable 為 True,則必須使用這個參數,以免在目標設定中不小心建構主機工具。"target" 沒有語意效果,因此如果 executable 為 False,請勿設定 "target",除非這有助於釐清您的意圖。
aspects 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
。 如果屬性可為空白,則為「是」。
configurable bool;或解除繫結;預設值為 unbound
。只有符號巨集的屬性才能指定這個引數。

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

對於規則或層面的屬性,configurable 必須保持未繫結。大部分的 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性一律無法設定。

default 字典函式;預設值為 {}
如果在例項化規則時未提供這個屬性的值,就會使用這個預設值。請使用字串或 Label 函式指定預設值,例如 attr.label_keyed_string_dict(default = {"//a:b": "value", "//a:c": "string"})
doc stringNone; 預設為 None
。 說明屬性,可由說明文件產生工具擷取。
allow_files bool;或 字串序列;或 None;預設為 None
。是否允許 File 目標。可以是 TrueFalse (預設值),或是允許的副檔名清單 (例如 [".cc", ".cpp"])。
allow_rules 字串sequence;或是 None;預設值為 None
允許使用哪些規則目標 (類別名稱)。這項功能已淘汰 (僅保留供相容性使用),請改用供應工具。
providers sequence;預設為 []
這個屬性中出現的任何依附元件必須提供的供應器。

這個引數的格式是提供者清單,由 provider() 傳回的 *Info 物件 (如果是舊版供應器,則為其字串名稱)。依附元件必須傳回至少一個內部清單中所提及的所有供應者。為了方便起見,這個引數也可以是單一層級的供應器清單,在這種情況下,系統會將其包裝在包含一個元素的外部清單中。依附元件的規則並不需要在其 provides 參數中宣告這些供應器,但這項做法被視為最佳做法。

for_dependency_resolution 預設值為 unbound
如果設定了這個屬性,表示該屬性可供 Material Design 使用。只有標示為相同名稱的規則才能透過這類屬性參照。
flags 字串sequence;預設值為 []
,將會移除。
mandatory bool;預設值為 False
。 如果為 true,則必須明確指定值 (即使有 default 也一樣)。
cfg 預設值為 None
屬性的「設定」。可以是 "exec",表示依附元件是為 execution platform 建構;或是 "target",表示依附元件是為 target platform 建構。這兩者之間的差異,最常見的例子就是在建構行動應用程式時,target platformAndroidiOS,而 execution platform 則是 LinuxmacOSWindows
aspects 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
。 如果屬性可為空白,則為「是」。
configurable bool 或未繫結; 預設為 unbound
這個引數只能用於指定符號巨集的屬性。

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

對於規則或層面的屬性,configurable 必須保持未繫結。大部分的 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性一律無法設定。

default 標籤序列函式;預設為 []
如果在例項化規則時未提供這個屬性的值,系統會使用預設值。請使用字串或 Label 函式指定預設值,例如 attr.label_list(default = ["//a:b", "//a:c"])
materializer function;預設值為 None
實驗功能。這個參數仍在實驗階段,可能隨時變更。請勿依賴這項功能。您可以設定 --experimental_dormant_deps
來啟用實驗功能。如果設定了這個屬性,系統就會從傳遞閉包中實現休眠中的依附元件。這個參數的值必須是函式,可存取規則屬性的值,這些屬性不是依附元件,或是標示為可用於依附元件解析。根據屬性的類型,必須傳回一個停滯依附元件或清單
doc stringNone; 預設為 None
。 說明屬性,可由說明文件產生工具擷取。
allow_files 字串bool; 或 sequence;預設為 None
是否允許 File 目標。None可以是 TrueFalse (預設值),或是允許的副檔名清單 (例如 [".cc", ".cpp"])。
allow_rules 字串序列;或 None;預設為 None
。 允許的規則目標 (類別名稱)。這項功能已淘汰 (僅保留供相容性使用),請改用供應工具。
providers sequence; 預設值為 []
必須由此屬性中顯示的任何依附元件提供。

這個引數的格式為提供者清單的清單,也就是 provider() 傳回的 *Info 物件 (如果是舊版提供者,則為其字串名稱)。依附元件必須傳回至少一個內部清單中所提及的所有供應者。為了方便起見,這個引數也可以是單一層級的供應器清單,在這種情況下,系統會將其包裝在包含一個元素的外部清單中。依附元件的規則並不需要在其 provides 參數中宣告這些供應器,但這項做法被視為最佳做法。

for_dependency_resolution 預設值為 unbound
如果設定了這個屬性,表示該屬性可供 Material Design 使用。只有標示為相同名稱的規則才能透過這類屬性參照。
flags 字串序列;預設為 []
。已淘汰,將會移除。
mandatory bool;預設值為 False
。 如果為 true,則必須明確指定值 (即使有 default 也一樣)。
skip_validations bool;預設值為 False
如果設為 true,此屬性遞移依附元件的驗證動作將不會執行。這是暫時性緩解措施,日後將會移除。
cfg 預設為 None
屬性的設定。可以是 "exec",表示依附元件是為 execution platform 建構;或是 "target",表示依附元件是為 target platform 建構。這兩者之間的差異,最常見的例子就是在建構行動應用程式時,target platformAndroidiOS,而 execution platform 則是 LinuxmacOSWindows
aspects Aspect序列;預設值為 []
。 應套用至此屬性指定的相依項目或相依項目的面向。

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; 預設為 True
。 如果屬性可為空白,則為「是」。
doc stringNone; 預設為 None
。 說明屬性,可由說明文件產生工具擷取。
mandatory bool;預設值為 False
。 如果為 true,則必須明確指定值 (即使有 default 也一樣)。

字串

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

string 屬性建立結構定義。

參數

參數 說明
configurable bool;或解除繫結;預設值為 unbound
。只有符號巨集的屬性才能指定這個引數。

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

如為規則或切面的屬性,configurable 必須不繫結。大部分的 Starlark 規則屬性隨時都可設定,但 attr.output()attr.output_list()attr.license() 規則屬性除外,這些屬性一律無法設定。

default 字串或原生計算預設值;預設值為 ''
。 如果在例項化規則時未提供此屬性的值,則會使用這個預設值。
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;預設值為 True
如果屬性可以留空,則值為 True。
configurable bool;或解除繫結;預設值為 unbound
。只有符號巨集的屬性才能指定這個引數。

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

對於規則或層面的屬性,configurable 必須保持未繫結。大部分的 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性一律無法設定。

default 字典; 預設值為 {}
如果在例項化規則時未提供此屬性的值,則會使用這個預設值。
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;預設值為 True
如果屬性可以留空,則值為 True。
configurable bool 或未繫結; 預設為 unbound
這個引數只能指定為符號巨集的屬性。

如果 configurable 已明確設為 False,符號型巨集屬性就無法設定,也就是說,該巨集屬性不得為 select() 值。如果 configurable 未繫結或明確設為 True,則該屬性可以設定,且可接受 select() 值。

對於規則或層面的屬性,configurable 必須保持未繫結。大部分的 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性一律無法設定。

default dict; 或 function;預設值為 {}
在規則例項化時,如果沒有指定此屬性的值,系統會使用字串或 Label 函式指定預設值,例如 attr.string_keyed_label_dict(default = {"foo": "//a:b", "bar": "//a:c"})
doc stringNone; 預設為 None
。 說明屬性,可由說明文件產生工具擷取。
allow_files bool;或 字串序列;或 None;預設為 None
。是否允許 File 目標。可以是 TrueFalse (預設),或是允許的副檔名清單 (例如 [".cc", ".cpp"])。
allow_rules 字串序列;或 None;預設為 None
。 允許的規則目標 (類別名稱)。這項功能已淘汰 (僅保留供相容性使用),請改用供應工具。
providers sequence;預設值為 []
凡是出現在這項屬性中的依附元件,都必須提供提供者。

這個引數的格式是提供者清單,由 provider() 傳回的 *Info 物件 (如果是舊版供應器,則為其字串名稱)。依附元件必須傳回至少一份內部清單中提及的「所有」提供者。為了方便起見,這個引數也可以是單一層級的供應器清單,在這種情況下,系統會將其包裝在包含一個元素的外部清單中。依附元件的規則並不需要在其 provides 參數中宣告這些供應器,但這項做法被視為最佳做法。

for_dependency_resolution 預設為 unbound
如果設定此值,屬性可供 Materializer 使用。只有標有相同名稱的規則才能透過這類屬性參照。
flags 字串序列;預設為 []
。已淘汰,將會移除。
mandatory bool;預設值為 False
。 如果為 true,則必須明確指定值 (即使有 default 也一樣)。
cfg 預設為 None
屬性的設定。可以是 "exec",表示依附元件是為 execution platform 建構;或是 "target",表示依附元件是為 target platform 建構。這兩者之間的差異,最常見的例子就是在建構行動應用程式時,target platformAndroidiOS,而 execution platform 則是 LinuxmacOSWindows
aspects 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
這個引數只能用於指定符號巨集的屬性。

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

如為規則或切面的屬性,configurable 必須不繫結。大部分的 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性一律無法設定。

default stringsequence;或 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;預設值為 True
如果屬性可以留空,則值為 True。
configurable bool;或解除繫結;預設值為 unbound
。只有符號巨集的屬性才能指定這個引數。

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

對於規則或層面的屬性,configurable 必須保持未繫結。大部分的 Starlark 規則屬性一律可設定,但 attr.output()attr.output_list()attr.license() 規則屬性一律無法設定。

default 字典; 預設值為 {}
如果在例項化規則時未提供此屬性的值,則會使用這個預設值。
doc stringNone; 預設為 None
。 說明屬性,可由說明文件產生工具擷取。
mandatory bool;預設值為 False
。 如果為 true,則必須明確指定值 (即使有 default 也一樣)。