属性

問題を報告する ソースを表示

これは、ルールまたはアスペクトの属性スキーマを定義するための最上位のモジュールです。各関数は、単一の属性のスキーマを表すオブジェクトを返します。これらのオブジェクトは、rule()aspect() の辞書引数 attrs の値として使用されます。

属性の定義使用について詳しくは、[ルール] ページをご覧ください。

メンバー

bool

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

ブール値属性のスキーマを作成します。対応する ctx.attr 属性は bool 型になります。

パラメータ

パラメータ 説明
default デフォルトは False です。
ルールをインスタンス化する際にこの属性に値が指定されていない場合に使用されるデフォルト値。
doc string、または None。デフォルトは None
ドキュメント生成ツールで抽出できる属性の説明。
mandatory デフォルトは False です。
true の場合、値を明示的に指定する必要があります(default がある場合でも)。

int

Attribute attr.int(default=0, doc=None, mandatory=False, values=[])

整数属性のスキーマを作成します。値は 32 ビット符号付き範囲で指定してください。対応する ctx.attr 属性は int 型になります。

パラメータ

パラメータ 説明
default デフォルトは 0 です。
ルールをインスタンス化する際にこの属性に値が指定されていない場合に使用されるデフォルト値。
doc string、または None。デフォルトは None
ドキュメント生成ツールで抽出できる属性の説明。
mandatory デフォルトは False です。
true の場合、値を明示的に指定する必要があります(default がある場合でも)。
values intシーケンス。デフォルトは []
属性で許可されている値のリスト。他の値を指定すると、エラーが発生します。

int_list

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

整数のリストの属性のスキーマを作成します。各要素は 32 ビット符号付き範囲内でなければなりません。

パラメータ

パラメータ 説明
mandatory デフォルトは False です。
true の場合、値を明示的に指定する必要があります(default がある場合でも)。
allow_empty デフォルトは True です。
属性を空にできる場合は、True です。
default intシーケンス。デフォルトは []
ルールをインスタンス化する際にこの属性に値が指定されていない場合に使用されるデフォルト値。
doc string、または None。デフォルトは None
ドキュメント生成ツールで抽出できる属性の説明。

ラベル

Attribute attr.label(default=None, doc=None, executable=False, allow_files=None, allow_single_file=None, mandatory=False, providers=[], allow_rules=None, cfg=None, aspects=[])

ラベル属性のスキーマを作成します。これは依存関係属性です。

この属性には一意の Label 値が含まれます。Label の代わりに文字列が指定された場合、ラベル コンストラクタを使用して変換されます。ラベルパスの相対部分は、(名前が変更された可能性のある)リポジトリを含めて、インスタンス化されたターゲットのパッケージに対して解決されます。

ルールの実装関数の分析時、ctx.attr から属性値を取得するときに、ラベルは対応する Target に置き換えられます。これにより、現在のターゲットの依存関係のプロバイダにアクセスできます。

通常のソースファイルに加えて、この種の属性はコンパイラなどのツールを参照するためによく使用されます。このようなツールは、ソースファイルと同様に、依存関係とみなされます。ユーザーが BUILD ファイルでルールを使用するたびにツールのラベルを指定しなければならないようにするため、正規ツールのラベルをこの属性の default 値としてハードコードできます。また、このデフォルト値をユーザーがオーバーライドできないようにするには、アンダースコアで始まる名前を指定して、属性を非公開にします。詳細については、ルールページをご覧ください。

パラメータ

