Globals

グローバル環境に登録されたオブジェクト、関数、モジュール。

メンバー

すべて

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 ルールの依存関係に適用する設定の移行を作成します。この移行は、analysis_test = True を含むルールの属性にのみ適用できます。このようなルールは機能が制限されているため(たとえば、依存関係ツリーのサイズが制限されているため)、この関数を使用して作成された遷移は、Transition を使用して作成された遷移と比較して潜在的なスコープが制限されます。

この関数は主に、Analysis Test Framework のコアライブラリを円滑化するために設計されています。ベスト プラクティスについては、ドキュメント(またはその実装)をご覧ください。

パラメータ

パラメータ 説明
settings 必須
この構成移行で設定する必要がある構成設定に関する情報を含むディクショナリ。キーはビルド設定のラベルで、値は移行後の新しい値です。その他の設定はすべて変更されていません。これを使用して、分析テストに合格するために設定する必要がある特定の構成設定を宣言します。

任意

bool any(elements)

少なくとも 1 つの要素が 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、 必須
アーカイブの URLhttp(s):// または file:// の URL を使用できます。
integrity デフォルト = ''
アーカイブ ファイルで想定されるチェックサム(サブリソースの整合性形式)。
strip_prefix デフォルト = ''
抽出されたファイルから削除するディレクトリ接頭辞。
patches Iterable of strings、 デフォルト = []
このモジュールに適用するパッチファイルを指すラベルのリスト。パッチファイルは、最上位プロジェクトのソースツリーに存在している必要があります。これらはリスト順に適用されます。
patch_cmds Iterable of strings、 デフォルト = []
パッチ適用後に Linux/macOS で適用される Bash コマンドの順序。
patch_strip デフォルト = 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(ターゲットの作成元となるルール コンテキスト)の 2 つのパラメータがあります。ターゲットの属性は、ctx.rule フィールドを介して利用できます。この関数は、ターゲットにアスペクトを適用するたびに、解析フェーズで評価されます。
attr_aspects sequence of strings、 デフォルト = []
属性名のリスト。アスペクトは、これらの名前を持つターゲットの属性で指定された依存関係に沿って伝播されます。ここでの一般的な値には、depsexports があります。このリストには、ターゲットのすべての依存関係を伝播する単一の文字列 "*" を含めることもできます。
attrs dict; or None、 デフォルト = None
アスペクトのすべての属性を宣言するディクショナリ。属性名から `attr.label` や `attr.string` などの属性オブジェクトにマッピングします(attr モジュールを参照)。アスペクト属性は、ctx パラメータのフィールドとして実装関数で使用できます。

_ で始まる暗黙的な属性は、デフォルト値を持ち、label または label_list 型にする必要があります。

明示的な属性は、string 型でなければならず、values 制限を使用する必要があります。明示的な属性では、制限に従って、同じ名前、タイプ、有効な値を持つ属性を持つルールでのみ、アスペクトが使用されることが制限されます。

required_providers デフォルト = []
この属性を使用すると、アスペクトは、ルールが必要なプロバイダをアドバタイズするターゲットのみに伝播を制限できます。値は、個別のプロバイダまたはプロバイダのリストのいずれかを含むリストにする必要があります。両方を含めることはできません。たとえば、[[FooInfo], [BarInfo], [BazInfo, QuxInfo]] は有効な値ですが、[FooInfo, BarInfo, [BazInfo, QuxInfo]] は無効になります。

プロバイダのネスト解除されたリストは、1 つのプロバイダのリストを含むリストに自動的に変換されます。つまり、[FooInfo, BarInfo] は自動的に [[FooInfo, BarInfo]] に変換されます。

一部のルール(some_rule など)のターゲットをアスペクトに公開するには、some_rule で、必須プロバイダ リストの少なくとも 1 つに含まれるすべてのプロバイダをアドバタイズする必要があります。たとえば、アスペクトの required_providers[[FooInfo], [BarInfo], [BazInfo, QuxInfo]] の場合、このアスペクトは、some_ruleFooInfo または BarInfo、あるいは BazInfoQuxInfo の両方を提供する場合にのみ、some_rule ターゲットを表示できます。

required_aspect_providers デフォルト = []
この属性により、このアスペクトは他のアスペクトを検査できます。値は、個別のプロバイダまたはプロバイダのリストのいずれかを含むリストにする必要があります。両方を含めることはできません。たとえば、[[FooInfo], [BarInfo], [BazInfo, QuxInfo]] は有効な値ですが、[FooInfo, BarInfo, [BazInfo, QuxInfo]] は無効になります。

プロバイダのネスト解除されたリストは、1 つのプロバイダのリストを含むリストに自動的に変換されます。つまり、[FooInfo, BarInfo] は自動的に [[FooInfo, BarInfo]] に変換されます。

別のアスペクト(other_aspect など)をこのアスペクトに公開するには、other_aspect で少なくとも 1 つのリストのすべてのプロバイダを指定する必要があります。[[FooInfo], [BarInfo], [BazInfo, QuxInfo]] の例では、other_aspectFooInfo または BarInfo、あるいは BazInfoQuxInfo の両方を提供する場合にのみ、このアスペクトは other_aspect を確認できます。

provides デフォルト = []
実装関数が返すプロバイダのリスト。

実装関数で、以下のいずれかのタイプのプロバイダが戻り値から除外されている場合、エラーになります。ただし、実装関数は、ここに記載されていない追加のプロバイダを返すことがあります。

リストの各要素は、provider() によって返される *Info オブジェクトです。ただし、以前のプロバイダは文字列名で表されます。

