BazelCon 2022 findet vom 16. bis 17. November in New York und online statt.
Jetzt anmelden

Attr

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Dies ist ein Modul auf oberster Ebene zum Definieren der Attributschemas einer Regel oder eines Aspekts. Jede Funktion gibt ein Objekt zurück, das das Schema eines einzelnen Attributs darstellt. Diese Objekte werden als Werte des Wörterbucharguments attrs von rule() und aspect() verwendet.

Weitere Informationen zum Definieren und Verwenden von Attributen finden Sie auf der Seite „Regeln“.

Mitglieder

bool

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

Erstellt ein Schema für ein boolesches Attribut.

Parameter

Parameter Beschreibung
default default = False
Ein Standardwert, der verwendet wird, wenn bei der Instanziierung der Regel kein Wert angegeben wird.
doc default = "
Eine Beschreibung des Attributs, die von Tools zur Generierung von Dokumentation extrahiert werden kann.
mandatory default = False
Wenn "true", muss der Wert explizit angegeben werden (auch wenn er default enthält).

int

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

Erstellt ein Schema für ein Ganzzahlattribut. Der Wert muss im signierten 32-Bit-Bereich liegen.

Parameter

Parameter Beschreibung
default default = 0
Ein Standardwert, der verwendet wird, wenn für dieses Attribut kein Wert angegeben wird.
doc default = "
Eine Beschreibung des Attributs, die von Tools zur Generierung von Dokumentation extrahiert werden kann.
mandatory default = False
Wenn "true", muss der Wert explizit angegeben werden (auch wenn er default enthält).
values sequence of ints; default = []
Die Liste der zulässigen Werte für das Attribut. Wenn ein anderer Wert angegeben wird, wird ein Fehler ausgegeben.

int_list

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

Erstellt ein Schema für eine Liste von Ganzzahlen. Jedes Element muss im signierten 32-Bit-Bereich liegen.

Parameter

Parameter Beschreibung
mandatory default = False
Wenn "true", muss der Wert explizit angegeben werden (auch wenn er default enthält).
allow_empty default = True
True, wenn das Attribut leer sein kann.
default sequence of ints; default = []
Ein Standardwert, der verwendet wird, wenn kein Wert für dieses Attribut beim Instanziieren der Regel angegeben ist.
doc default = "
Eine Beschreibung des Attributs, die von Tools zur Generierung von Dokumentation extrahiert werden kann.

label

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

Erstellt ein Schema für ein Labelattribut. Dies ist ein Abhängigkeitsattribut.

Dieses Attribut enthält eindeutige Label-Werte. Wenn ein String anstelle von Label angegeben wird, wird er mithilfe des Label-Konstruktors konvertiert. Die relativen Teile des Labelpfads, einschließlich des (möglicherweise umbenannten) Repositorys werden in Bezug auf das Paket des instanziierten Ziels aufgelöst.

Bei der Analyse (in der Implementierungsfunktion der Regel) werden Labels beim Abrufen des Attributwerts von ctx.attr durch die entsprechenden Target ersetzt. So können Sie auf die Anbieter der Abhängigkeiten des aktuellen Ziels zugreifen.

Zusätzlich zu gewöhnlichen Quelldateien wird diese Art von Attribut häufig verwendet, um auf ein Tool zu verweisen, beispielsweise einen Compiler. Solche Tools werden wie Quelldateien als Abhängigkeiten betrachtet. Wenn Sie nicht möchten, dass Nutzer das Label des Tools jedes Mal angeben, wenn sie die Regel in ihren BUILD-Dateien verwenden, können Sie das Label eines kanonischen Tools als default-Wert dieses Attributs hartcodieren. Wenn Sie außerdem verhindern möchten, dass Nutzer diese Standardeinstellung überschreiben, können Sie das Attribut auf „privat“ setzen, indem Sie einen mit einem Unterstrich beginnenden Namen eingeben. Weitere Informationen finden Sie auf der Seite Regeln.

Parameter

