属性

問題を報告 ソースを表示 Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

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

メンバー

ブール値

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 intsequence。デフォルトは []
です。 ルールをインスタンス化するときにこの属性の値が指定されていない場合に使用するデフォルト値。
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 ラベル文字列LateBoundDefault、NativeComputedDefault、関数None。デフォルトは None
です。 ルールをインスタンス化するときにこの属性の値が指定されていない場合に使用するデフォルト値。文字列または Label 関数を使用して、デフォルト値を指定します(例: attr.label(default = "//a:b"))。
doc string、または None。デフォルトは None
ドキュメント生成ツールで抽出できる属性の説明。
executable デフォルトは False
です。依存関係が実行可能である必要がある場合は True。つまり、ラベルは実行可能ファイル、または実行可能ファイルを出力するルールを参照する必要があります。ctx.executable.<attribute_name> を使用してラベルにアクセスします。
allow_files bool、または stringシーケンス、または 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 stringsequence、または None。デフォルトは None
です。 どのルール ターゲット(クラスの名前)が許可されるか。これは非推奨です(互換性のためだけに残されています)。代わりにプロバイダを使用してください。
cfg デフォルトは None
です。 属性の構成"exec"(依存関係が execution platform 用にビルドされていることを示す)または "target"(依存関係が target platform 用にビルドされていることを示す)のいずれかになります。この違いの典型的な例は、モバイルアプリを構築する場合です。この場合、target platformAndroid または iOS で、execution platformLinuxmacOS、または Windows です。executable が True の場合、ターゲット構成でホストツールが誤ってビルドされるのを防ぐために、このパラメータは必須です。"target" には意味的な効果がないため、意図を明確にするのに本当に役立つ場合を除き、executable が False の場合は設定しないでください。
aspects Aspectsequence。デフォルトは []
です。 この属性で指定された依存関係に適用するアスペクト。

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、または stringシーケンス、または None。デフォルトは None
です。 File ターゲットが許可されているかどうか。TrueFalse(デフォルト)、または許可されるファイル拡張子のリスト([".cc", ".cpp"] など)を指定できます。
allow_rules stringsequence、または None。デフォルトは None
です。 どのルール ターゲット(クラスの名前)が許可されるか。これは非推奨です(互換性のためだけに残されています)。代わりにプロバイダを使用してください。
providers デフォルトは []
この属性に表示される依存関係によって提供される必要があるプロバイダ。

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

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

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 属性は、Targetsリスト型になります。

この属性には、一意の 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、または stringシーケンス、または None。デフォルトは None
です。 File ターゲットが許可されているかどうか。TrueFalse(デフォルト)、または許可されるファイル拡張子のリスト([".cc", ".cpp"] など)を指定できます。
allow_rules stringsequence、または None。デフォルトは None
です。 どのルール ターゲット(クラスの名前)が許可されるか。これは非推奨です(互換性のためだけに残されています)。代わりにプロバイダを使用してください。
providers デフォルトは []
この属性に表示される依存関係によって提供される必要があるプロバイダ。

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

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

output

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

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

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

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

パラメータ

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

output_list

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

出力リスト属性のスキーマを作成します。

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

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

パラメータ

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

文字列

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

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

パラメータ

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

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 stringsequence、または 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 がある場合でも)。