requires sequence of Aspects、 デフォルト = []
このアスペクトの前に伝播する必要があるアスペクトのリスト。
fragments sequence of strings、 デフォルト = []
アスペクトがターゲット構成で必要とする構成フラグメントの名前のリスト。
host_fragments sequence of strings、 デフォルト = []
アスペクトがホスト構成で必要とする構成フラグメントの名前のリスト。
toolchains sequence、 デフォルト = []
設定した場合、このルールに必要なツールチェーンのセット。このリストには、String、Label、StarlarkToolchainTypeApi などのオブジェクトを自由に組み合わせて含めることができます。現在のプラットフォームを確認することでツールチェーンが見つかり、ctx.toolchain を介してルールの実装に提供されます。
incompatible_use_toolchain_transition デフォルト = False
非推奨です。使用されなくなったため、削除する必要があります。
doc デフォルト = ''
ドキュメント生成ツールで抽出できるアスペクトの説明。
apply_to_generating_rules デフォルト = False
true の場合、アスペクトは出力ファイルに適用された場合、代わりに出力ファイルの生成ルールに適用されます。

たとえば、アスペクトが属性 `deps` を介して推移的に伝播され、ターゲットの「alpha」に適用されるとします。`alpha` に `deps = [':beta_output']` があるとします。`beta_output` はターゲットの `beta` に対して宣言された出力です。`beta` に、その `deps` の 1 つとしてターゲットの `charlie` があるとします。アスペクトに `apply_to_generating_rules=True` が設定されている場合、アスペクトは `alpha`、`beta`、`charlie` を通じて伝播されます。False の場合、アスペクトは `alpha` にのみ伝播されます。

デフォルトは false です。

exec_compatible_with sequence of strings、 デフォルト = []
このアスペクトのすべてのインスタンスに適用される実行プラットフォームの制約のリスト。
exec_groups dict; or None、 デフォルト = None
実行グループ名(文字列)の exec_groups への辞書。設定すると、アスペクトは 1 つのインスタンス内の複数の実行プラットフォームでアクションを実行できます。詳細については、実行グループに関するドキュメントをご覧ください。

bazel_dep

None bazel_dep(name, version='', repo_name='', dev_dependency=False)

別の Bazel モジュールへの直接依存関係を宣言します。

パラメータ

パラメータ 説明
name 必須
直接的な依存関係として追加するモジュールの名前。
version デフォルト = ''
直接的な依存関係として追加するモジュールのバージョン。
repo_name デフォルト = ''
この依存関係を表す外部リポジトリの名前。デフォルトはモジュールの名前です。
dev_dependency デフォルト = False
true の場合、現在のモジュールがルート モジュールでない場合、または「--ignore_dev_dependency」が有効になっている場合、この依存関係は無視されます。

バインド

None bind(name, actual=None)

警告: bind() の使用はおすすめしません。バインドの問題と代替方法については、バインドの削除を検討するをご覧ください。

//external パッケージでターゲットにエイリアスを付与します。

パラメータ

パラメータ 説明
name 必須
「//external」の下のラベルエイリアス名として使用する
actual string; or None、 デフォルト = None
エイリアスとなる実際のラベル

ブール値

bool bool(x=False)

ブール値型のコンストラクタ。オブジェクトが NoneFalse、空の文字列("")、数値 0、または空のコレクション(()[] など)の場合、False を返します。それ以外の場合は、True を返します。

パラメータ

パラメータ 説明
x デフォルト = False
変換する変数。

configuration_field

LateBoundDefault configuration_field(fragment, name)

label タイプの属性の遅延デフォルト値を参照します。値が「遅延中」である値を決定する前に構成を構築する必要があるかどうか。この値を値として使用する属性はすべて、非公開にする必要があります。

使用例:

ルール属性の定義:

'_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 パラメータは depset の直接要素のリストで、transitive パラメータは、要素が作成された depset の間接要素になる depset のリストです。depset がリストに変換されるときに返される要素の順序は、order パラメータで指定します。詳細については、Depsets の概要をご覧ください。

依存関係のすべての要素(直接的および間接的)は、式 type(x) で取得される型と同じ型でなければなりません。

ハッシュベースのセットは反復処理中の重複を排除するために使用されるので、depset のすべての要素はハッシュ可能である必要があります。ただし、現在のところ、この不変条件は、すべてのコンストラクタで一貫してチェックされるわけではありません。一貫性のあるチェックを有効にするには、--compatibility_always_check_depset_elements フラグを使用します。今後のリリースではこれがデフォルトの動作になる予定です。問題 10313 をご覧ください。

また、要素は現在不変である必要がありますが、この制限は今後緩和される予定です。

作成されるデプセットの順序は、transitive デプセットの順序と互換性がある必要があります。"default" の注文は他の注文と互換性があります。他のすべての注文は自分とのみ互換性があります。

下位互換性/上位互換性に関する注意事項。現在、この関数は位置の items パラメータを受け入れます。これは非推奨となり、将来的に削除される予定です。削除後は、directdepset 関数の唯一の位置パラメータになります。したがって、次の呼び出しはどちらも同等で、将来の変化にも対応できます。

depset(['a', 'b'], transitive = [...])
depset(direct = ['a', 'b'], transitive = [...])

パラメータ

パラメータ 説明
direct sequence; or None、 デフォルト = None
depset の direct 要素のリスト。
order default = "default"
新しい依存関係の走査戦略。設定可能な値については、こちらをご覧ください。
transitive sequence of depsets; or None、 デフォルト = None
要素が depset の間接要素になる depset のリスト。

辞書

dict dict(pairs=[], **kwargs)