Parameter Beschreibung
default Label; or string; or LateBoundDefault; or NativeComputedDefault; or function; or None; default = Keine
Ein Standardwert, der verwendet wird, wenn bei der Instanziierung der Regel kein Wert angegeben wird. String verwenden oderLabel einen Standardwert angeben, z. B.attr.label(default = "//a:b") vorliegen.
doc default = "
Eine Beschreibung des Attributs, die von Tools zur Generierung von Dokumentation extrahiert werden kann.
executable default = False
True, wenn die Abhängigkeit ausführbar sein muss. Das Label muss sich also auf eine ausführbare Datei oder eine Regel beziehen, die eine ausführbare Datei ausgibt. Mit ctx.executable.<attribute_name> auf das Label zugreifen.
allow_files bool; or sequence of strings; or None; default = None
Gibt an, ob File-Ziele zulässig sind. Kann True, False (Standardeinstellung) oder eine Liste von zulässigen Dateiendungen sein, z. B. [".cc", ".cpp"].
allow_single_file default = None
Diese Methode ähnelt allow_files, hat aber die Einschränkung, dass das Label einer einzelnen File entsprechen muss. Du kannst über ctx.file.<attribute_name> darauf zugreifen.
mandatory default = False
Wenn "true", muss der Wert explizit angegeben werden (auch wenn er default enthält).
providers default = []
Die Anbieter, die von jeder Abhängigkeit in diesem Attribut angegeben werden müssen.

Das Format dieses Arguments ist eine Liste von Anbietern: *Info-Objekte, die von provider() zurückgegeben werden (oder im Fall eines alten Anbieters dessen Stringname). Die Abhängigkeit muss ALLE Anbieter zurückgeben, die in mindestens EINER der inneren Listen erwähnt wurden. Zur besseren Übersicht kann dieses Argument auch eine Liste von Anbietern mit nur einer Ebene umfassen. In diesem Fall ist es in einer äußeren Liste mit einem Element zusammengefasst.

allow_rules sequence of strings; or None; default = None
Welche Regelziele (Name der Klassen) zulässig sind Dieses Attribut wurde eingestellt (nur aus Kompatibilitätsgründen entfernt). Verwenden Sie stattdessen einen Anbieter.
cfg default = None
Konfiguration des Attributs. Sie kann entweder "exec" sein, was bedeutet, dass die Abhängigkeit für execution platform erstellt wurde, oder "target", was darauf hinweist, dass die Abhängigkeit für target platform erstellt ist. Ein typischer Unterschied besteht darin, dass eine mobile Apptarget platform istAndroid oderiOS während dieexecution platform istLinux .macOS oderWindows vorliegen. Dieser Parameter ist erforderlich, wenn executable auf „True“ gesetzt ist, um nicht versehentlich Hosttools in der Zielkonfiguration zu erstellen. "target" hat keine semantischen Auswirkungen. Du solltest sie daher nicht festlegen, wenn executable „false“ ist, es sei denn, sie hilft dir, deine Vorsätze zu klären.
aspects sequence of Aspects; default = []
Aspekte, die auf die von diesem Attribut angegebenen Abhängigkeiten oder Abhängigkeiten angewendet werden sollen.

label_keyed_string_dict

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

Erstellt ein Schema für ein Attribut, das ein Wörterbuch enthält. Die Schlüssel sind Labels und die Werte sind Strings. Dies ist ein Abhängigkeitsattribut.

Dieses Attribut enthält eindeutige Label-Werte. Wenn ein String anstelle von Label angegeben wird, wird er mithilfe des Label-Konstruktors konvertiert. Die relativen Teile des Labelpfads, einschließlich des (möglicherweise umbenannten) Repositorys werden in Bezug auf das Paket des instanziierten Ziels aufgelöst.

Bei der Analyse (in der Implementierungsfunktion der Regel) werden Labels beim Abrufen des Attributwerts von ctx.attr durch die entsprechenden Target ersetzt. So können Sie auf die Anbieter der Abhängigkeiten des aktuellen Ziels zugreifen.

Parameter

Parameter Beschreibung
allow_empty default = True
True, wenn das Attribut leer sein kann.
default dict; or function; default = {}
Ein Standardwert, der verwendet wird, wenn bei der Instanziierung der Regel kein Wert angegeben wird. Strings oder das AttributLabel zum Festlegen von Standardwerten, z. B.attr.label_keyed_string_dict(default = {"//a:b": "value", "//a:c": "string"}) vorliegen.
doc default = "
Eine Beschreibung des Attributs, die von Tools zur Generierung von Dokumentation extrahiert werden kann.
allow_files bool; or sequence of strings; or None; default = None
Gibt an, ob File-Ziele zulässig sind. Kann True, False (Standardeinstellung) oder eine Liste von zulässigen Dateiendungen sein, z. B. [".cc", ".cpp"].
allow_rules sequence of strings; or None; default = None
Welche Regelziele (Name der Klassen) zulässig sind Dieses Attribut wurde eingestellt (nur aus Kompatibilitätsgründen entfernt). Verwenden Sie stattdessen einen Anbieter.
providers default = []
Die Anbieter, die von jeder Abhängigkeit in diesem Attribut angegeben werden müssen.

