成員
- 全部
- analysis_test_transition
- any
- archive_override
- aspect
- bazel_dep
- bind
- bool
- configuration_field
- depset
- dict
- dir
- 列舉
- exec_group
- fail
- float
- getattr
- git_override
- hasattr
- hash
- int
- len
- list
- local_path_override
- max
- min
- module
- module_extension
- multiple_version_override
- 提供者
- 範圍
- register_execution_platforms()
- register_execution_platforms()
- register_toolchains()
- register_toolchains()
- repository_rule(implementation, 屬性, 本機, Environ, 設定, remotable, 文件)
- repository_rule(implementation, 屬性, 本機, Environ, 設定, remotable, 文件)
- repr
- 反向
- 規則
- 選取
- single_version_override
- 已排序
- str
- tag_class
- tuple
- 類型
- use_extension
- use_repo
- 瀏覽權限
- 工作區
- zip
全部
bool all(elements)如果所有元素評估結果為 True 或集合為空白,則傳回 true。系統會使用 bool 函式將元素轉換為布林值。
all(["hello", 3, True]) == True all([-1, 0, 1]) == False
參數
參數 | 說明 |
---|---|
elements
|
必要 是字串或一組元素。 |
analysis_test_transition
transition analysis_test_transition(settings)
建立設定轉換作業,以便套用至分析-測試規則的依附元件。這項轉場效果僅適用於含有 analysis_test = True
的規則屬性。這類規則在功能上有所限制 (例如依附元件樹狀結構的大小有限),因此與使用轉換功能建立的轉換作業相比,使用這個函式建立的轉換作業可能在潛在範圍內受到限制。
這項功能主要用於協助分析測試架構核心程式庫。如要瞭解最佳做法,請參閱說明文件 (或其實作)。
參數
參數 | 說明 |
---|---|
settings
|
必要 字典,其中含有設定轉換時應指定的配置設定資訊。鍵是建構設定標籤,值是轉換後的新值。所有其他設定則維持不變。可用來宣告分析測試必須設定的特定配置設定,才算通過。 |
不限
bool any(elements)如果有至少一個元素評估為 True,系統會傳回 true。系統會使用 bool 函式將元素轉換為布林值。
any([-1, 0, 1]) == True any([False, 0, ""]) == False
參數
參數 | 說明 |
---|---|
elements
|
必要 是字串或一組元素。 |
archive_override
None archive_override(module_name, urls, integrity='', strip_prefix='', patches=[], patch_cmds=[], patch_strip=0)指定這項依附元件應來自特定位置的封存檔案 (zip、gzip 等),而非來自註冊資料庫。這個指令只能由根模組使用,換句話說,如果模組指定任何覆寫值,其他人就無法將其做為依附元件使用。
參數
參數 | 說明 |
---|---|
module_name
|
必要 要套用此覆寫設定的 Bazel 模組依附元件的名稱。 |
urls
|
string; or Iterable of strings ;
必填封存檔案的網址,可以是 http(s):// 或 file:// 網址。 |
integrity
|
default =「' 封存檔案的預期檢查碼,採用 Subresource Integrity 格式。 |
strip_prefix
|
default = ' 用於移除擷取檔案中的目錄前置字串。 |
patches
|
Iterable of strings ;
default = []標籤清單,指向要套用至這個模組的修補程式檔案。修補檔案必須位於頂層專案的來源樹狀結構中。系統會依據清單順序套用這些變數。 |
patch_cmds
|
Iterable of strings ;
default = []套用修補程式後,要套用到 Linux/Macos 的 Bash 指令序列。 |
patch_strip
|
default = 0 與 Unix 修補程式的 --strip 引數相同。 |
切面
Aspect aspect(implementation, attr_aspects=[], attrs=None, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None)建立新的切面。這個函式的結果必須儲存在全域值中。詳情請參閱「切面簡介」。
參數
參數 | 說明 |
---|---|
implementation
|
必要 一個會實作這層面的 Starlark 函式,必須包含兩個參數:Target (套用目標的目標) 和 ctx (目標建立來源的規則結構定義)。您可以透過 ctx.rule 欄位取得目標的屬性。這個函式會在分析階段,針對每個對目標應用的評估進行評估。 |
attr_aspects
|
sequence of strings ;預設值 = []屬性名稱清單。該部分會隨目標屬性中指定的依附元件傳播這些名稱。這裡的常見值包括 deps 和 exports 。清單也可以包含單一字串 "*" ,以於目標的所有依附元件之間傳播。 |
attrs
|
dict; or None ;
default = None聲明面向所有屬性的字典。它會從屬性名稱對應至屬性物件,例如「attr.label」或「attr.string」(請參閱 attr 模組)。規格屬性可做為 ctx 參數的欄位,用於實作函式。以 明確屬性必須具備 |
required_providers
|
default = [] 這項屬性可以限制該長寬比,限制只對規則宣傳必要供應商的目標指定對象。此值必須是包含個別供應商或供應商清單的清單,但請勿兩者並用。舉例來說, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] 是有效值,而 [FooInfo, BarInfo, [BazInfo, QuxInfo]] 無效。無巢狀的供應商清單會自動轉換為包含一份供應商清單的清單。換句話說, 為了讓某些規則 (例如 |
required_aspect_providers
|
default = [] 這個屬性可用來檢查其他層面。此值必須是包含個別供應商或供應商清單的清單,但請勿兩者並用。舉例來說, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] 是有效值,而 [FooInfo, BarInfo, [BazInfo, QuxInfo]] 無效。無巢狀的供應商清單會自動轉換為包含一份供應商清單的清單。換句話說, 如要讓此部分呈現其他面向 (例如 |
provides
|
default = [] 實作函式必須傳回的供應商清單。 如果實作函式從其傳回值中省略任何這裡列出的提供者類型,則會導致錯誤。然而,實作函式可能會傳回此處未列出的其他提供者。 清單的每個元素都是 |
requires
|
sequence of Aspects ;
default = []在這個階段之前必須套用的切面清單。 |
fragments
|
sequence of strings ;
預設值 = []切面目標設定中需要的設定片段名稱清單。 |
host_fragments
|
sequence of strings ;
預設值 = []方在主機設定中需要的設定片段名稱清單。 |
toolchains
|
sequence ;
default = []如果已設定,這項規則所需的工具鍊組合。清單可包含 String、Label 或 StarlarkToolchainTypeApi 物件,任何組合皆可。查看目前的平台即可找到工具鍊,並透過 ctx.toolchain 提供給規則實作。 |
incompatible_use_toolchain_transition
|
default = False 已淘汰,已淘汰,應移除。 |
doc
|
default = ' 說明文件產生工具可擷取的層面。 |
apply_to_generating_rules
|
default = False 如果為 true,表示在輸出檔案上套用時,會改套用至輸出檔案的產生規則。 例如,假設某個切面會透過 `deps` 屬性遞移傳播,且該屬性套用至目標 `alpha`。Suppose `alpha` 具有 `deps = [':beta_output']`,其中 `beta_output` 是目標 `beta` 的宣告輸出內容。Suppose `beta` 中的 `deps` 則僅是 `deps`alpha_alpha。 預設為 False。 |
exec_compatible_with
|
sequence of strings ;
預設值 = []執行平台上的限制條件清單,適用於這個層級的所有執行個體。 |
exec_groups
|
dict; or None ;
default = None將執行群組名稱 (字串) 轉換為 exec_group 。設定後,讓切面可在單一執行個體中的多個執行平台上執行動作。詳情請參閱執行群組說明文件。 |
bazel_dep
None bazel_dep(name, version='', repo_name='', dev_dependency=False)宣告另一個 Bazel 模組的直接依附元件。
參數
參數 | 說明 |
---|---|
name
|
必要 要新增為直接依附元件的模組名稱。 |
version
|
default = ' 要新增為直接依附元件的模組版本。 |
repo_name
|
default = ' 代表這個依附元件的外部存放區名稱。根據預設,這會是模組的名稱。 |
dev_dependency
|
default = False 如果為 true,系統會忽略這個依附元件;如果目前的模組不是根模組,或已啟用「--ignore_dev_dependency」,系統就會忽略這個依附元件。 |
bind
None bind(name, actual=None)
警告:不建議使用 bind()
。請參閱考慮移除繫結,以便長時間討論問題和替代方案。
在 //external
套件中向目標提供別名。
參數
參數 | 說明 |
---|---|
name
|
必要 「//external」下方的標籤可做為別名名稱 |
actual
|
string; or None ;
default = None要新增別名的實際標籤 |
bool
bool bool(x=False)布林值類型的建構函式。如果物件為
None
、False
、空白字串 (""
)、數字 0
或空白集合 (例如 ()
、[]
),則會傳回 False
。否則,會傳回 True
。
參數
參數 | 說明 |
---|---|
x
|
default = False 要轉換的變數。 |
configuration_field
LateBoundDefault configuration_field(fragment, name)參照類型為 label 的屬性預設值。如果設定必須先建構才能判斷值,則值為「遲到」。凡是以這個值做為值的屬性,都必須為 private。
使用範例:
定義規則屬性:
'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))
導入規則時存取:
def _rule_impl(ctx): foo_info = ctx.attr._foo ...
參數
參數 | 說明 |
---|---|
fragment
|
必要 包含延遲值的設定片段名稱。 |
name
|
必要 要從設定片段取得的值名稱。 |
解壓縮
depset depset(direct=None, order="default", *, transitive=None)建立「depset」。
direct
參數是解碼器的直接元素清單,transitive
參數是解碼器清單,其元素會成為已建立解碼器的間接元素。元素在 Depset 轉換為清單時傳回的順序,是由 order
參數指定。詳情請參閱「Depsets 總覽」。依附元件的所有元素 (直接和間接) 都必須與運算式 type(x)
取得的類型相同。
由於雜湊集是用來在疊代期間刪除重複項目,因此資料集的所有元素都應該要能進行雜湊處理。不過,目前並非所有建構函式中都會檢查這個不變性。使用 --incompatible_always_check_depset_elements 標記來啟用一致的檢查功能,這是日後版本中的預設行為;請參閱問題 10313。
此外,元素目前必須無法變更,但日後將會放寬。
已建立的解碼器順序應與其 transitive
解碼順序相容。「"default"
」訂單與任何其他訂單相容,所有其他訂單則僅相容。
回溯/往前相容性注意事項。這個函式目前接受位置 items
參數。已淘汰且日後將移除,其移除的 direct
會成為 depset
函式的單一位置參數。因此,下列兩種呼叫情況相同,且能因應未來趨勢:
depset(['a', 'b'], transitive = [...]) depset(direct = ['a', 'b'], transitive = [...])
參數
參數 | 說明 |
---|---|
direct
|
sequence; or None ;
預設值 = None欠位的「direct」元素清單。 |
order
|
default = "default" 新變數的周遊策略。如要查看可能的值,請參閱這篇文章。 |
transitive
|
sequence of depsets; or None ;
default = None預設變數清單,其中元素會成為解碼器的間接元素。 |
dict
dict dict(pairs=[], **kwargs)從選用的位置引數和一組選用的關鍵字引數建立字典。如果多次指定同一個鍵,系統會使用最後一個值。凡是透過關鍵字引數提供的項目,都會視為透過位置引數提供的項目。
參數
參數 | 說明 |
---|---|
pairs
|
預設 = [] 字典或可疊代元素,元素為長度為 2 的 (鍵、值)。 |
kwargs
|
必填 其他項目的字典。 |
dir
list dir(x)傳回字串清單,也就是屬性物件的屬性名稱和方法。
參數
參數 | 說明 |
---|---|
x
|
必要 要檢查的物件。 |
列舉
list enumerate(list, start=0)傳回對 (雙元素元組) 的清單,其中包含索引 (int) 和輸入序列中的項目。
enumerate([24, 21, 84]) == [(0, 24), (1, 21), (2, 84)]
參數
參數 | 說明 |
---|---|
list
|
必填 輸入序列。 |
start
|
預設 = 0 起始索引。 |
exec_group
exec_group exec_group(toolchains=[], exec_compatible_with=[], copy_from_rule=False)建立執行群組,以便在規則導入期間為特定執行平台建立動作。
參數
參數 | 說明 |
---|---|
toolchains
|
sequence ;
default = []這個執行群組需要的工具鍊組合。清單可包含 String、Label 或 StarlarkToolchainTypeApi 物件,任何組合皆可。 |
exec_compatible_with
|
sequence of strings ;
預設值 = []執行平台的限制清單。 |
copy_from_rule
|
default = False 如果設為 true,這個執行群組就會沿用這個群組附加規則的工具鍊和限制條件。如果設為其他字串,就會擲回錯誤。 |
失敗
None fail(msg=None, attr=None, *args)導致執行失敗並顯示錯誤。
參數
參數 | 說明 |
---|---|
msg
|
default = None 已淘汰:改用位置引數。此引數的行為類似於隱含位置的引數。 |
attr
|
string; or None ;
default = None已淘汰。使包含此字串的選用前置字串可以加入錯誤訊息。 |
args
|
必要 錯誤訊息中以 str 格式連接和以空格連接的值清單。 |
float
float float(x=unbound)以浮點值傳回 x。
- 如果
x
已經是浮點值,float
會傳回未變更的值。 - 如果
x
是布林值,float
會傳回 1.0 代表 True,而 False 會傳回 0.0。 - 如果
x
是 int,float
會傳回最接近 x 的有限浮點值;如果規模過大,就會發生錯誤。 - 如果
x
是字串,該常值必須是有效的浮點常值,或是等於 (忽略大小寫) 至NaN
、Inf
或Infinity
,並視需要在+
或-
符號前面加上+
或-
。
float()
會傳回 0.0。
參數
參數 | 說明 |
---|---|
x
|
default = unbound 要轉換的值。 |
getattr
unknown getattr(x, name, default=unbound)傳回指定名稱的 struct 欄位 (如果有的話)。如果沒有,則會傳回
default
(如有指定) 或引發錯誤。getattr(x, "foobar")
相當於 x.foobar
。getattr(ctx.attr, "myattr") getattr(ctx.attr, "myattr", "mydefault")
參數
參數 | 說明 |
---|---|
x
|
必要 存取屬性的結構體。 |
name
|
必填 結構屬性的名稱。 |
default
|
default = unbound 如果結構體沒有指定名稱的屬性,系統會傳回預設值。 |
git_override
None git_override(module_name, remote, commit='', patches=[], patch_cmds=[], patch_strip=0)指定依附元件應來自 Git 存放區的特定修訂版本。這個指令只能由根模組使用,換句話說,如果模組指定任何覆寫值,其他人就無法將其做為依附元件使用。
參數
參數 | 說明 |
---|---|
module_name
|
必要 要套用此覆寫設定的 Bazel 模組依附元件的名稱。 |
remote
|
必要 遠端 Git 存放區的網址。 |
commit
|
default = ' 應簽出的修訂版本。 |
patches
|
Iterable of strings ;
default = []標籤清單,指向要套用至這個模組的修補程式檔案。修補檔案必須位於頂層專案的來源樹狀結構中。系統會依據清單順序套用這些變數。 |
patch_cmds
|
Iterable of strings ;
default = []套用修補程式後,要套用到 Linux/Macos 的 Bash 指令序列。 |
patch_strip
|
default = 0 與 Unix 修補程式的 --strip 引數相同。 |
哈薩特
bool hasattr(x, name)如果物件
x
具有指定 name
的屬性或方法,則傳回 True,否則傳回 False。範例:hasattr(ctx.attr, "myattr")
參數
參數 | 說明 |
---|---|
x
|
必要 要檢查的物件。 |
name
|
必填 屬性的名稱。 |
hash
int hash(value)傳回字串的雜湊值。系統會採用與 Java 的
String.hashCode()
相同的演算法,確定演算法是否有效。 s[0] * (31^(n-1)) + s[1] * (31^(n-2)) + ... + s[n-1]目前仍不支援字串以外的值雜湊。
參數
參數 | 說明 |
---|---|
value
|
必要 要雜湊處理的字串值。 |
int
int int(x, base=unbound)以 int 值傳回 x。
- 如果
x
已是 int,int
會傳回未變更的值。 - 如果
x
是布林值,int
會傳回 1 代表 True,0 則會傳回 0 代表 False。 - 如果
x
是字串,則必須採用<sign><prefix><digits>
格式。<sign>
為"+"
、"-"
或空白 (視為正值)。<digits>
是介於 0 到base
到 1 之間的一系列數字,其中 10 到 35 的字母 a-z (或同等 A 到 Z) 會使用為數字。如果base
為 2/8/16,<prefix>
是選用項目,分別可以是 0b/0o/0x (或相等的 0B/0O/0X);如果base
是這些底數以外的任何其他值或特殊值 0,則前置字串必須空白。在此情況下,base
為 0 時,系統會將字串解譯為整數常值,因為如果使用任何前置字串,系統會根據 2/8/10/16 的底數選擇其中一個底數。如果base
為 0,就不會使用前置字元,且開頭不得為 0 個數字,前置字元不能為 0,以避免八進位與小數之間混淆。字串代表的數字規模,必須在 int 類型允許範圍內。 - 如果
x
是浮點值,int
會傳回浮點數的整數值 (無條件進位為零)。如果 x 不是有限 (NaN 或無限大),則將視為錯誤。
x
是任何其他類型,或者值是不符合上述格式的字串,這個函式就會失敗。與 Python 的 int
函式不同,這個函式不允許零引數,也不允許字串引數出現多餘的空白字元。範例:
int("123") == 123 int("-123") == -123 int("+123") == 123 int("FF", 16) == 255 int("0xFF", 16) == 255 int("10", 0) == 10 int("-0x10", 0) == -16 int("-0x10", 0) == -16 int("123.456") == 123
參數
參數 | 說明 |
---|---|
x
|
必要 要轉換的字串。 |
base
|
預設值為 10,用於解譯字串值的基礎。 必須介於 2 到 36 (含) 之間,或是設為 0,以便偵測底數,並將 x 視為整數常值。如果值不是字串,則不得提供這個參數。 |
len
int len(x)傳回字串、序列 (例如清單或元組)、dict 或其他可疊代字串的長度。
參數
參數 | 說明 |
---|---|
x
|
必要 要回報長度的值。 |
list
list list(x=[])傳回元素與指定的疊代值具有相同元素的新清單。
list([1, 2]) == [1, 2] list((2, 3, 2)) == [2, 3, 2] list({5: "a", 2: "b", 4: "c"}) == [5, 2, 4]
參數
參數 | 說明 |
---|---|
x
|
default = [] 要轉換的物件。 |
local_path_override
None local_path_override(module_name, path)指定依附元件應來自本機磁碟的特定目錄。這個指令只能由根模組使用,換句話說,如果模組指定任何覆寫值,其他人就無法將其做為依附元件使用。
參數
參數 | 說明 |
---|---|
module_name
|
必要 要套用此覆寫設定的 Bazel 模組依附元件的名稱。 |
path
|
必要 這個模組的目錄路徑。 |
最高
unknown max(*args)傳回所有指定引數中最大的一個。如果只提供一個引數,該引數就必須是非空白的疊代。如果元素無法比較 (例如含有字串的 int),或者沒有提供引數,則會導致錯誤。
max(2, 5, 4) == 5 max([5, 6, 3]) == 6
參數
參數 | 說明 |
---|---|
args
|
必要 要檢查的元素。 |
分鐘
unknown min(*args)傳回所有指定引數中的最小一個。如果只提供一個引數,該引數不能空白。如果元素無法比較 (例如含有字串的 int),或沒有提供引數,就會發生錯誤。
min(2, 5, 4) == 2 min([5, 6, 3]) == 3
參數
參數 | 說明 |
---|---|
args
|
必要 要檢查的元素。 |
module
None module(name='', version='', compatibility_level=0, repo_name='', bazel_compatibility=[])宣告目前 Bazel 存放區代表的 Bazel 模組特定屬性。這些屬性是模組的重要中繼資料 (例如名稱和版本),也可能影響目前模組及其依附元件的行為。
應最多呼叫一次。只有在此模組為根模組時,才能省略這個類別 (同理,如果此模組不依賴於其他模組)。
參數
參數 | 說明 |
---|---|
name
|
default = '' 模組的名稱。只有在此模組為根模組時才能省略 (例如,此模組不依賴於其他模組時)。有效的模組名稱必須符合以下條件:1) 只能包含小寫英文字母 (a 到 z)、數字 (0 至 9)、半形句號 (.)、連字號 (-) 和底線 (_);2) 開頭是小寫英文字母;3) 結尾為小寫英文字母或數字。 |
version
|
default = '' 模組的版本。只有在此模組為根模組時,才能省略 (例如,此模組不依賴於其他模組時)。 |
compatibility_level
|
預設值 = 0 模組的相容性等級;每次出現重大不相容的變更時,都應變更此設定。就 SemVer 而言,這基本上是模組的「主要版本」,只是不會嵌入版本字串本身,但是以獨立欄位的形式存在。具有不同相容性等級的模組會在版本解析中參與版本解析,就像它們是名稱不同的模組一樣,但最終依附元件圖不能包含名稱相同但相容性等級不同的多個模組 (除非使用中的 multiple_version_override ,詳情請參閱本文)。 |
repo_name
|
default = ' 代表這個模組的存放區名稱,如模組本身所示。存放區的名稱預設為模組名稱。您可以指定此操作容易為使用存放區名稱與模組名稱不同的專案遷移。 |
bazel_compatibility
|
Iterable of strings ;
default = []bazel 版本清單,可讓使用者宣告哪些 Bazel 版本與這個模組相容。這不會影響依附元件解析,但 bzlmod 會使用這項資訊檢查您目前的 Bazel 版本是否相容。這個值的格式是部分限制值的字串,並以半形逗號分隔。目前支援三項限制:<=X.X.X:Bazel 版本必須等於或大於 X.X.X。在較新版本中有已知不相容的變更時。>=X.X.X:Bazel 版本必須等於或高於 X.X.X。當您需要使用時只能在 X.X.X. -X.X.X 之後取得的部分功能時,就會使用 Bazel 版本 X.X.X 不相容。會在 X.X.X 中發生錯誤,導致您發現問題,但在較新版本中修正。 |
module_extension
unknown module_extension(implementation, *, tag_classes={}, doc='')建立新的模組擴充功能。請將其儲存在全域值中,以便匯出並用於 MODULE.bazel 檔案。
參數
參數 | 說明 |
---|---|
implementation
|
必要 實作此模組擴充功能的函式。必須使用單一參數 module_ctx 。系統會在建構開始時呼叫此函式一次,藉此判斷一組可用的存放區。 |
tag_classes
|
default = {} 這個字典可宣告擴充功能使用的所有標記類別。該類別會從標記類別的名稱對應至 tag_class 物件。 |
doc
|
default = ' 可透過說明文件產生工具擷取的模組擴充功能說明。 |
multiple_version_override
None multiple_version_override(module_name, versions, registry='')指定依附元件應來自註冊資料庫,但應允許多個版本共存。這個指令只能由根模組使用,換句話說,如果模組指定任何覆寫值,其他人就無法將其做為依附元件使用。
參數
參數 | 說明 |
---|---|
module_name
|
必要 要套用此覆寫設定的 Bazel 模組依附元件的名稱。 |
versions
|
Iterable of strings ;必要明確指定可同時存在的版本。依附元件圖表的預先選取項目中必須已有這些版本。此模組的依附元件會「升級」至相同相容性等級中最接近的可用版本,如果依附元件版本高於相同相容性等級的任何可用版本,就會導致錯誤。 |
registry
|
default = ' 覆寫這個模組的登錄檔;應使用指定的註冊資料庫,而不是從預設的註冊資料庫清單中尋找這個模組。 |
顯示
None print(sep=" ", *args)將
args
列印為偵錯輸出內容。而且前面會加上 "DEBUG"
字串和這個呼叫的位置 (檔案和行號)。引數轉換為字串的確切方式未指定,且可能隨時變更。具體而言,這種格式可能與 str()
和 repr()
的格式不同,也較為詳細。我們不建議在正式版程式碼中使用 print
,因為這會為使用者建立的垃圾內容。針對淘汰項目,請盡可能使用 fail()
做出硬性錯誤。
參數
參數 | 說明 |
---|---|
sep
|
default = " " 物件之間的分隔符字串預設為空格 (「 」)。 |
args
|
必要 要列印的物件。 |
供應商
unknown provider(doc='', *, fields=None, init=None)定義提供者符號。您可以呼叫供應器並將其例項化,或直接做為金鑰,從目標擷取該供應者的執行個體。例如:
MyInfo = provider() ... def _my_library_impl(ctx): ... my_info = MyInfo(x = 2, y = 3) # my_info.x == 2 # my_info.y == 3 ...
如需關於使用供應商的完整指南,請參閱規則 (供應商) 一文。
如未指定 init
,則傳回 Provider
可呼叫值。
如果指定 init
,會傳回 2 個元素的元組:Provider
可呼叫值和原始建構函式可呼叫值。詳情請參閱規則 (自訂供應商的自訂初始化功能) 和 init
參數的討論。
參數
參數 | 說明 |
---|---|
doc
|
default =「' 」提供者的說明,可透過說明文件產生工具擷取。 |
fields
|
sequence of strings; or dict; or None ;
default = None指定的話,會限制允許的欄位組合。 可能的值包括:
|
init
|
callable; or None ;
default = None在例項化期間,用於預先處理及驗證供應器欄位值的選用回呼。如果指定 init ,provider() 會傳回 2 個元素的元組:一般提供者符號和原始建構函式。詳細說明請見下方「規則 (自訂供應商初始化)」一文。 呼叫
init 回呼,則呼叫 P 符號本身就會做為對預設建構函式函式 c 的呼叫;換句話說,P(*args, **kwargs) 會傳回 c(*args, **kwargs) 。舉例來說,MyInfo = provider() m = MyInfo(foo = 1)會立即讓 m 成為具有 m.foo == 1 的 MyInfo 執行個體。但是,如果已指定
NB:上述步驟意味著如果 透過這種方式, 如果指定 MyInfo, _new_myinfo = provider(init = ...) |
range
sequence range(start_or_stop, stop_or_none=None, step=1)以
step
增量建立項目從 start
到 stop
的清單。如果提供單一引數,項目的範圍會從 0 到該元素。range(4) == [0, 1, 2, 3] range(3, 9, 2) == [3, 5, 7] range(3, 0, -1) == [3, 2, 1]
參數
參數 | 說明 |
---|---|
start_or_stop
|
必要 如果提供停靠站,起始元素值,則停靠站和實際起始值為 0 |
stop_or_none
|
int; or None ;
default = None第一個項目「不」的選用索引,不在結果清單中;系統會在達到 stop 前停止產生清單。
|
step
|
預設 = 1 遞增 (預設為 1)。可能是負值。 |
register_execution_platforms()
None register_execution_platforms(*platform_labels)註冊已定義的平台,讓 Bazel 在工具鍊解析期間將其做為執行平台使用。
參數
參數 | 說明 |
---|---|
platform_labels
|
sequence of strings ;
必填要註冊的平台標籤。 |
register_execution_platforms()
None register_execution_platforms(*platform_labels)選取這個模組時,指定要註冊的已定義執行平台。應為絕對目標模式 (例如以
@
或 //
開頭)。詳情請參閱工具鍊解析。
參數
參數 | 說明 |
---|---|
platform_labels
|
sequence of strings ;
必填要註冊的平台標籤。 |
register_toolchains()
None register_toolchains(*toolchain_labels)註冊已定義的工具鍊,讓 Bazel 能在工具鍊解析期間使用該工具鍊。請參閱定義和註冊工具鍊的範例。
參數
參數 | 說明 |
---|---|
toolchain_labels
|
sequence of strings ;
必要要註冊的工具鍊標籤。 |
register_toolchains()
None register_toolchains(*toolchain_labels)選取這個模組時,指定要註冊的已定義工具鍊。應為絕對目標模式 (例如以
@
或 //
開頭)。詳情請參閱工具鍊解析。
參數
參數 | 說明 |
---|---|
toolchain_labels
|
sequence of strings ;
必要要註冊的工具鍊標籤。 |
Repositories_rule(implementation, 屬性, 本機, Environ, 設定, 可重新遷移, 文件)
callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')建立新的存放區規則。請將其儲存在全域值中,以便從 WORKSPACE 檔案載入及呼叫。
參數
參數 | 說明 |
---|---|
implementation
|
需要 實作這項規則的函式。必須具有單一參數 repository_ctx 。系統會在載入階段,針對每個規則例項呼叫此函式。 |
attrs
|
dict; or None ;
default = None字典,宣告規則的所有屬性。它會從屬性名稱對應至屬性物件 (請參閱 attr 模組)。以 _ 開頭的屬性為不公開,可用於在檔案中加入標籤隱含依附元件 (存放區規則無法依附於產生的構件)。name 屬性是以隱含方式新增,不得指定。 |
local
|
default = False 表示這項規則會從本機系統擷取所有資料,因此每次擷取時都必須重新評估。 |
environ
|
sequence of strings ;
default = []提供這個存放區規則依附的環境變數清單。如果這份清單中的環境變數有所變更,系統會重新擷取存放區。 |
configure
|
default = False 表示存放區會檢查系統以達到設定目的 |
remotable
|
default = False 實驗功能。這個參數仍在實驗階段,隨時可能變更。請勿完全仰賴它。設定 ---experimental_repo_remote_exec 與遠端執行作業相容,即可以實驗為基礎啟用此功能 |
doc
|
default =「' 」說明存放區規則,可透過說明文件產生工具擷取。 |
Repositories_rule(implementation, 屬性, 本機, Environ, 設定, 可重新遷移, 文件)
callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')建立新的存放區規則。請將其儲存在全域值中,以便從 WORKSPACE 檔案載入及呼叫。
參數
參數 | 說明 |
---|---|
implementation
|
需要 實作這項規則的函式。必須具有單一參數 repository_ctx 。系統會在載入階段,針對每個規則例項呼叫此函式。 |
attrs
|
dict; or None ;
default = None字典,宣告規則的所有屬性。它會從屬性名稱對應至屬性物件 (請參閱 attr 模組)。以 _ 開頭的屬性為不公開,可用於在檔案中加入標籤隱含依附元件 (存放區規則無法依附於產生的構件)。name 屬性是以隱含方式新增,不得指定。 |
local
|
default = False 表示這項規則會從本機系統擷取所有資料,因此每次擷取時都必須重新評估。 |
environ
|
sequence of strings ;
default = []提供這個存放區規則依附的環境變數清單。如果這份清單中的環境變數有所變更,系統會重新擷取存放區。 |
configure
|
default = False 表示存放區會檢查系統以達到設定目的 |
remotable
|
default = False 實驗功能。這個參數仍在實驗階段,隨時可能變更。請勿完全仰賴它。設定 ---experimental_repo_remote_exec 與遠端執行作業相容,即可以實驗為基礎啟用此功能 |
doc
|
default =「' 」說明存放區規則,可透過說明文件產生工具擷取。 |
資源表
string repr(x)將任何物件轉換成字串表示法。這對於偵錯非常有用。
repr("ab") == '"ab"'
參數
參數 | 說明 |
---|---|
x
|
必要 要轉換的物件。 |
已撤銷
list reversed(sequence)傳回不凍結的新清單,其中包含原始可疊代序列的元素。
reversed([3, 5, 4]) == [4, 5, 3]
參數
參數 | 說明 |
---|---|
sequence
|
必要 要反轉的可疊代序列 (例如清單)。 |
規則
callable rule(implementation, test=False, attrs=None, outputs=None, executable=False, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, compile_one_filetype=None, name=None)建立新規則,您可以透過 BUILD 檔案或巨集呼叫新規則來建立目標。
規則必須指派給 .bzl 檔案中的全域變數;全域變數名稱是規則名稱。
測試規則的名稱結尾必須是 _test
,而所有其他規則都不得有這個後置字串。(這項限制僅適用於規則,不適用於指定目標)。
參數
參數 | 說明 |
---|---|
implementation
|
必要 實作這項規則的 Starlark 函式只能含有一個參數:ctx。系統會在分析階段中,針對每個規則例項呼叫此函式。可存取使用者提供的屬性。必須建立動作來產生所有宣告的輸出內容。 |
test
|
default = False 此規則是否為測試規則,也就是是否屬於 blaze test 指令的主體。所有測試規則都會自動視為「可執行」;我們不建議 (不建議) 為測試規則明確設定 executable = True 。詳情請參閱 規則頁面。 |
attrs
|
dict; or None ;
default = None字典,宣告規則的所有屬性。它會從屬性名稱對應至屬性物件 (請參閱 attr 模組)。以 _ 開頭的屬性為不公開,可用於在標籤中加入隱含依附元件。name 屬性是以隱含方式新增,請勿指定。以隱含方式新增 visibility 、deprecation 、tags 、testonly 和 features 屬性,且無法覆寫。大多數規則只需要幾項屬性。為限制記憶體用量,規則函式會設定屬性大小上限。 |
outputs
|
dict; or None; or function ;
default = None已淘汰。此參數已淘汰,即將移除。請勿完全仰賴它。 ---incompatible_no_rule_outputs_param 已停用這項功能。使用此旗標確認您的程式碼是否與即將移除的程式碼相容。此參數已淘汰。遷移規則以改用 OutputGroupInfo 或 attr.output 。定義預先宣告輸出內容的結構定義。與 這個引數的值可能是字典或可產生字典的回呼函式。回呼的運作方式與運算的依附元件屬性類似:函式的參數名稱會與規則的屬性進行比對,例如如果使用定義 字典中的每個項目都會建立預先宣告的輸出內容,其中鍵是 ID,值是決定輸出內容的標籤的字串範本。在規則的實作函式中,ID 會成為欄位名稱,用於存取
實務上,最常見的替代預留位置是 |
executable
|
default = False 是否將這個規則視為執行檔,也就是是否具有 blaze run 指令的主體。詳情請參閱 規則頁面。 |
output_to_genfiles
|
default = False 如果為 true,系統會在 genfiles 目錄中產生檔案,而不是 bin 目錄。除非您需要與現有規則相容 (例如為 C++ 產生標頭檔案時),否則請勿設定這個標記。 |
fragments
|
sequence of strings ;
預設值 = []規則在目標設定中所需的設定片段名稱。 |
host_fragments
|
sequence of strings ;
預設值 = []規則需要在主機設定中運作的設定片段名稱清單。 |
_skylark_testable
|
default = False (實驗功能) 如果為 true,這項規則會根據動作供應商設定的規則,顯示依附於規則的檢查動作。規則本身也可以呼叫 ctx.created_actions(),供規則本身使用。 這個 API 只應用於測試 Starlark 規則的分析時間行為。日後可能會移除這個標記。 |
toolchains
|
sequence ;
default = []如果已設定,這項規則所需的工具鍊組合。清單可包含 String、Label 或 StarlarkToolchainTypeApi 物件,任何組合皆可。查看目前的平台即可找到工具鍊,並透過 ctx.toolchain 提供給規則實作。 |
incompatible_use_toolchain_transition
|
default = False 已淘汰,已淘汰,應移除。 |
doc
|
default = ' 說明文件產生工具可擷取的規則說明。 |
provides
|
default = [] 實作函式必須傳回的供應商清單。 如果實作函式從其傳回值中省略任何這裡列出的提供者類型,則會導致錯誤。然而,實作函式可能會傳回此處未列出的其他提供者。 清單的每個元素都是 |
exec_compatible_with
|
sequence of strings ;
預設值 = []執行平台上的限制條件清單,適用於這個規則類型的所有目標。 |
analysis_test
|
default = False 如果值為 true,系統會將這項規則視為分析測試。 注意:分析測試規則主要是透過核心 Starlark 程式庫提供的基礎架構定義。如需指引,請參閱「測試」。 如將規則定義為分析測試規則,該規則即可對其屬性使用以 analysis_test_transition 定義的設定轉換,但選擇採用一些限制:
|
build_setting
|
BuildSetting; or None ;
default = None如果已設定,請說明這項規則的 build setting 類型。請參閱 config 模組。如果設定這個值,系統就會自動將名為「build_setting_default」的必要屬性加入這項規則,其類型會與此處傳送的值相對應。
|
cfg
|
default = None 如果指定了設定轉換,表示規則會在分析前套用至自己的設定。 |
exec_groups
|
dict; or None ;
default = None將執行群組名稱 (字串) 轉換為 exec_group 。設定後,規則便可在單一目標的多個執行平台上執行動作。詳情請參閱執行群組說明文件。 |
compile_one_filetype
|
sequence of strings; or None ;
default = None--compile_one_dependency 使用這項屬性:如果多項規則耗用指定檔案,應選擇這項規則,而不是其他規則。 |
name
|
string; or None ;
default = None已淘汰。此參數已淘汰,即將移除。請勿完全仰賴它。 --+incompatible_remove_rule_name_parameter 已停用這項功能。使用此旗標確認您的程式碼是否與即將移除的程式碼相容。已淘汰:請勿使用。 此規則的名稱,由 Bazel 解讀,並會在記錄、 如果省略此參數,規則名稱會設為要在宣告 .bzl 模組中繫結的第一個 Starlark 全域變數名稱。因此,如果名稱是 指定規則明確的名稱不會改變允許將規則執行個體化的位置。 |
選取
unknown select(x, no_match_error='')
select()
是輔助函式,使規則屬性「可設定」。詳情請參閱「建構百科全書」。
參數
參數 | 說明 |
---|---|
x
|
必要 將設定條件對應至值的字典。每個鍵都是 Label 或標籤字串,用於識別 config_setting 或 constraint_value 例項。如要瞭解如何使用標籤而非字串,請參閱巨集說明文件。 |
no_match_error
|
default = ' 如果沒有相符條件,要回報的自訂錯誤。 |
single_version_override
None single_version_override(module_name, version='', registry='', patches=[], patch_cmds=[], patch_strip=0)用於指定依附元件應來自註冊資料庫,但應固定、覆寫其登錄檔,或已套用修補程式清單。這個指令只能由根模組使用,換句話說,如果模組指定任何覆寫值,其他人就無法將其做為依附元件使用。
參數
參數 | 說明 |
---|---|
module_name
|
必要 要套用此覆寫設定的 Bazel 模組依附元件的名稱。 |
version
|
default = ' 覆寫依附元件圖表中這個模組的宣告版本。也就是說,這個模組會「固定」至這個覆寫版本。如果所有要覆寫為註冊資料庫或修補程式的使用者,則可省略這項屬性。 |
registry
|
default = ' 覆寫這個模組的登錄檔;應使用指定的註冊資料庫,而不是從預設的註冊資料庫清單中尋找這個模組。 |
patches
|
Iterable of strings ;
default = []標籤清單,指向要套用至這個模組的修補程式檔案。修補檔案必須位於頂層專案的來源樹狀結構中。系統會依據清單順序套用這些變數。 |
patch_cmds
|
Iterable of strings ;
default = []套用修補程式後,要套用到 Linux/Macos 的 Bash 指令序列。 |
patch_strip
|
default = 0 與 Unix 修補程式的 --strip 引數相同。 |
sorted
list sorted(iterable, *, key=None, reverse=False)傳回新的排序清單,其中包含提供之可疊代序列的所有元素。如未使用 x < y 來比較任何元素 x, y,就會發生錯誤。元素會以遞增順序排序,除非反向引數為 True,這時元素會遞減排序。 排序是穩定的:比較等同的元素保留原本的相對順序。
sorted([3, 5, 4]) == [3, 4, 5]
參數
參數 | 說明 |
---|---|
iterable
|
必要 要排序的可疊代序列。 |
key
|
default = None 此為選用函式,在比較前套用至各元素。 |
reverse
|
default = False 以遞減順序傳回結果。 |
str
string str(x)將任何物件轉換成字串。這對於偵錯非常有用。
str("ab") == "ab" str(8) == "8"
參數
參數 | 說明 |
---|---|
x
|
必要 要轉換的物件。 |
tag_class
tag_class tag_class(attrs={}, *, doc='')建立新的 tag_class 物件,其定義標記類別的屬性結構定義 (標記類別可使用的資料物件)。
參數
參數 | 說明 |
---|---|
attrs
|
default = {} 宣告此標記類別所有屬性的字典。它會從屬性名稱對應至屬性物件 (請參閱 attr 模組)。 |
doc
|
default = '' 透過說明文件產生工具擷取的標記類別說明。 |
tuple
tuple tuple(x=())傳回與指定疊代值具有相同元素的元組。
tuple([1, 2]) == (1, 2) tuple((2, 3, 2)) == (2, 3, 2) tuple({5: "a", 2: "b", 4: "c"}) == (5, 2, 4)
參數
參數 | 說明 |
---|---|
x
|
default = () 要轉換的物件。 |
類型
string type(x)傳回其引數的類型名稱。這對偵錯和類型檢查相當實用。範例:
type(2) == "int" type([1]) == "list" type(struct(a = 2)) == "struct"這個函式日後可能會變更。如要編寫與 Python 相容的程式碼,同時確保程式碼在未來可以使用,請僅用於比較傳回值:
if type(x) == type([]): # if x is a list
參數
參數 | 說明 |
---|---|
x
|
必要 要檢查類型的物件。 |
use_extension
module_extension_proxy use_extension(extension_bzl_file, extension_name, *, dev_dependency=False)傳回代表模組擴充功能的 Proxy 物件;您可以叫用其方法來建立模組擴充功能標記。
參數
參數 | 說明 |
---|---|
extension_bzl_file
|
必要 定義模組擴充功能的 Starlark 檔案標籤。 |
extension_name
|
必要 要使用的模組擴充功能名稱。包含這個名稱的符號必須由 Starlark 檔案匯出。 |
dev_dependency
|
default = False 如果為 true,如果目前的模組不是根模組,或已啟用「--ignore_dev_dependency」,系統就會忽略這個模組擴充功能的使用情形。 |
use_repo
None use_repo(extension_proxy, *args, **kwargs)將指定模組擴充功能產生的一或多個存放區匯入目前模組的範圍。
參數
參數 | 說明 |
---|---|
extension_proxy
|
必要use_extension 呼叫傳回的模組擴充功能 Proxy 物件。 |
args
|
必填 要匯入的存放區名稱。 |
kwargs
|
必要 指定要匯入至目前模組範圍中的特定存放區 (名稱不同)。金鑰應為在目前範圍內使用的名稱,而值則是模組擴充功能匯出的原始名稱。 |
顯示設定
None visibility(value)
設定目前初始化的 .bzl 模組的載入瀏覽權限。
模組的載入瀏覽權限會決定其他 BUILD 和 .bzl 檔案能否載入模組。(這與基礎 .bzl 來源檔案的目標瀏覽權限不同,後者管理的是檔案是否顯示為其他目標的依附元件)。載入瀏覽權限會在套件層級運作:如要載入用於載入的模組,檔案必須存在於已授予模組瀏覽權限的套件中。無論模組的瀏覽權限為何,模組一律可以在其本身的套件中載入。
每個 .bzl 檔案只能呼叫 visibility()
一次,而且只能在頂層 (而不是函式內) 呼叫。偏好的樣式是將此呼叫放在 load()
陳述式下方,以及決定引數所需的任何簡短邏輯。
如果標記 --check_bzl_visibility
設為 False,載入瀏覽權限違規事項會發出警告,但不會讓建構作業失敗。
參數
參數 | 說明 |
---|---|
value
|
必要 套件規格字串清單,或單一套件規格字串。 套件規格與
不允許使用「@」語法;所有規格都會根據目前模組的存放區解讀。 如果 請注意,標記 |
工作區
None workspace(name)
這個函式只能用於 WORKSPACE
檔案,且必須在 WORKSPACE
檔案的其他所有函式之前宣告。每個 WORKSPACE
檔案都應有 workspace
函式。
設定這個工作區的名稱。工作區名稱應為專案的 Java 套件樣式說明,並使用底線做為分隔符,例如:github.com/bazelbuild/bazel 應使用 com_github_bazelbuild_bazel。
這個名稱會用於存放區執行檔案儲存的目錄。舉例來說,如果本機存放區中有執行檔 foo/bar
,且 WORKSPACE 檔案包含 workspace(name = 'baz')
,則您可以在 mytarget.runfiles/baz/foo/bar
下使用 runfile。如果沒有指定工作區名稱,則 runfile 將符號連結至 bar.runfiles/foo/bar
。
遠端存放區規則名稱必須是有效的工作區名稱。舉例來說,您可以使用 maven_jar(name = 'foo')
但不能使用 maven_jar(name = 'foo%bar')
,因為 Bazel 會嘗試為含有 workspace(name = 'foo%bar')
的 maven_jar
寫入 WORKSPACE 檔案。
參數
參數 | 說明 |
---|---|
name
|
必要 工作區名稱。名稱只能使用英文字母、數字、底線、破折號和半形句號,而且開頭須為英文字母。 |
zip
list zip(*args)傳回
tuple
的 list
,其中第 i- 個元組包含每個引數序列或疊代的 i-th 元素。清單的輸入內容長度最短。如果採用單一可疊代引數,會傳回 1 元組的清單。沒有引數,則會傳回空白清單。範例:zip() # == [] zip([1, 2]) # == [(1,), (2,)] zip([1, 2], [3, 4]) # == [(1, 3), (2, 4)] zip([1, 2], [3, 4, 5]) # == [(1, 3), (2, 4)]
參數
參數 | 說明 |
---|---|
args
|
匯出的 必要清單。 |