オプションの位置引数とオプションのキーワード引数のセットから、辞書を作成します。同じキーを複数回指定した場合は、最後の値が使用されます。キーワード引数で指定したエントリは、位置引数で指定したエントリより後とみなされます。

パラメータ

パラメータ 説明
pairs デフォルト = []
要素がそれぞれ長さ 2(キー、値)であるディクショナリ、またはイテラブル。
kwargs 必須
追加エントリの辞書。

dir

list dir(x)

文字列のリスト(パラメータ オブジェクトの属性名とメソッド名)を返します。

パラメータ

パラメータ 説明
x 必須
確認するオブジェクト。

列挙

list enumerate(list, start=0)

インデックス(int)と入力シーケンスの項目を含むペア(2 要素のタプル)のリストを返します。
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、 デフォルト = []
この実行グループに必要なツールチェーンのセット。このリストには、String、Label、StarlarkToolchainTypeApi などのオブジェクトを自由に組み合わせて含めることができます。
exec_compatible_with sequence of strings、 デフォルト = []
実行プラットフォームに対する制約のリスト。
copy_from_rule デフォルト = False
true に設定すると、この実行グループは、このグループが接続されているルールのツールチェーンと制約を継承します。他の文字列に設定すると、エラーがスローされます。

fail

None fail(msg=None, attr=None, *args)

実行が失敗してエラーになります。

パラメータ

パラメータ 説明
msg デフォルト = None
非推奨: 代わりに位置引数を使用してください。この引数は、暗黙的に先行する位置引数として機能します。
attr string; or None、 デフォルト = None
非推奨。この文字列を含むオプションの接頭辞がエラー メッセージに追加されます。
args 必須
エラー メッセージに表示される str 形式でスペースで結合された値のリスト。

float

float float(x=unbound)

x を浮動小数点値として返します。<ph type="x-smartling-placeholder">
    </ph>
  • x がすでに浮動小数点数の場合、float は変更せずに返します。
  • x がブール値の場合、float は、True に対して 1.0、False に対して 0.0 を返します。
  • x が int の場合、float は x に最も近い有限浮動小数点値を返します。大きさが大きすぎる場合はエラーを返します。
  • x が文字列の場合は、有効な浮動小数点リテラルにするか、NaNInfInfinity と等しく(大文字と小文字は区別しません)、必要に応じて + 記号または - 記号を付加します。
その他の値を指定するとエラーになります。引数がない場合、float() は 0.0 を返します。

パラメータ

パラメータ 説明
x デフォルト = バインドなし
変換する値。

getattr

unknown getattr(x, name, default=unbound)

指定された名前の構造体のフィールド(存在する場合)を返します。含まれていない場合は、default を返すか(指定されている場合)、エラーが発生します。getattr(x, "foobar")x.foobar と同等です。
getattr(ctx.attr, "myattr")
getattr(ctx.attr, "myattr", "mydefault")

パラメータ

パラメータ 説明
x 必須
属性にアクセスする構造体。
name 必須
構造体属性の名前。
default デフォルト = バインドなし
指定された名前の属性が構造体にない場合に返されるデフォルト値。

git_override

None git_override(module_name, remote, commit='', patches=[], patch_cmds=[], patch_strip=0)

依存関係が Git リポジトリの特定の commit から得られるように指定します。このディレクティブはルート モジュールでのみ使用できます。つまり、モジュールでオーバーライドが指定されている場合、それを他のユーザーの依存関係として使用することはできません。

パラメータ

パラメータ 説明
module_name 必須
このオーバーライドを適用する Bazel モジュール依存関係の名前。
remote 必須
リモート Git リポジトリの URL。
commit デフォルト = ''
チェックアウトする commit です。
patches Iterable of strings、 デフォルト = []
このモジュールに適用するパッチファイルを指すラベルのリスト。パッチファイルは、最上位プロジェクトのソースツリーに存在している必要があります。これらはリスト順に適用されます。
patch_cmds Iterable of strings、 デフォルト = []
パッチ適用後に Linux/macOS で適用される Bash コマンドの順序。
patch_strip デフォルト = 0
Unix パッチの --strip 引数と同じです。

hasattr

bool hasattr(x, name)

オブジェクト x が、指定された name の属性またはメソッドを持っている場合は True を返します。それ以外の場合は False を返します。例:
hasattr(ctx.attr, "myattr")

パラメータ

パラメータ 説明
x 必須
確認するオブジェクト。
name 必須
属性の名前。

ハッシュ

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)

x を int 値として返します。
  • x がすでに int になっている場合、int は変更せずに返します。
  • x がブール値の場合、int は True に対して 1 を返し、False に対して 0 を返します。
  • 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 にすることはできません。これは、8 進数と 10 進数の混同を避けるためです。文字列で表される数値の大きさは、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 の値にする必要があります。x が整数リテラルであるかのようにベースを検出する場合は 0 です。値が文字列でない場合、このパラメータは指定できません。

len

int len(x)

文字列、シーケンス(リストやタプルなど)、辞書、その他のイテラブルの長さを返します。

パラメータ

パラメータ 説明
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 デフォルト = []
変換するオブジェクト。

local_path_override

None local_path_override(module_name, path)

依存関係がローカル ディスク上の特定のディレクトリから取得されることを指定します。このディレクティブはルート モジュールでのみ使用できます。つまり、モジュールでオーバーライドが指定されている場合、それを他のユーザーの依存関係として使用することはできません。

パラメータ

パラメータ 説明
module_name 必須
このオーバーライドを適用する Bazel モジュール依存関係の名前。
path 必須
このモジュールがあるディレクトリのパス。

最大

unknown max(*args)