Das Format dieses Arguments ist eine Liste von Anbietern: *Info-Objekte, die von provider() zurückgegeben werden (oder im Fall eines alten Anbieters dessen Stringname). Die Abhängigkeit muss ALLE Anbieter zurückgeben, die in mindestens EINER der inneren Listen erwähnt wurden. Zur besseren Übersicht kann dieses Argument auch eine Liste von Anbietern mit nur einer Ebene umfassen. In diesem Fall ist es in einer äußeren Liste mit einem Element zusammengefasst.

flags sequence of strings; default = []
Veraltet, wird entfernt.
mandatory default = False
Wenn "true", muss der Wert explizit angegeben werden (auch wenn er default enthält).
cfg default = None
Konfiguration des Attributs. Sie kann entweder "exec" sein, was bedeutet, dass die Abhängigkeit für execution platform erstellt wurde, oder "target", was darauf hinweist, dass die Abhängigkeit für target platform erstellt ist. Ein typischer Unterschied besteht darin, dass eine mobile Apptarget platform istAndroid oderiOS während dieexecution platform istLinux .macOS oderWindows vorliegen.
aspects sequence of Aspects; default = []
Aspekte, die auf die von diesem Attribut angegebenen Abhängigkeiten oder Abhängigkeiten angewendet werden sollen.

Label-Liste

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

Erstellt ein Schema für ein Attributliste. Dies ist ein Abhängigkeitsattribut.

Dieses Attribut enthält eindeutige Label-Werte. Wenn ein String anstelle von Label angegeben wird, wird er mithilfe des Label-Konstruktors konvertiert. Die relativen Teile des Labelpfads, einschließlich des (möglicherweise umbenannten) Repositorys werden in Bezug auf das Paket des instanziierten Ziels aufgelöst.

Bei der Analyse (in der Implementierungsfunktion der Regel) werden Labels beim Abrufen des Attributwerts von ctx.attr durch die entsprechenden Target ersetzt. So können Sie auf die Anbieter der Abhängigkeiten des aktuellen Ziels zugreifen.

Parameter

Parameter Beschreibung
allow_empty default = True
True, wenn das Attribut leer sein kann.
default sequence of Labels; or function; default = []
Ein Standardwert, der verwendet wird, wenn bei der Instanziierung der Regel kein Wert angegeben wird. Strings oder das AttributLabel zum Festlegen von Standardwerten, z. B.attr.label_list(default = ["//a:b", "//a:c"]) vorliegen.
doc default = "
Eine Beschreibung des Attributs, die von Tools zur Generierung von Dokumentation extrahiert werden kann.
allow_files bool; or sequence of strings; or None; default = None
Gibt an, ob File-Ziele zulässig sind. Kann True, False (Standardeinstellung) oder eine Liste von zulässigen Dateiendungen sein, z. B. [".cc", ".cpp"].
allow_rules sequence of strings; or None; default = None
Welche Regelziele (Name der Klassen) zulässig sind Dieses Attribut wurde eingestellt (nur aus Kompatibilitätsgründen entfernt). Verwenden Sie stattdessen einen Anbieter.
providers default = []
Die Anbieter, die von jeder Abhängigkeit in diesem Attribut angegeben werden müssen.

Das Format dieses Arguments ist eine Liste von Anbietern: *Info-Objekte, die von provider() zurückgegeben werden (oder im Fall eines alten Anbieters dessen Stringname). Die Abhängigkeit muss ALLE Anbieter zurückgeben, die in mindestens EINER der inneren Listen erwähnt wurden. Zur besseren Übersicht kann dieses Argument auch eine Liste von Anbietern mit nur einer Ebene umfassen. In diesem Fall ist es in einer äußeren Liste mit einem Element zusammengefasst.

flags sequence of strings; default = []
Veraltet, wird entfernt.
mandatory default = False
Wenn "true", muss der Wert explizit angegeben werden (auch wenn er default enthält).
cfg default = None
Konfiguration des Attributs. Sie kann entweder "exec" sein, was bedeutet, dass die Abhängigkeit für execution platform erstellt wurde, oder "target", was darauf hinweist, dass die Abhängigkeit für target platform erstellt ist. Ein typischer Unterschied besteht darin, dass eine mobile Apptarget platform istAndroid oderiOS während dieexecution platform istLinux .macOS oderWindows vorliegen.
aspects sequence of Aspects; default = []
Aspekte, die auf die von diesem Attribut angegebenen Abhängigkeiten oder Abhängigkeiten angewendet werden sollen.