パラメータ 説明
default LabelstringLateBoundDefault、NativeComputedDefault、functionNone。デフォルトは None
ルールをインスタンス化する際にこの属性に値が指定されていない場合に使用するデフォルト値。デフォルト値(attr.label(default = "//a:b") など)を指定するには、文字列または Label 関数を使用します。
doc string、または None。デフォルトは None
ドキュメント生成ツールで抽出できる属性の説明。
executable デフォルトは False です。
依存関係を実行可能にする必要がある場合は true。つまり、ラベルは実行ファイル、または実行可能ファイルを出力するルールを参照している必要があります。ctx.executable.<attribute_name> でラベルにアクセスします。
allow_files bool文字列シーケンス、または None。デフォルトは None
File ターゲットを許可するかどうか。TrueFalse(デフォルト)、または許可されるファイル拡張子のリスト(例: [".cc", ".cpp"])を指定できます。
allow_single_file デフォルトは None です。
allow_files と似ていますが、ラベルは単一の File に対応する必要があるという制限があります。アクセスには ctx.file.<attribute_name> を使用します。
mandatory デフォルトは False です。
true の場合、値を明示的に指定する必要があります(default がある場合でも)。
providers デフォルトは [] です。
この属性に登場する依存関係によって提供される必要のあるプロバイダ。

この引数の形式は、provider() によって返される *Info オブジェクト(以前のプロバイダの場合は文字列名)のプロバイダのリストです。この依存関係は、少なくとも 1 つの内部リストにあるすべてのプロバイダを返す必要があります。便宜上、この引数をプロバイダの単一レベルのリストにすることもできます。その場合は、1 つの要素を含む外側のリストにラップされます。依存関係のルールで、provides パラメータでこれらのプロバイダをアドバタイズする必要はありませんが、ベスト プラクティスです。

allow_rules 文字列シーケンスまたは None。デフォルトは None
許可されるルール ターゲット(クラスの名前)を指定します。これは非推奨です(互換性のためのみに残しています)。代わりにプロバイダを使用してください。
cfg デフォルトは None です。
属性の構成。依存関係が execution platform に対してビルドされることを示す "exec" か、依存関係が target platform に対してビルドされることを示す "target" のいずれかになります。相違点の典型的な例は、モバイルアプリをビルドする場合です。この場合、target platformAndroid または iOS で、execution platformLinuxmacOS、または Windows です。ターゲット構成でホストツールを誤ってビルドしないように、executable が True の場合、このパラメータは必須です。"target" にはセマンティック効果がないため、意図の明確化に役立つ場合を除き、executable が False の場合は設定しないでください。
aspects Aspectシーケンス。デフォルトは []
この属性で指定された依存関係または依存関係に適用されるアスペクト。

label_keyed_string_dict

Attribute attr.label_keyed_string_dict(allow_empty=True, *, default={}, doc=None, allow_files=None, allow_rules=None, providers=[], flags=[], mandatory=False, cfg=None, aspects=[])

辞書を持つ属性のスキーマを作成します。キーはラベルで、値は文字列です。これは依存関係属性です。

この属性には一意の Label 値が含まれます。Label の代わりに文字列が指定された場合、ラベル コンストラクタを使用して変換されます。ラベルパスの相対部分は、(名前が変更された可能性のある)リポジトリを含めて、インスタンス化されたターゲットのパッケージに対して解決されます。

ルールの実装関数の分析時、ctx.attr から属性値を取得するときに、ラベルは対応する Target に置き換えられます。これにより、現在のターゲットの依存関係のプロバイダにアクセスできます。

パラメータ

パラメータ 説明
allow_empty デフォルトは True です。
属性を空にできる場合は、True です。
default dict または function。デフォルトは {}
ルールをインスタンス化する際にこの属性に値が指定されていない場合に使用されるデフォルト値。文字列または Label 関数を使用して、attr.label_keyed_string_dict(default = {"//a:b": "value", "//a:c": "string"}) などのデフォルト値を指定します。
doc string、または None。デフォルトは None
ドキュメント生成ツールで抽出できる属性の説明。
allow_files bool文字列シーケンス、または None。デフォルトは None
File ターゲットを許可するかどうか。TrueFalse(デフォルト)、または許可されるファイル拡張子のリスト(例: [".cc", ".cpp"])を指定できます。
allow_rules 文字列シーケンスまたは None。デフォルトは None
許可されるルール ターゲット(クラスの名前)を指定します。これは非推奨です(互換性のためのみに残しています)。代わりにプロバイダを使用してください。
providers デフォルトは [] です。
この属性に登場する依存関係によって提供される必要のあるプロバイダ。