指定されたすべての引数の中で最大のものを返します。引数が 1 つだけ指定する場合は、空でないイテラブルである必要があります。要素が比較可能でない場合(たとえば、文字列型 int の場合)、または引数が指定されていない場合はエラーになります。
max(2, 5, 4) == 5
max([5, 6, 3]) == 6

パラメータ

パラメータ 説明
args 必須
チェック対象の要素です。

unknown min(*args)

指定されたすべての引数の中で最小の引数を返します。引数を 1 つだけ指定する場合は、空でないイテラブルである必要があります。要素が比較可能でない場合(文字列と int など)や、引数が指定されていない場合は、エラーになります。
min(2, 5, 4) == 2
min([5, 6, 3]) == 3

パラメータ

パラメータ 説明
args 必須
チェック対象の要素です。

モジュール

None module(name='', version='', compatibility_level=0, repo_name='', bazel_compatibility=[])

現在の Bazel リポジトリで表される Bazel モジュールの特定のプロパティを宣言します。これらのプロパティは、モジュールの重要なメタデータ(名前やバージョンなど)か、現在のモジュールとその依存関係の動作に影響します。

1 回だけ呼び出す必要があります。このモジュールは、このモジュールがルート モジュールである場合にのみ省略できます(別のモジュールに依存しない場合など)。

パラメータ

パラメータ 説明
name デフォルト = ''
モジュールの名前。このモジュールがルート モジュールである場合にのみ省略できます(別のモジュールに依存しない場合と同様です)。有効なモジュール名は、1)小文字(a ~ z)、数字(0 ~ 9)、ドット(.)、ハイフン(-)、アンダースコア(_)のみを使用する。2)小文字で始まる3)末尾が英小文字または数字である。
version デフォルト = ''
モジュールのバージョン。このモジュールがルート モジュールである場合にのみ省略できます(別のモジュールに依存しない場合と同様です)。
compatibility_level デフォルト = 0
モジュールの互換性レベル互換性のない大きな変更が行われるたびに変更する必要があります。これは基本的に「メジャー バージョン」です。SemVer で表します。ただし、バージョン文字列自体に埋め込まれるのではなく、個別のフィールドとして存在します。互換性レベルが異なるモジュールは、名前の異なるモジュールであるかのようにバージョン解決に関与しますが、最終的な依存関係グラフに、名前が同じで互換性レベルが異なる複数のモジュールを含めることはできません(multiple_version_override が有効な場合は除きます。詳細については、そちらをご覧ください)。
repo_name デフォルト = ''
モジュール自体から見える、このモジュールを表すリポジトリの名前。デフォルトでは、リポジトリの名前はモジュールの名前です。これを指定すると、モジュール名とは異なるリポジトリ名を使用しているプロジェクトの移行が容易になります。
bazel_compatibility Iterable of strings、 デフォルト = []
ユーザーがこのモジュールと互換性のある Bazel バージョンを宣言できる Bazel バージョンのリスト。依存関係の解決には影響しませんが、bzlmod はこの情報を使用して、現在の Bazel バージョンに互換性があるかどうかを確認します。この値の形式は、制約値をカンマで区切った文字列です。次の 3 つの制約がサポートされています。<=X.X.X: Bazel のバージョンは X.X.X 以降である必要があります。新しいバージョンに互換性のない既知の変更がある場合に使用します。>=X.X.X: Bazel バージョンは X.X.X 以降である必要があります。X.X.X 以降でのみ利用可能な機能に依存している場合は、Used を使用します。-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 デフォルト = ''
ドキュメント生成ツールで抽出できるモジュール拡張機能の説明。

multiple_version_override

None multiple_version_override(module_name, versions, registry='')

依存関係は引き続きレジストリから取得されるべきだが、その依存関係の複数のバージョンの共存を許可することを指定します。このディレクティブはルート モジュールでのみ使用できます。つまり、モジュールでオーバーライドが指定されている場合、それを他のユーザーの依存関係として使用することはできません。

パラメータ

パラメータ 説明
module_name 必須
このオーバーライドを適用する Bazel モジュール依存関係の名前。
versions Iterable of strings、 必須
共存を許可するバージョンを明示的に指定します。これらのバージョンは、依存関係グラフの事前選択にすでに存在している必要があります。このモジュールに対する依存関係は「アップグレード済み」になります同じ互換性レベルで許可されたバージョンに最も近いものに設定されます。一方、依存関係が同じ互換性レベルで許可されているバージョンよりも高いバージョンを持つ場合、エラーが発生します。
registry デフォルト = ''
このモジュールのレジストリをオーバーライドします。レジストリのデフォルト リストからこのモジュールを見つける代わりに、指定したレジストリを使用する必要があります。

プリント

None print(sep=" ", *args)

args をデバッグ出力として出力します。先頭に、文字列 "DEBUG" とこの呼び出しの場所(ファイル番号と行番号)が付加されます。引数が文字列に変換される具体的な方法は指定されていませんが、いつでも変更される可能性があります。特に、str()repr() によって行われる書式設定とは異なる(より詳細な)場合があります。

製品版のコードで print を使用することは、ユーザーにスパムが発生するためおすすめしません。非推奨については、可能な限り fail() を使用してハードエラーを取得することをおすすめします。

パラメータ

パラメータ 説明
sep デフォルト = "「
」 オブジェクト間の区切り文字。デフォルトはスペース(「 」)です。
args 必須
出力するオブジェクト。

provider

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 デフォルト = ''
ドキュメント生成ツールで抽出できるプロバイダの説明。
fields sequence of strings; or dict; or None、 デフォルト = None
指定すると、許可される一連のフィールドが制限されます。
有効な値は次のとおりです。
  • フィールドのリスト:
    provider(fields = ['a', 'b'])

  • ディクショナリ フィールド名 ->ドキュメント:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