Ergebnis

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

Erstellt ein Schema für ein Ausgabelabel (Label).

Dieses Attribut enthält eindeutige Label-Werte. Wenn ein String anstelle von Label angegeben wird, wird er mithilfe des Label-Konstruktors konvertiert. Die relativen Teile des Labelpfads, einschließlich des (möglicherweise umbenannten) Repositorys werden in Bezug auf das Paket des instanziierten Ziels aufgelöst.

Zum Zeitpunkt der Analyse können die entsprechenden File mit ctx.outputs abgerufen werden.

Parameter

Parameter Beschreibung
doc default = "
Eine Beschreibung des Attributs, die von Tools zur Generierung von Dokumentation extrahiert werden kann.
mandatory default = False
Wenn "true", muss der Wert explizit angegeben werden (auch wenn er default enthält).

Ausgabeliste

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

Erstellt ein Schema für ein list-of-outputs-Attribut.

Dieses Attribut enthält eindeutige Label-Werte. Wenn ein String anstelle von Label angegeben wird, wird er mithilfe des Label-Konstruktors konvertiert. Die relativen Teile des Labelpfads, einschließlich des (möglicherweise umbenannten) Repositorys werden in Bezug auf das Paket des instanziierten Ziels aufgelöst.

Zum Zeitpunkt der Analyse können die entsprechenden File mit ctx.outputs abgerufen werden.

Parameter

Parameter Beschreibung
allow_empty default = True
True, wenn das Attribut leer sein kann.
doc default = "
Eine Beschreibung des Attributs, die von Tools zur Generierung von Dokumentation extrahiert werden kann.
mandatory default = False
Wenn "true", muss der Wert explizit angegeben werden (auch wenn er default enthält).

String

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

Erstellt ein Schema für ein String-Attribut.

Parameter

Parameter Beschreibung
default string; or NativeComputedDefault; default = "
Ein Standardwert, der verwendet wird, wenn kein Wert für dieses Attribut beim Instanziieren der Regel angegeben wird.
doc default = "
Eine Beschreibung des Attributs, die von Tools zur Generierung von Dokumentation extrahiert werden kann.
mandatory default = False
Wenn "true", muss der Wert explizit angegeben werden (auch wenn er default enthält).
values sequence of strings; default = []
Die Liste der zulässigen Werte für das Attribut. Wenn ein anderer Wert angegeben wird, wird ein Fehler ausgegeben.

String

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

Erstellt ein Schema für ein Attribut, das ein Wörterbuch enthält. Die Schlüssel und Werte sind Strings.

Parameter

Parameter Beschreibung
allow_empty default = True
True, wenn das Attribut leer sein kann.
default default = {}
Ein Standardwert, der verwendet wird, wenn bei der Instanziierung der Regel kein Wert angegeben ist.
doc default = "
Eine Beschreibung des Attributs, die von Tools zur Generierung von Dokumentation extrahiert werden kann.
mandatory default = False
Wenn "true", muss der Wert explizit angegeben werden (auch wenn er default enthält).

Stringliste

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

Erstellt ein Schema für ein String-Listenattribut.

Parameter

Parameter Beschreibung
mandatory default = False
Wenn "true", muss der Wert explizit angegeben werden (auch wenn er default enthält).
allow_empty default = True
True, wenn das Attribut leer sein kann.
default sequence of strings; or NativeComputedDefault; default = []
Ein Standardwert, der verwendet wird, wenn kein Wert für dieses Attribut beim Instanziieren der Regel angegeben ist.
doc default = "
Eine Beschreibung des Attributs, die von Tools zur Generierung von Dokumentation extrahiert werden kann.

string_list_dict

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

Erstellt ein Schema für ein Attribut, das ein Wörterbuch enthält. Die Schlüssel sind Strings und die Werte sind Listen mit Strings.

Parameter

Parameter Beschreibung
allow_empty default = True
True, wenn das Attribut leer sein kann.
default default = {}
Ein Standardwert, der verwendet wird, wenn bei der Instanziierung der Regel kein Wert angegeben ist.
doc default = "
Eine Beschreibung des Attributs, die von Tools zur Generierung von Dokumentation extrahiert werden kann.
mandatory default = False
Wenn "true", muss der Wert explizit angegeben werden (auch wenn er default enthält).