属性

問題を報告 ソースを表示

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

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

メンバー

ブール値

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

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

パラメータ

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

int

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

整数属性のスキーマを作成します。値は 32 ビット符号付き範囲にする必要があります。対応する ctx.attr 属性の型は int になります。

パラメータ

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

int_list

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

整数のリスト属性のスキーマを作成します。各要素は、符号付き 32 ビット範囲内に存在する必要があります。

パラメータ

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

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

allow_rules sequence of strings; or None; default = None
どのルール ターゲット(クラスの名前)が許可されます。これは非推奨です(互換性の維持のみのため)。代わりにプロバイダを使用してください。
cfg デフォルト = なし
属性の構成"exec" には、依存関係が execution platform に対してビルドされたことが示されます。"target" は、依存関係が target platform に対してビルドされていることを示します。違いの典型的な例は、モバイルアプリの構築時です。ここで、target platformAndroid または iOS で、execution platformLinuxmacOS、または Windows です。executable が true の場合、ターゲット構成でホストツールを誤ってビルドするのを防ぐために、このパラメータは必須です。"target" にはセマンティック効果がないため、executable が False の場合は設定しないでください(意図が明確になる場合は除きます)。
aspects sequence of Aspects; default = []
この属性で指定された依存関係に適用される必要がある要素。

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

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

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

ラベルリスト

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

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

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

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

パラメータ

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

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

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

出力

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

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

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

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

パラメータ

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

出力リスト

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

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

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

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

パラメータ

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

string

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

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

パラメータ

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

文字列辞書

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

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

パラメータ

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

文字列リスト

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

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

パラメータ

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

文字列リスト辞書

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

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

パラメータ

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