すべてのフィールドは省略可能です。
init callable; or None、 デフォルト = None
インスタンス化の際にプロバイダのフィールド値を前処理して検証するためのコールバック(省略可)。init が指定された場合、provider() は通常のプロバイダ シンボルと未加工のコンストラクタの 2 つの要素のタプルを返します。

詳細な説明は以下のとおりです。直感的な説明とユースケースについては、ルール(プロバイダのカスタム初期化)をご覧ください。

P を、provider() を呼び出して作成したプロバイダ シンボルにします。概念的には、P のインスタンスはデフォルトのコンストラクタ関数 c(*args, **kwargs) を呼び出すことによって生成されます。この関数は次の処理を行います。

  • args が空でない場合は、エラーが発生します。
  • provider() の呼び出し時に fields パラメータが指定されていて、fields にリストされていないキーが kwargs に含まれていると、エラーが発生します。
  • それ以外の場合、c は、kwargsk: v エントリごとに、値が vk という名前のフィールドを持つ新しいインスタンスを返します。
init コールバックが指定されていない場合、シンボル P 自体の呼び出しは、デフォルトのコンストラクタ関数 c の呼び出しとして機能します。つまり、P(*args, **kwargs)c(*args, **kwargs) を返します。次に例を示します。
MyInfo = provider()
m = MyInfo(foo = 1)
は、mm.foo == 1 を持つ MyInfo インスタンスになるように簡単にします。

ただし、init が指定されている場合、P(*args, **kwargs) を呼び出すと、代わりに次のステップが実行されます。

  1. このコールバックは init(*args, **kwargs) として呼び出されます。つまり、P に渡された位置引数とキーワード引数とまったく同じです。
  2. init の戻り値は、キーがフィールド名の文字列である辞書 d である必要があります。有効になっていない場合は、エラーが発生します。
  3. P の新しいインスタンスは、c(**d) のように、d のエントリをキーワード引数として指定してデフォルト コンストラクタを呼び出した場合と同様に生成されます。

注: 上記の手順は、*args または **kwargsinit のシグネチャと一致しない場合、または init の本文の評価が失敗した場合(意図的に fail() の呼び出しを介して)である場合、あるいは init の戻り値が、想定されるスキーマを持つ辞書でない場合にエラーが発生することを意味しています。

このように、init コールバックは、前処理と検証のために位置引数と任意のロジックを許可することで、通常のプロバイダ構築を一般化します。許可された fields のリストの回避はできません

init を指定すると、provider() の戻り値はタプル (P, r) になります。ここで、r未加工のコンストラクタです。実際、r の動作は、前述のデフォルト コンストラクタ関数 c の動作とまったく同じです。通常、r は、現在の .bzl ファイルのみが直接アクセスできるよう、名前の先頭にアンダースコアが付いた変数にバインドされます。

MyInfo, _new_myinfo = provider(init = ...)

範囲

sequence range(start_or_stop, stop_or_none=None, step=1)

step の増分を使用して、項目が start から stop まで進むリストを作成します。引数が 1 つしかない場合、items の範囲は 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、 デフォルト = 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、 必須
登録するツールチェーンのラベル。

repo_rule(実装、攻撃者、ローカル、環境、構成、リモート可能、doc)

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')

新しいリポジトリ ルールを作成します。これをグローバル値に格納して、WORKSPACE ファイルから読み込んで呼び出せるようにします。

パラメータ

パラメータ 説明
implementation 必須
実装します。単一のパラメータ repository_ctx を指定する必要があります。この関数は、ルールのインスタンスごとに、読み込みフェーズで呼び出されます。
attrs dict; or None、 デフォルト = None
ルールのすべての属性を宣言できます。属性名から属性オブジェクトにマッピングされます(attr モジュールを参照)。_ で始まる属性は非公開であり、ラベルへの暗黙的な依存関係をファイルに追加するために使用できます(リポジトリ ルールは生成されたアーティファクトに依存できません)。属性 name は暗黙的に追加されており、指定することはできません。
local デフォルト = False
このルールはローカル システムからすべてを取得するため、取得のたびに再評価する必要があることを示します。
environ sequence of strings、 デフォルト = []
このリポジトリ ルールが依存する環境変数のリストを指定します。そのリスト内の環境変数が変更されると、リポジトリが再取得されます。
configure デフォルト = False
リポジトリが構成のためにシステムを検査することを示します
remotable デフォルト = False
試験運用版。このパラメータは試験運用版で、いつでも変更できます。これに依存しないでください。---experimental_repo_remote_exec を設定することで、試験運用版として有効にできます。
リモート実行との互換性あり
doc デフォルト = ''
ドキュメント生成ツールで抽出できるリポジトリ ルールの説明。

repo_rule(実装、攻撃者、ローカル、環境、構成、リモート可能、doc)

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')

新しいリポジトリ ルールを作成します。これをグローバル値に格納して、WORKSPACE ファイルから読み込んで呼び出せるようにします。

パラメータ