この引数の形式は、provider() によって返される *Info オブジェクト(以前のプロバイダの場合は文字列名)のプロバイダのリストです。この依存関係は、少なくとも 1 つの内部リストにあるすべてのプロバイダを返す必要があります。便宜上、この引数をプロバイダの単一レベルのリストにすることもできます。その場合は、1 つの要素を含む外側のリストにラップされます。依存関係のルールで、provides パラメータでこれらのプロバイダをアドバタイズする必要はありませんが、ベスト プラクティスです。

flags stringシーケンス(デフォルトは []
非推奨。今後削除されます。
mandatory デフォルトは False です。
true の場合、値を明示的に指定する必要があります(default がある場合でも)。
cfg デフォルトは None です。
属性の構成。依存関係が execution platform に対してビルドされることを示す "exec" か、依存関係が target platform に対してビルドされることを示す "target" のいずれかになります。相違点の典型的な例は、モバイルアプリをビルドする場合です。この場合、target platformAndroid または iOS で、execution platformLinuxmacOS、または Windows です。
aspects Aspectシーケンス。デフォルトは []
この属性で指定された依存関係または依存関係に適用されるアスペクト。

label_list

Attribute attr.label_list(allow_empty=True, *, default=[], doc=None, allow_files=None, allow_rules=None, providers=[], flags=[], mandatory=False, cfg=None, aspects=[])

ラベルのリスト属性のスキーマを作成します。これは依存関係属性です。対応する ctx.attr 属性は、Targetslist 型になります。

この属性には一意の Label 値が含まれます。Label の代わりに文字列が指定された場合、ラベル コンストラクタを使用して変換されます。ラベルパスの相対部分は、(名前が変更された可能性のある)リポジトリを含めて、インスタンス化されたターゲットのパッケージに対して解決されます。

ルールの実装関数の分析時、ctx.attr から属性値を取得するときに、ラベルは対応する Target に置き換えられます。これにより、現在のターゲットの依存関係のプロバイダにアクセスできます。

パラメータ

パラメータ 説明
allow_empty デフォルトは True です。
属性を空にできる場合は、True です。
default ラベルシーケンスまたは関数。デフォルトは [] です
。ルールをインスタンス化するときに、この属性に値が指定されていない場合に使用されるデフォルト値。文字列または Label 関数を使用して、attr.label_list(default = ["//a:b", "//a:c"]) などのデフォルト値を指定します。
doc string、または None。デフォルトは None
ドキュメント生成ツールで抽出できる属性の説明。
allow_files bool文字列シーケンス、または None。デフォルトは None
File ターゲットを許可するかどうか。TrueFalse(デフォルト)、または許可されるファイル拡張子のリスト(例: [".cc", ".cpp"])を指定できます。
allow_rules 文字列シーケンスまたは None。デフォルトは None
許可されるルール ターゲット(クラスの名前)を指定します。これは非推奨です(互換性のためのみに残しています)。代わりにプロバイダを使用してください。
providers デフォルトは [] です。
この属性に登場する依存関係によって提供される必要のあるプロバイダ。

この引数の形式は、provider() によって返される *Info オブジェクト(以前のプロバイダの場合は文字列名)のプロバイダのリストです。この依存関係は、少なくとも 1 つの内部リストにあるすべてのプロバイダを返す必要があります。便宜上、この引数をプロバイダの単一レベルのリストにすることもできます。その場合は、1 つの要素を含む外側のリストにラップされます。依存関係のルールで、provides パラメータでこれらのプロバイダをアドバタイズする必要はありませんが、ベスト プラクティスです。

flags stringシーケンス(デフォルトは []
非推奨。今後削除されます。
mandatory デフォルトは False です。
true の場合、値を明示的に指定する必要があります(default がある場合でも)。
cfg デフォルトは None です。
属性の構成。依存関係が execution platform に対してビルドされることを示す "exec" か、依存関係が target platform に対してビルドされることを示す "target" のいずれかになります。相違点の典型的な例は、モバイルアプリをビルドする場合です。この場合、target platformAndroid または iOS で、execution platformLinuxmacOS、または Windows です。
aspects Aspectシーケンス。デフォルトは []
この属性で指定された依存関係または依存関係に適用されるアスペクト。

出力

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

出力(ラベル)属性のスキーマを作成します。

この属性には一意の Label 値が含まれます。Label の代わりに文字列が指定された場合、ラベル コンストラクタを使用して変換されます。ラベルパスの相対部分は、(名前が変更された可能性のある)リポジトリを含めて、インスタンス化されたターゲットのパッケージに対して解決されます。

分析時には、ctx.outputs を使用して、対応する File を取得できます。

パラメータ

パラメータ 説明
doc string、または None。デフォルトは None
ドキュメント生成ツールで抽出できる属性の説明。
mandatory デフォルトは False です。
true の場合、値を明示的に指定する必要があります(default がある場合でも)。

output_list

Attribute attr.output_list(allow_empty=True, *, doc=None, mandatory=False)

list-of-outputs 属性のスキーマを作成します。

この属性には一意の Label 値が含まれます。Label の代わりに文字列が指定された場合、ラベル コンストラクタを使用して変換されます。ラベルパスの相対部分は、(名前が変更された可能性のある)リポジトリを含めて、インスタンス化されたターゲットのパッケージに対して解決されます。

分析時には、ctx.outputs を使用して、対応する File を取得できます。

パラメータ

パラメータ 説明
allow_empty デフォルトは True です。
属性を空にできる場合は、True です。
doc string、または None。デフォルトは None
ドキュメント生成ツールで抽出できる属性の説明。
mandatory デフォルトは False です。
true の場合、値を明示的に指定する必要があります(default がある場合でも)。

string

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

文字列属性のスキーマを作成します。

パラメータ

パラメータ 説明
default string、または NativeComputedDefault。デフォルトは ''
ルールをインスタンス化する際にこの属性に値が指定されていない場合に使用されるデフォルト値。
doc string、または None。デフォルトは None
ドキュメント生成ツールで抽出できる属性の説明。
mandatory デフォルトは False です。
true の場合、値を明示的に指定する必要があります(default がある場合でも)。
values stringシーケンス(デフォルトは [])。
属性で許可されている値のリスト。他の値を指定すると、エラーが発生します。

string_dict

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

キーと値は文字列で、辞書を保持する属性のスキーマを作成します。

パラメータ

パラメータ 説明
allow_empty デフォルトは True です。
属性を空にできる場合は、True です。
default デフォルトは {} です。
ルールをインスタンス化する際にこの属性に値が指定されていない場合に使用されるデフォルト値。
doc string、または None。デフォルトは None
ドキュメント生成ツールで抽出できる属性の説明。
mandatory デフォルトは False です。
true の場合、値を明示的に指定する必要があります(default がある場合でも)。

string_list

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

文字列のリスト属性のスキーマを作成します。

パラメータ

パラメータ 説明
mandatory デフォルトは False です。
true の場合、値を明示的に指定する必要があります(default がある場合でも)。
allow_empty デフォルトは True です。
属性を空にできる場合は、True です。
default stringシーケンス、または NativeComputedDefault。デフォルトは []
ルールをインスタンス化する際にこの属性に値が指定されていない場合に使用されるデフォルト値。
doc string、または None。デフォルトは None
ドキュメント生成ツールで抽出できる属性の説明。

string_list_dict

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

辞書を持つ属性のスキーマを作成します。キーは文字列で、値は文字列のリストです。

パラメータ

パラメータ 説明
allow_empty デフォルトは True です。
属性を空にできる場合は、True です。
default デフォルトは {} です。
ルールをインスタンス化する際にこの属性に値が指定されていない場合に使用されるデフォルト値。
doc string、または None。デフォルトは None
ドキュメント生成ツールで抽出できる属性の説明。
mandatory デフォルトは False です。
true の場合、値を明示的に指定する必要があります(default がある場合でも)。