属性

問題を報告 ソースを表示 ナイトリー · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

ルールまたはアスペクトの属性スキーマを定義するための最上位モジュールです。各関数は、1 つの属性のスキーマを表すオブジェクトを返します。これらのオブジェクトは、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 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 ラベル:または stringまたは LateBoundDefault。または NativeComputedDefault です。または function。または None。 デフォルトは None です
ルールをインスタンス化する際に、この属性に値が指定されていない場合に使用するデフォルト値。文字列または Label 関数を使用して、デフォルト値を指定します(例: attr.label(default = "//a:b"))。
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
属性の構成"exec"(依存関係が execution platform 用にビルドされたことを示す)または "target"(依存関係が target platform 用にビルドされたことを示す)のいずれかになります。この違いの一般的な例としては、モバイルアプリをビルドする場合が挙げられます。この場合、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;または関数 デフォルトは {}
ルールをインスタンス化する際に、この属性に値が指定されていない場合に使用するデフォルト値。文字列または 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 文字列シーケンス。 デフォルトは []
非推奨により削除されます。
mandatory デフォルトは False
true の場合、値は(default がある場合でも)明示的に指定する必要があります。
cfg デフォルトは None
属性の構成"exec"(依存関係が execution platform 用にビルドされたことを示す)または "target"(依存関係が target platform 用にビルドされたことを示す)のいずれかになります。この違いの一般的な例としては、モバイルアプリをビルドする場合が挙げられます。この場合、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=[])

list-of-labels 属性のスキーマを作成します。これは依存関係属性です。対応する ctx.attr 属性は、Targetlist 型です。

この属性には一意の 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 文字列シーケンス。 デフォルトは []
非推奨により削除されます。
mandatory デフォルトは False
true の場合、値は(default がある場合でも)明示的に指定する必要があります。
cfg デフォルトは None
属性の構成"exec"(依存関係が execution platform 用にビルドされたことを示す)または "target"(依存関係が target platform 用にビルドされたことを示す)のいずれかになります。この違いの一般的な例としては、モバイルアプリをビルドする場合が挙げられます。この場合、target platformAndroid または iOS で、execution platformLinuxmacOS、または Windows です。
aspects Aspectシーケンス。 デフォルトは []
この属性で指定された依存関係に適用する必要があるアスペクト。

output

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 がある場合でも)明示的に指定する必要があります。

文字列

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

string 属性のスキーマを作成します。

パラメータ

パラメータ 説明
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)

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

パラメータ

パラメータ 説明
mandatory デフォルトは False
true の場合、値は(default がある場合でも)明示的に指定する必要があります。
allow_empty デフォルトは True
属性を空にできる場合は true。
default 文字列シーケンス。または 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 がある場合でも)明示的に指定する必要があります。