パラメータ 説明
implementation 必須
実装します。単一のパラメータ repository_ctx を指定する必要があります。この関数は、ルールのインスタンスごとに、読み込みフェーズで呼び出されます。
attrs dict; or None、 デフォルト = None
ルールのすべての属性を宣言できます。属性名から属性オブジェクトにマッピングされます(attr モジュールを参照)。_ で始まる属性は非公開であり、ラベルへの暗黙的な依存関係をファイルに追加するために使用できます(リポジトリ ルールは生成されたアーティファクトに依存できません)。属性 name は暗黙的に追加されており、指定することはできません。
local デフォルト = False
このルールはローカル システムからすべてを取得するため、取得のたびに再評価する必要があることを示します。
environ sequence of strings、 デフォルト = []
このリポジトリ ルールが依存する環境変数のリストを指定します。そのリスト内の環境変数が変更されると、リポジトリが再取得されます。
configure デフォルト = False
リポジトリが構成のためにシステムを検査することを示します
remotable デフォルト = False
試験運用版。このパラメータは試験運用版で、いつでも変更できます。これに依存しないでください。---experimental_repo_remote_exec を設定することで、試験運用版として有効にできます。
リモート実行との互換性あり
doc デフォルト = ''
ドキュメント生成ツールで抽出できるリポジトリ ルールの説明。

repr

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 の関数でこのルールを実装する場合、パラメータは 1 つだけ ctx としません。この関数は、ルールのインスタンスごとに分析フェーズで呼び出されます。ユーザーが指定した属性にアクセスできます。宣言されたすべての出力を生成するアクションを作成する必要があります。
test デフォルト = False
このルールがテストルールであるかどうか、つまり blaze test コマンドのサブジェクトであるかどうかです。すべてのテストルールは自動的に実行可能とみなされます。テストルールで executable = True を明示的に設定する必要はありません(推奨されません)。詳しくは、 ルールのページをご覧ください。
attrs dict; or None、 デフォルト = None
ルールのすべての属性を宣言できます。属性名から属性オブジェクトにマッピングされます(attr モジュールを参照)。_ で始まる属性は非公開であり、ラベルへの暗黙的な依存関係の追加に使用できます。属性 name は暗黙的に追加されており、指定することはできません。属性 visibilitydeprecationtagstestonlyfeatures は暗黙的に追加され、オーバーライドできません。ほとんどのルールで必要な属性は、ほんの一握りです。メモリ使用量を制限するために、ルール関数では属性のサイズに上限を設けています。
outputs dict; or None; or function、 デフォルト = None
非推奨。このパラメータは非推奨となっており、まもなく削除されます。これに依存しないでください。---incompatible_no_rule_outputs_param により無効になります。このフラグを使用して、コードが間もなく削除される可能性があることを確認します。
このパラメータのサポートは終了しました。代わりに OutputGroupInfo または attr.output を使用するようにルールを移行してください。

事前に宣言された出力を定義するスキーマoutput 属性や output_list 属性とは異なり、ユーザーはこれらのファイルのラベルを指定しません。事前に宣言された出力について詳しくは、ルールのページをご覧ください。

この引数の値は、ディクショナリか、ディクショナリを生成するコールバック関数のいずれかです。コールバックは、計算された依存関係属性と同様に機能します。関数のパラメータ名はルールの属性と照合されます。たとえば、def _my_func(srcs, deps): ... 定義で outputs = _my_func を渡すと、関数は srcs 属性と deps 属性にアクセスできます。ディクショナリが直接指定されたか、関数を介して指定されたかは、次のように解釈されます。

ディクショナリ内の各エントリは、事前に宣言された出力を作成します。キーは識別子で、値は出力ラベルを決定する文字列テンプレートです。ルールの実装関数では、識別子が ctx.outputs の出力の File へのアクセスに使用されるフィールド名になります。出力のラベルにはルールと同じパッケージが含まれます。パッケージの後の部分は、"%{ATTR}" 形式の各プレースホルダを、属性 ATTR の値から形成された文字列に置き換えて生成されます。

  • 文字列型の属性はそのまま置換されます。
  • ラベルタイプの属性は、パッケージの後のラベルの一部からファイル拡張子を除いたものになります。たとえば、ラベル "//pkg:a/b.c""a/b" になります。
  • 出力型の属性は、ファイル拡張子(上記の例では "a/b.c")を含め、パッケージの後のラベルの一部になります。
  • プレースホルダで使用されるリスト型属性(attr.label_list など)はすべて、1 つの要素のみを持つ必要があります。このユーザーのコンバージョンは、リスト以外のバージョン(attr.label)と同じです。
  • 他の属性タイプはプレースホルダに表示されない場合があります。
  • 属性以外の特別なプレースホルダ %{dirname}%{basename} は、パッケージを除き、ルールのラベルの該当する部分に展開されます。たとえば、"//pkg:a/b.c" では、ディレクトリ名は a、ベース名は b.c です。

実際には、最も一般的な置換プレースホルダは "%{name}" です。たとえば、「foo」という名前のターゲットの場合、出力辞書 {"bin": "%{name}.exe"} は、実装関数で ctx.outputs.bin としてアクセスできる foo.exe という名前の出力を事前に宣言します。

executable デフォルト = False
このルールが実行可能とみなされるかどうか、つまり、blaze run コマンドのサブジェクトである可能性があるかどうか。詳しくは、 ルールのページをご覧ください。
output_to_genfiles デフォルト = False
true の場合、ファイルは bin ディレクトリではなく genfiles ディレクトリに生成されます。既存のルールとの互換性が必要な場合(C++ のヘッダー ファイルを生成する場合など)を除き、このフラグは設定しないでください。
fragments sequence of strings、 デフォルト = []
ルールがターゲット構成で必要とする構成フラグメントの名前のリスト。
host_fragments sequence of strings、 デフォルト = []
ルールでホスト構成に必要な構成フラグメントの名前のリスト。
_skylark_testable デフォルト = False
(試験運用版)

true の場合、このルールはアクションを Actions プロバイダ経由で、依存するルールによる検査対象とします。ルール自体では、プロバイダで ctx.created_actions() を呼び出します。

これは、Starlark ルールの分析時の動作をテストする場合にのみ使用してください。このフラグは今後削除される可能性があります。
toolchains sequence、 デフォルト = []
設定した場合、このルールに必要なツールチェーンのセット。このリストには、String、Label、StarlarkToolchainTypeApi などのオブジェクトを自由に組み合わせて含めることができます。現在のプラットフォームを確認することでツールチェーンが見つかり、ctx.toolchain を介してルールの実装に提供されます。
incompatible_use_toolchain_transition デフォルト = False
非推奨です。使用されなくなったため、削除する必要があります。
doc デフォルト = ''
ドキュメント生成ツールで抽出できるルールの説明。
provides デフォルト = []
実装関数が返すプロバイダのリスト。

実装関数で、以下のいずれかのタイプのプロバイダが戻り値から除外されている場合、エラーになります。ただし、実装関数は、ここに記載されていない追加のプロバイダを返すことがあります。

リストの各要素は、provider() によって返される *Info オブジェクトです。ただし、以前のプロバイダは文字列名で表されます。

exec_compatible_with sequence of strings、 デフォルト = []
このルールタイプのすべてのターゲットに適用される実行プラットフォームの制約のリスト。
analysis_test デフォルト = False
true の場合、このルールは分析テストとして扱われます。

注: 分析テストルールは、主に Starlark のコアライブラリで提供されるインフラストラクチャを使用して定義されます。詳しくは、テストをご覧ください。

ルールが分析テストルールとして定義されている場合、その属性の analysis_test_transition を使用して定義された設定の移行を使用できますが、いくつかの制限が適用されます。

  • このルールのターゲットは、推移的依存関係の数が制限されます。
  • このルールは、テストルールとみなされます(test=True が設定されている場合と同様です)。これは test の値よりも優先されます。
  • ルール実装関数ではアクションを登録できません。代わりに、AnalysisTestResultInfo を提供して合格/不合格の結果を登録する必要があります。
build_setting BuildSetting; or None、 デフォルト = None
設定する場合、このルールの build setting の種類を表します。config モジュールをご覧ください。これが設定されている場合、"build_setting_default" という名前の必須属性ここで渡された値に対応する型とともに、このルールが自動的に追加されます。
cfg デフォルト = None
設定されている場合は、分析前にルールが独自の構成に適用される構成の遷移を指定します。
exec_groups dict; or None、 デフォルト = None
実行グループ名(文字列)の exec_groups への辞書。設定すると、ルールによって 1 つのターゲット内の複数の実行プラットフォームでアクションを実行できます。詳細については、実行グループに関するドキュメントをご覧ください。
compile_one_filetype sequence of strings; or None、 デフォルト = None
--compile_one_dependency で使用: 指定されたファイルを複数のルールで使用する場合、他のルールよりもこのルールを選択します。
name string; or None、 デフォルト = None
非推奨。このパラメータは非推奨となっており、まもなく削除されます。これに依存しないでください。--+incompatible_remove_rule_name_parameter により無効になります。このフラグを使用して、コードが間もなく削除される可能性があることを確認します。
非推奨: 使用しないでください。

Bazel で認識され、Logging、native.existing_rule(...)[kind]bazel query などのコンテキストで報告されるこのルールの名前。通常、このルールにバインドされる Starlark 識別子と同じです。たとえば、foo_library というルールは通常、foo_library = rule(...) として宣言され、Build ファイルでは foo_library(...) としてインスタンス化されます。

このパラメータを省略すると、ルールの名前は、宣言元の .bzl モジュール内でこのルールにバインドされる最初の Starlark グローバル変数の名前に設定されます。したがって、名前が foo_library の場合、foo_library = rule(...) でこのパラメータを指定する必要はありません。

ルールに明示的な名前を指定しても、ルールをインスタンス化できる場所は変更されません。

選択

unknown select(x, no_match_error='')

select() は、ルール属性を構成可能にするヘルパー関数です。詳しくは、ビルドの百科事典をご覧ください。

パラメータ

パラメータ 説明
x 必須
構成条件を値にマッピングする辞書。各キーは、config_setting または constraint_value インスタンスを識別するラベルまたはラベル文字列です。文字列の代わりにラベルを使用するタイミングについては、マクロに関するドキュメントをご覧ください。
no_match_error デフォルト = ''
条件が一致しない場合に報告するカスタムエラー(省略可)。

single_version_override

None single_version_override(module_name, version='', registry='', patches=[], patch_cmds=[], patch_strip=0)

依存関係は引き続きレジストリから取得されるものの、そのバージョンを固定するか、レジストリがオーバーライドされるか、適用されるパッチのリストを指定するように指定します。このディレクティブはルート モジュールでのみ使用できます。つまり、モジュールでオーバーライドが指定されている場合、それを他のユーザーの依存関係として使用することはできません。

パラメータ

パラメータ 説明
module_name 必須
このオーバーライドを適用する Bazel モジュール依存関係の名前。
version デフォルト = ''
依存関係グラフ内でこのモジュールの宣言されたバージョンをオーバーライドします。言い換えると、このモジュールは「固定」オーバーライドできますオーバーライドする対象がレジストリまたはパッチの場合は、この属性を省略できます。
registry デフォルト = ''
このモジュールのレジストリをオーバーライドします。レジストリのデフォルト リストからこのモジュールを見つける代わりに、指定したレジストリを使用する必要があります。
patches Iterable of strings、 デフォルト = []
このモジュールに適用するパッチファイルを指すラベルのリスト。パッチファイルは、最上位プロジェクトのソースツリーに存在している必要があります。これらはリスト順に適用されます。
patch_cmds Iterable of strings、 デフォルト = []
パッチ適用後に Linux/macOS で適用される Bash コマンドの順序。
patch_strip デフォルト = 0
Unix パッチの --strip 引数と同じです。

並べ替え済み

list sorted(iterable, *, key=None, reverse=False)

指定されたイテラブル シーケンスのすべての要素を含む、新しい並べ替え済みリストを返します。要素 x と y の任意のペアを x <y.要素は昇順で並べ替えられます。ただし、逆引数が True の場合は降順です。 並べ替えは安定しています。比較対象の要素は元の相対順序を維持します。
sorted([3, 5, 4]) == [3, 4, 5]

パラメータ

パラメータ 説明
iterable 必須
並べ替えるイテラブル シーケンス。
key デフォルト = None
比較の前に各要素に適用されるオプションの関数。
reverse デフォルト = 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 デフォルト = ''
ドキュメント生成ツールで抽出できるタグクラスの説明。

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 デフォルト = ()
変換するオブジェクト。

type

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)

モジュール拡張機能を表すプロキシ オブジェクトを返します。そのメソッドを呼び出して、モジュール拡張タグを作成できます。

パラメータ

パラメータ 説明
extension_bzl_file 必須
モジュール拡張子を定義する Starlark ファイルのラベル。
extension_name 必須
使用するモジュール拡張機能の名前。この名前のシンボルは、Starlark ファイルによってエクスポートする必要があります。
dev_dependency デフォルト = False
true の場合、現在のモジュールがルート モジュールでない場合、または「--ignore_dev_dependency」が有効になっている場合、このモジュール拡張機能の使用は無視されます。

use_repo

None use_repo(extension_proxy, *args, **kwargs)

指定されたモジュール拡張機能によって生成された 1 つ以上のリポジトリを現在のモジュールのスコープにインポートします。

パラメータ

パラメータ 説明
extension_proxy 必須
use_extension 呼び出しによって返されるモジュール拡張プロキシ オブジェクト。
args 必須
インポートするリポジトリの名前。
kwargs 必須
現在のモジュールのスコープにインポートする特定のリポジトリを異なる名前で指定します。キーは現在のスコープで使用する名前にする必要がありますが、値はモジュール拡張機能によってエクスポートされた元の名前である必要があります。

visibility

None visibility(value)

現在初期化されている .bzl モジュールの読み込み可視性を設定します。

モジュールの読み込みの可否は、他の BUILD ファイルや .bzl ファイルの読み込み可否を制御します。(これは、ファイルが他のターゲットの依存関係として表示されるかどうかを管理する、基になる .bzl ソースファイルのターゲット可視性とは異なります)。読み込みの可視性はパッケージのレベルで機能します。モジュールを読み込むには、読み込みを行うファイルが、モジュールへの可視性が付与されたパッケージに存在する必要があります。モジュールは、可視性に関係なく、常にそれぞれのパッケージ内で読み込めます。

visibility() は .bzl ファイルごとに 1 回だけ呼び出すことができます。関数内ではトップレベルで呼び出すことはできません。推奨されるスタイルは、この呼び出しを load() ステートメントの直下と、引数の決定に必要な簡単なロジックのすぐ下に配置することです。

フラグ --check_bzl_visibility が false に設定されている場合、読み込みの可視性違反により警告が出力されますが、ビルドは失敗しません。

パラメータ

パラメータ 説明
value 必須
パッケージ仕様の文字列のリスト、または単一のパッケージ仕様の文字列。

パッケージ仕様は package_group と同じ形式になりますが、ネガティブ パッケージ指定は使用できません。つまり、仕様は次の形式になります。

  • "//foo": パッケージ //foo
  • "//foo/...": パッケージ //foo とそのすべてのサブパッケージ。
  • "public" または "private": すべてのパッケージ、またはパッケージなし

「@」構文は使用できません。すべての仕様は、現在のモジュールのリポジトリに対して相対的に解釈されます。

value が文字列のリストの場合、このモジュールに可視性が付与されたパッケージのセットは、各仕様で表されるパッケージの結合になります。(空のリストの効果は private と同じです)。value が単一の文字列の場合は、シングルトン リスト [value] として扱われます。

フラグ --incompatible_package_group_has_public_syntax--incompatible_fix_package_group_reporoot_syntax は、この引数には影響しません。"public""private" の値は常に使用でき、"//..." は常に「現在のリポジトリ内のすべてのパッケージ」として解釈されます。

ワークスペース

None workspace(name)

この関数は WORKSPACE ファイルでのみ使用できます。また、WORKSPACE ファイル内の他のすべての関数の前に宣言する必要があります。各 WORKSPACE ファイルには workspace 関数が必要です。

このワークスペースの名前を設定します。ワークスペース名は、Java パッケージ スタイルのプロジェクトの記述にする必要があります。区切り文字にはアンダースコアを使用します。たとえば、「github.com/bazelbuild/bazel」では「com_github_bazelbuild_bazel」を使用します。

この名前は、リポジトリの runfile が保存されるディレクトリに使用されます。たとえば、ローカル リポジトリに実行ファイル foo/bar があり、WORKSPACE ファイルに workspace(name = 'baz') が含まれている場合、その実行ファイルは mytarget.runfiles/baz/foo/bar で使用できます。ワークスペース名が指定されていない場合、実行ファイルは 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)

tuplelist を返します。i 番目のタプルには、各引数シーケンスまたはイテラブルから i 番目の要素が含まれます。このリストは、最も短い入力のサイズを持ちます。反復可能な引数を 1 つ指定すると、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 必須
圧縮して圧縮します