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

Weltweit

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Objekte, Funktionen und Module, die in der globalen Umgebung registriert sind.

Mitglieder

Alle

bool all(elements)

Gibt „wahr“ zurück, wenn alle Elemente als „wahr“ ausgewertet werden oder die Sammlung leer ist. Elemente werden mithilfe der bool-Funktion in boolesche Werte konvertiert.
all(["hello", 3, True]) == True
all([-1, 0, 1]) == False

Parameter

Parameter Beschreibung
elements erforderlich
Ein String oder eine Sammlung von Elementen.

Analysetest

None analysis_test(name, implementation, attrs=None, fragments=[], toolchains=[], attr_values={})

Experimentell: Diese API ist experimentell und kann sich jederzeit ändern. Verlassen Sie sich nicht darauf. Möglicherweise wird sie zu Testzwecken aktiviert, indem Sie --+experimental_analysis_test_call
festlegen. Dadurch wird ein neues Analysetestziel erstellt.

Die Anzahl der temporären Abhängigkeiten des Tests ist begrenzt. Das Limit wird durch das Flag --analysis_testing_deps_limit gesteuert.

Parameter

Parameter Beschreibung
name erforderlich
Name des Ziels. Es sollte sich um eine Starlark-Kennung handeln, die mit dem Muster '[A-Za-z_][A-Za-z0-9_]*' übereinstimmt.
implementation erforderlich
Die Starlark-Funktion, die diesen Analysetest implementiert, ist erforderlich. Er muss genau einen Parameter haben: ctx. Die Funktion wird in der Analysephase aufgerufen. Es kann auf die von attrs deklarierten und über attr_values ausgefüllten Attribute zugreifen. Durch die Implementierungsfunktion werden möglicherweise keine Aktionen registriert. Stattdessen müssen Sie über AnalysisTestResultInfo eine Prüfung bestehen bzw. nicht bestehen.
attrs dict; or None; default = None
Wörterbuch, das die Attribute angibt. Siehe Regel.Für Attribute können Konfigurationsübergänge verwendet werden, die mithilfe von analysis_test_transition definiert wurden.
fragments sequence of strings; default = []
Liste der Konfigurationsfragmente, die für die Implementierung des Analysetests verfügbar sind.
toolchains sequence; default = []
Die Gruppe von Toolchains, die für den Test erforderlich ist. Siehe Regelaufruf.
attr_values dict of strings; default = {}
Wörterbuch der Attributwerte, die an die Implementierung übergeben werden sollen.

Analysetest

transition analysis_test_transition(settings)

Erstellt einen Konfigurationsübergang, der auf die Abhängigkeiten einer Analysetestregel angewendet werden soll. Dieser Übergang kann nur auf Attribute mit Regeln mit analysis_test = True angewendet werden. Solche Regeln sind in Bezug auf die Funktionen eingeschränkt (z. B. ist die Größe ihres Abhängigkeitsbaums begrenzt). Daher sind mit dieser Funktion erstellte Übergänge im Hinblick auf die mit Übergang erstellten Übergängen möglicherweise begrenzt.

Diese Funktion wurde hauptsächlich entwickelt, um die Analyse-Framework-Bibliothek zu ermöglichen. Die Best Practices finden Sie in der zugehörigen Dokumentation oder Implementierung.

Parameter

Parameter Beschreibung
settings erforderlich
Ein Wörterbuch mit Informationen zu den Konfigurationseinstellungen, die durch diesen Konfigurationsübergang festgelegt werden sollten. Schlüssel sind Labels für Build-Einstellungen und ihre Werte sind die neuen Werte nach der Umstellung. Alle anderen Einstellungen bleiben unverändert. Hiermit können Sie bestimmte Konfigurationseinstellungen deklarieren, die für die erfolgreiche Durchführung eines Analysetests festgelegt werden müssen.

Beliebig

bool any(elements)

Gibt „wahr“ zurück, wenn mindestens ein Element als „wahr“ ausgewertet wird. Elemente werden mithilfe der bool-Funktion in boolesche Werte konvertiert.
any([-1, 0, 1]) == True
any([False, 0, ""]) == False

Parameter

Parameter Beschreibung
elements erforderlich
Ein String oder eine Sammlung von Elementen.

Archiv_Überschreibung

None archive_override(module_name, urls, integrity='', strip_prefix='', patches=[], patch_strip=0)

Gibt an, dass diese Abhängigkeit aus einer Archivdatei (ZIP, GZIP usw.) an einem bestimmten Speicherort statt aus einer Registry stammen sollte. Diese Anweisung kann nur vom Stammmodul verwendet werden. Wenn also ein Modul Überschreibungen angibt, kann es von anderen nicht als Abhängigkeit verwendet werden.

Parameter

Parameter Beschreibung
module_name erforderlich
Der Name der Bazel-Modulabhängigkeit, auf die diese Überschreibung angewendet werden soll.
urls string; or Iterable of strings; erforderlich
Die URLs des Archivs. Dies können URLs mit der URL http(s):// oder file:// sein.
integrity default = ''
Die erwartete Prüfsumme der Archivdatei im Format Subressourcen-Integrität.
strip_prefix default = ''
Ein Verzeichnispräfix, das aus den extrahierten Dateien entfernt wird.
patches Iterable of strings; default = []
Eine Liste von Labels, die auf Patch-Dateien verweisen, die für dieses Modul angewendet werden sollen. Die Patchdateien müssen in der Quellstruktur des Projekts auf oberster Ebene vorhanden sein. Sie werden in der Reihenfolge der Liste angewendet.
patch_strip default = 0
Identisch mit dem Argument „--strip“ des Unix-Patches.

Aspekt

Aspect aspect(implementation, attr_aspects=[], attrs=None, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None)

Erstellt einen neuen Aspekt. Das Ergebnis dieser Funktion muss in einem globalen Wert gespeichert werden. Weitere Informationen finden Sie in der Einführung in Aspekte.

Parameter

Parameter Beschreibung
implementation erforderlich
Eine Starlark-Funktion, die diesen Aspekt mit genau zwei Parametern implementiert: Ziel (das Ziel, auf das der Aspekt angewendet wird) und ctx (der Regelkontext, aus dem das Ziel erstellt wird). Attribute des Ziels sind über das Feld ctx.rule verfügbar. Diese Funktion wird in der Analysephase für jede Anwendung eines Aspekts auf ein Ziel ausgewertet.
attr_aspects sequence of strings; default = []
Liste der Attributnamen. Der Aspekt wird zusammen mit den in den Attributen eines Ziels angegebenen Abhängigkeiten weitergegeben. Häufige Werte sind hier deps und exports. Die Liste kann auch einen einzelnen String "*" enthalten, der an alle Abhängigkeiten eines Ziels weitergegeben wird.
attrs dict; or None; default = None
Wörterbuch, in dem alle Attribute des Aspekts deklariert werden Er ist einem Attributnamen einem Attributobjekt zugeordnet, z. B. „attr.label“ oder „attr.string“ (siehe attr-Modul). Facet-Attribute sind für die Implementierungsfunktion als Felder des Parameters ctx verfügbar.

Implizierte Attribute, die mit _ beginnen, müssen Standardwerte haben und den Typ label oder label_list haben.

Explizite Attribute müssen den Typ string haben und die Einschränkung values verwenden. Explizite Attribute beschränken den Aspekt darauf, nur mit Regeln verwendet zu werden, die Attribute mit demselben Namen, Typ und gültigen Werten gemäß der Einschränkung haben.

required_providers default = []
Dieses Attribut ermöglicht es dem Aspekt, die Weitergabe auf die Ziele zu beschränken, deren Regeln die erforderlichen Anbieter bewerben. Der Wert muss eine Liste sein, die entweder einzelne Anbieter oder eine Liste von Anbietern enthält, aber nicht beides. Beispielsweise ist [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] ein gültiger Wert, während [FooInfo, BarInfo, [BazInfo, QuxInfo]] ungültig ist.

Eine nicht verschachtelte Liste von Anbietern wird automatisch in eine Liste von Anbietern umgewandelt. Das bedeutet, dass [FooInfo, BarInfo] automatisch in [[FooInfo, BarInfo]] konvertiert wird.

Damit ein Ziel (z.B. some_rule) für einen Aspekt sichtbar ist, muss some_rule für alle Anbieter aus mindestens einer der erforderlichen Anbieterlisten werben. Wenn beispielsweise die required_providers eines Aspekts [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] sind, kann dieser Aspekt nur dann some_rule-Ziele sehen, wenn some_rule FooInfo *oder* BarInfo *oder* sowohl BazInfo als auch* QuxInfo enthält.

required_aspect_providers default = []
Dieses Attribut ermöglicht es diesem Aspekt, andere Aspekte zu prüfen. Der Wert muss eine Liste sein, die entweder einzelne Anbieter oder eine Liste von Anbietern enthält, aber nicht beides. Beispielsweise ist [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] ein gültiger Wert, während [FooInfo, BarInfo, [BazInfo, QuxInfo]] ungültig ist.

Eine nicht verschachtelte Liste von Anbietern wird automatisch in eine Liste von Anbietern umgewandelt. Das bedeutet, dass [FooInfo, BarInfo] automatisch in [[FooInfo, BarInfo]] konvertiert wird.

Wenn ein anderer Aspekt (z.B. other_aspect) für diesen Aspekt sichtbar sein soll, muss other_aspect alle Anbieter von mindestens einer der Listen bereitstellen. Im Beispiel von [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] kann dieser Aspekt nur dann other_aspect sehen, wenn other_aspect FooInfo *oder* BarInfo *oder* sowohl BazInfo als auch* QuxInfo enthält.

provides default = []
Eine Liste der Anbieter, die die Implementierungsfunktion zurückgeben muss.

Wenn die Implementierungsfunktion einen der hier aufgeführten Anbieter nicht mit ihrem Rückgabewert ausschließt, tritt ein Fehler auf. Die Implementierungsfunktion kann jedoch weitere Anbieter zurückgeben, die hier nicht aufgeführt sind.

Jedes Element der Liste ist ein *Info-Objekt, das von provider() zurückgegeben wird, mit der Ausnahme, dass ein Legacy-Anbieter stattdessen durch seinen Stringnamen dargestellt wird.

requires sequence of Aspects; default = []
Liste der Aspekte, die vor diesem Aspekt weitergegeben werden müssen
fragments sequence of strings; default = []
Liste der Namen von Konfigurationsfragmenten, die der Aspekt in der Zielkonfiguration erfordert.
host_fragments sequence of strings; default = []
Liste der Namen von Konfigurationsfragmenten, die der Aspekt in der Hostkonfiguration erfordert.
toolchains sequence; default = []
Wenn festgelegt, die Gruppe von Toolchains, die für diese Regel erforderlich sind. Die Liste kann String-, Label- oder StarlarkToolchainTypeApi-Objekte in einer beliebigen Kombination enthalten. Toolchains werden gefunden, indem die aktuelle Plattform geprüft und über ctx.toolchain für die Regelimplementierung bereitgestellt wird.
incompatible_use_toolchain_transition default = False
Veraltet, wird nicht mehr verwendet und sollte entfernt werden.
doc default = ''
Eine Beschreibung des Aspekts, der von Tools zur Dokumentationserstellung extrahiert werden kann.
apply_to_generating_rules default = False
Bei "true" wird der Aspekt bei Anwendung auf eine Ausgabedatei stattdessen auf die Generierungsregel der Ausgabedatei angewendet.

Angenommen, ein Aspekt wird propagiert durch das Attribut "deps" weitergegeben und auf das Ziel "alpha" angewendet. Angenommen, "alpha" hat "deps = [':beta_output']", wobei "beta_output" eine deklarierte Ausgabe eines Ziels "Beta" ist. Angenommen, "Beta" hat ein "charlie".

Standardmäßig „Falsch“.

exec_compatible_with sequence of strings; default = []
Eine Liste von Einschränkungen auf der Ausführungsplattform, die für alle Instanzen dieses Aspekts gelten.
exec_groups dict; or None; default = None
Dict of Execution Group name (string) to exec_groups. Wenn festgelegt, können Aspekte Aktionen auf mehreren Ausführungsplattformen innerhalb einer einzelnen Instanz ausführen. Weitere Informationen finden Sie in der Dokumentation zu Ausführungsgruppen.

Logo: bazel_dep

None bazel_dep(name, version='', repo_name='', dev_dependency=False)

Deklariert eine direkte Abhängigkeit von einem anderen Bazel-Modul.

Parameter

Parameter Beschreibung
name erforderlich
Der Name des Moduls, das als direkte Abhängigkeit hinzugefügt werden soll.
version default = ''
Die Version des Moduls, die als direkte Abhängigkeit hinzugefügt werden soll.
repo_name default = ''
Der Name des externen Repositorys, das diese Abhängigkeit darstellt. Dies ist standardmäßig der Name des Moduls.
dev_dependency default = False
Bei"true"wird diese Abhängigkeit ignoriert, wenn das aktuelle Modul nicht das Stammmodul ist oder --ignore_dev_dependency aktiviert ist.

bind

None bind(name, actual=None)

Warnung: Die Verwendung von bind() wird nicht empfohlen. Unter Bindung entfernen finden Sie eine ausführliche Beschreibung der Probleme und Alternativen.

Gibt einem Ziel einen Alias im Paket //external.

Parameter

Parameter Beschreibung
name erforderlich
Das Label unter '//external' als Aliasname
actual string; or None; default = None
Das tatsächliche Label, für das ein Alias erstellt werden soll

bool

bool bool(x=False)

Konstruktor für den booleschen Typ. Es wird False zurückgegeben, wenn das Objekt None, False, ein leerer String (""), die Zahl 0 oder eine leere Sammlung ist (z.B. (), []). Andernfalls wird True zurückgegeben.

Parameter

Parameter Beschreibung
x default = False
Die zu konvertierende Variable.

Konfigurationsfeld

LateBoundDefault configuration_field(fragment, name)

Bezieht sich auf einen lateingebundenen Standardwert für ein Attribut des Typs label. Ein Wert ist 'late-bound' wenn er vor dem Bestimmen des Werts erstellt werden muss. Alle Attribute, die dieses Attribut als Wert verwenden, müssen privat sein.

Nutzungsbeispiel:

Regelattribut definieren:

'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))

Zugriff in der Regelimplementierung:

  def _rule_impl(ctx):
    foo_info = ctx.attr._foo
    ...

Parameter

Parameter Beschreibung
fragment erforderlich
Der Name eines Konfigurationsfragments, das den Wert für die späte Grenze enthält.
name erforderlich
Der Name des Werts, der aus dem Konfigurationsfragment abgerufen werden soll.

Depset

depset depset(direct=None, order="default", *, transitive=None)

Erstellt eine depset. Der Parameter direct ist eine Liste von direkten Elementen der Depset-Datei. Der Parameter transitive ist eine Liste von Depsets, deren Elemente indirekte Elemente der erstellten Depset-Elemente werden. Die Reihenfolge, in der Elemente zurückgegeben werden, wenn die Konvertierung in eine Liste konvertiert wird, wird durch den Parameter order angegeben. Weitere Informationen finden Sie in der Übersicht zu Depsets.

Alle direkten oder indirekten Elemente einer Bindung müssen vom selben Typ sein, den Sie mit dem Ausdruck type(x) abrufen.

Da ein Hash-basiertes Set verwendet wird, um Duplikate während der Iteration zu vermeiden, sollten alle Elemente eines Depsets gehasht werden können. Diese Invarianten wird jedoch derzeit nicht in allen Konstruktoren einheitlich geprüft. Verwenden Sie das Flag „--incompatible_always_check_depset_elements“, um eine konsistente Prüfung zu ermöglichen. Dies wird in zukünftigen Releases standardmäßig festgelegt. Weitere Informationen finden Sie unter Problem 10313.

Außerdem müssen die Elemente derzeit unveränderlich sein, obwohl diese Einschränkung in Zukunft gelockert wird.

Die Reihenfolge der erstellten Gruppe muss mit der Reihenfolge ihrer transitive-Einstellungen kompatibel sein. "default" Bestellung ist mit allen anderen Bestellungen kompatibel, alle anderen Bestellungen sind nur mit sich selbst kompatibel.

Hinweis zur Abwärts- und Vorwärtskompatibilität. Diese Funktion akzeptiert derzeit den Positionsparameter items. Es ist veraltet und wird in Zukunft entfernt. Nach dem Entfernen wird direct zu einem einzigen Positionsparameter der Funktion depset. Die beiden folgenden Aufrufe sind daher gleichwertig und zukunftssicher:

depset(['a', 'b'], transitive = [...])
depset(direct = ['a', 'b'], transitive = [...])

Parameter

Parameter Beschreibung
direct sequence; or None; default = None
Eine Liste von direkten Elementen einer Trennlinie.
order default = "default"
Die Durchlaufstrategie für die neue Ressource. Die möglichen Werte finden Sie hier.
transitive sequence of depsets; or None; default = None
Eine Liste von Desets, deren Elemente zu indirekten Elementen des Desets werden.

Diktieren

dict dict(pairs=[], **kwargs)

Erstellt ein Wörterbuch aus einem optionalen Positionsargument und einem optionalen Satz von Keyword-Argumenten. Falls derselbe Schlüssel mehrmals zugewiesen wird, wird der letzte Wert verwendet. Einträge, die über Schlüsselwortargumente geliefert werden, gelten als Eingaben, die über das Positionsargument erfolgen.

Parameter

Parameter Beschreibung
pairs default = []
Ein Wörterbuch oder ein iterierbarer Wert, dessen Elemente jeweils die Länge 2 haben (Schlüssel, Wert).
kwargs erforderlich
Wörterbuch mit zusätzlichen Einträgen.

dir

list dir(x)

Gibt eine Liste von Strings zurück: die Namen der Attribute und Methoden des Parameterobjekts.

Parameter

Parameter Beschreibung
x erforderlich
Das zu prüfende Objekt.

Aufzählung

list enumerate(list, start=0)

Gibt eine Liste von Paaren (Zwei-Element-Tuple) mit dem Index (int) und dem Element aus der Eingabesequenz zurück.
enumerate([24, 21, 84]) == [(0, 24), (1, 21), (2, 84)]

Parameter

Parameter Beschreibung
list erforderliche
Eingabesequenz.
start default = 0
start index.

exec_group

exec_group exec_group(toolchains=[], exec_compatible_with=[], copy_from_rule=False)

Erstellt eine Ausführungsgruppe, mit der Aktionen während der Regelimplementierung für eine bestimmte Ausführungsplattform erstellt werden können.

Parameter

Parameter Beschreibung
toolchains sequence; default = []
Die Gruppe von Toolchains, die diese Ausführungsgruppe benötigt. Die Liste kann String-, Label- oder StarlarkToolchainTypeApi-Objekte in einer beliebigen Kombination enthalten.
exec_compatible_with sequence of strings; default = []
Eine Liste von Einschränkungen auf der Ausführungsplattform.
copy_from_rule default = False
Wird die Richtlinie auf „true“ gesetzt, übernimmt die Exekutive-Gruppe die Toolchains und Einschränkungen der Regel, mit der diese Gruppe verknüpft ist. Wenn Sie einen anderen String festlegen, wird ein Fehler ausgegeben.

Nicht bestanden

None fail(msg=None, attr=None, *args)

Bei der Ausführung tritt ein Fehler auf.

Parameter

Parameter Beschreibung
msg default = None
Eingestellt: Verwenden Sie stattdessen positionsbezogene Argumente. Dieses Argument fungiert als implizites führendes Positionsargument.
attr string; or None; default = None
Veraltet. Ein optionales Präfix mit diesem String wird der Fehlermeldung hinzugefügt.
args erforderlich
Eine Liste von Werten, formatiert mit str und mit Leerzeichen, die in der Fehlermeldung enthalten sind.

float

float float(x=unbound)

Gibt x als Gleitkommazahl zurück.
  • Wenn x bereits eine Gleitkommazahl ist, wird sie von float unverändert zurückgegeben.
  • Wenn x ein boolescher Wert ist, gibt float 1,0 für True und 0,0 für False zurück.
  • Wenn x eine Ganzzahl ist, gibt float den nächsten endlichen Gleitkommawert auf x oder einen Fehler zurück, wenn die Größe zu groß ist.
  • Wenn x ein String ist, muss es ein gültiges Gleitkommaliteral sein oder gleich NaN sein, Inf oder Infinity, wobei optional ein +- oder --Zeichen vorangestellt wird.
Jeder andere Wert verursacht einen Fehler. Ohne Argument gibt float() 0.0 zurück.

Parameter

Parameter Beschreibung
x default = unbound
Der Wert, der konvertiert werden soll.

Getattr

unknown getattr(x, name, default=unbound)

Gibt das Struct-Feld des angegebenen Namens zurück, sofern vorhanden. Wenn nicht, wird entweder default zurückgegeben (falls angegeben) oder ein Fehler ausgelöst. getattr(x, "foobar") entspricht x.foobar.
getattr(ctx.attr, "myattr")
getattr(ctx.attr, "myattr", "mydefault")

Parameter

Parameter Beschreibung
x erforderlich
Die Struktur, auf deren Attribut zugegriffen wird.
name erforderlich
Der Name des Struct-Attributs.
default default = unbound
Der Standardwert, der zurückgegeben wird, falls die Struktur kein Attribut des angegebenen Namens hat.

Git_Überschreiben

None git_override(module_name, remote, commit='', patches=[], patch_strip=0)

Gibt an, dass eine Abhängigkeit von einem bestimmten Commit eines Git-Repositorys stammen soll. Diese Anweisung kann nur vom Stammmodul verwendet werden. Wenn also ein Modul Überschreibungen angibt, kann es von anderen nicht als Abhängigkeit verwendet werden.

Parameter

Parameter Beschreibung
module_name erforderlich
Der Name der Bazel-Modulabhängigkeit, auf die diese Überschreibung angewendet werden soll.
remote erforderlich
Die URL des Remote-Git-Repositorys.
commit default = ''
Das Commit, das ausgecheckt werden soll.
patches Iterable of strings; default = []
Eine Liste von Labels, die auf Patch-Dateien verweisen, die für dieses Modul angewendet werden sollen. Die Patchdateien müssen in der Quellstruktur des Projekts auf oberster Ebene vorhanden sein. Sie werden in der Reihenfolge der Liste angewendet.
patch_strip default = 0
Identisch mit dem Argument „--strip“ des Unix-Patches.

Hasattr

bool hasattr(x, name)

Gibt „True“ zurück, wenn das Objekt x ein Attribut oder eine Methode der angegebenen name hat. Andernfalls ist es „False“. Beispiel:
hasattr(ctx.attr, "myattr")

Parameter

Parameter Beschreibung
x erforderlich
Das zu prüfende Objekt.
name erforderlich
Der Name des Attributs.

hash

int hash(value)

Gibt einen Hashwert für einen String zurück. Dies wird deterministisch anhand desselben Algorithmus berechnet wie String.hashCode() von Java, nämlich:
s[0] * (31^(n-1)) + s[1] * (31^(n-2)) + ... + s[n-1]
Hashing von Werten außer Strings wird derzeit nicht unterstützt.

Parameter

Parameter Beschreibung
value erforderlich
Stringwert, der gehasht werden soll.

int

int int(x, base=unbound)

Gibt x als Ganzzahlwert zurück.
  • Wenn x bereits eine Ganzzahl ist, gibt int sie unverändert zurück.
  • Wenn x ein boolescher Wert ist, gibt int 1 für True und 0 für False zurück.
  • Wenn x ein String ist, muss er das Format <sign><prefix><digits> haben. <sign> ist entweder "+", "-" oder leer (wird als positiv interpretiert). <digits> ist eine Ziffernfolge von 0 bis base bis 1, wobei die Buchstaben a–z (oder gleichwertig A–Z) als Ziffern für 10–35 verwendet werden. Wenn base 2/8/16 ist, ist <prefix> optional und kann 0b/0o/0x (oder entsprechend 0B/0O/0X) sein. Wenn base ein anderer Wert außer diesen Basiswerten oder der Sonderwert 0 ist, muss das Präfix leer sein. Wenn base 0 ist, wird der String als Ganzzahlliteral interpretiert, d. h., eine der Basen 2/8/10/16 wird ausgewählt, je nachdem, welches Präfix verwendet wird. Wenn base 0 ist, wird kein Präfix verwendet und mehr als eine Ziffer ist, darf die führende Ziffer nicht 0 sein. So wird Verwechslungen zwischen Oktal- und Dezimalzahlen vermieden. Die Stärke der durch den String dargestellten Zahl muss innerhalb des zulässigen Bereichs für den Ganzzahltyp liegen.
  • Wenn x eine Gleitkommazahl ist, gibt int den ganzzahligen Wert der Gleitkommazahl zurück, gerundet in Richtung Null. Wenn x nicht endlich ist (NaN oder unendlich), tritt ein Fehler auf.
Diese Funktion schlägt fehl, wenn x einen anderen Typ hat oder der Wert ein String ist, der das obige Format nicht erfüllt. Im Gegensatz zur Funktion int von Python sind bei dieser Funktion keine Argumente mit Null zulässig. Außerdem sind keine überflüssigen Leerzeichen für String-Argumente zulässig.

Beispiele:

int("123") == 123
int("-123") == -123
int("+123") == 123
int("FF", 16) == 255
int("0xFF", 16) == 255
int("10", 0) == 10
int("-0x10", 0) == -16
int("-0x10", 0) == -16
int("123.456") == 123

Parameter

Parameter Beschreibung
x erforderlich
Der String, der konvertiert werden soll.
base default = unbound
Die Basis, die zur Interpretation eines Stringwerts verwendet wird. Der Standardwert ist 10. Muss zwischen 2 und 36 (einschließlich) oder 0 liegen, um die Basis zu erkennen, als wäre x ein Ganzzahlliteral. Dieser Parameter darf nicht angegeben werden, wenn der Wert kein String ist.

Länge

int len(x)

Gibt die Länge eines Strings, einer Sequenz (z. B. einer Liste oder eines Semikolons), eines Wörterbuchs oder eines anderen iterierbaren Werts zurück.

Parameter

Parameter Beschreibung
x erforderlich
Der Wert, dessen Länge in den Bericht aufgenommen werden soll.

list

list list(x=[])

Gibt eine neue Liste mit denselben Elementen wie dem angegebenen iterierbaren Wert zurück.
list([1, 2]) == [1, 2]
list((2, 3, 2)) == [2, 3, 2]
list({5: "a", 2: "b", 4: "c"}) == [5, 2, 4]

Parameter

Parameter Beschreibung
x default = []
Das zu konvertierende Objekt.

Lokaler_Pfad_überschreiben

None local_path_override(module_name, path)

Gibt an, dass eine Abhängigkeit aus einem bestimmten Verzeichnis auf dem lokalen Laufwerk stammen soll. Diese Anweisung kann nur vom Stammmodul verwendet werden. Wenn also ein Modul Überschreibungen angibt, kann es von anderen nicht als Abhängigkeit verwendet werden.

Parameter

Parameter Beschreibung
module_name erforderlich
Der Name der Bazel-Modulabhängigkeit, auf die diese Überschreibung angewendet werden soll.
path erforderlich
Der Pfad zum Verzeichnis, in dem sich dieses Modul befindet.

max

unknown max(*args)

Gibt das größte der angegebenen Argumente zurück. Wenn nur ein Argument angegeben wird, darf es nicht leer iterierbar sein. Ein Fehler tritt auf, wenn Elemente nicht vergleichbar sind (z. B. „int“ mit String) oder wenn keine Argumente angegeben sind.
max(2, 5, 4) == 5
max([5, 6, 3]) == 6

Parameter

Parameter Beschreibung
args erforderlich
Die zu prüfenden Elemente.

Min.

unknown min(*args)

Gibt das kleinste der angegebenen Argumente zurück. Wenn nur ein Argument angegeben ist, darf es nicht leer sein. Wenn Elemente nicht vergleichbar sind (z. B. mit String) oder wenn keine Argumente angegeben sind, tritt ein Fehler auf.
min(2, 5, 4) == 2
min([5, 6, 3]) == 3

Parameter

Parameter Beschreibung
args erforderlich
Die zu prüfenden Elemente.

module

None module(name='', version='', compatibility_level=0, execution_platforms_to_register=[], toolchains_to_register=[])

Deklariert bestimmte Eigenschaften des Bazel-Moduls, die durch das aktuelle Bazel-Repository dargestellt werden. Diese Eigenschaften sind entweder wichtige Metadaten des Moduls (wie Name und Version) oder beeinflussen das Verhalten des aktuellen Moduls und dessen Abhängigkeiten.

Es sollte höchstens einmal aufgerufen werden. Er kann nur weggelassen werden, wenn dieses Modul das Stammmodul ist (z. B. wenn es nicht von einem anderen Modul benötigt wird).

Parameter

Parameter Beschreibung
name default = ''
Der Name des Moduls. Kann nur weggelassen werden, wenn dieses Modul das Stammmodul ist (z. B. wenn es nicht von einem anderen Modul benötigt wird). Ein gültiger Modulname muss 1) nur Kleinbuchstaben (a–z), Ziffern (0–9), Punkte (.), Bindestriche (-) und Unterstriche (_) enthalten, 2) mit einem Kleinbuchstaben beginnen und 3) mit einem Kleinbuchstaben oder einer Ziffer enden.
version default = ''
Die Version des Moduls. Kann nur weggelassen werden, wenn dieses Modul das Stammmodul ist (z. B. wenn es nicht von einem anderen Modul benötigt wird).
compatibility_level default = 0
Die Kompatibilitätsstufe des Moduls. Sie sollte jedes Mal geändert werden, wenn eine größere inkompatible Änderung vorgenommen wird. Dies ist im Wesentlichen die Hauptversion des Moduls in Bezug auf SemVer, mit der Ausnahme, dass es nicht in den Versionsstring selbst eingebettet ist, sondern als separates Feld vorhanden ist. Module mit unterschiedlichen Kompatibilitätsgraden berücksichtigen die Versionsauflösung so, als ob sie Module mit unterschiedlichen Namen haben, aber das endgültige Abhängigkeitsdiagramm kann nicht mehrere Module mit demselben Namen, aber unterschiedlichen Kompatibilitätsgraden enthalten (es sei denn, multiple_version_override ist wirksam, siehe dort für weitere Details).
execution_platforms_to_register Iterable of strings; default = []
Eine Liste der bereits definierten Ausführungsplattformen, die registriert werden sollen, wenn dieses Modul ausgewählt ist. Muss eine Liste absoluter Zielmuster sein, d. h., die mit @ oder // beginnen. Weitere Informationen finden Sie unter Toolchain-Auflösung.
toolchains_to_register Iterable of strings; default = []
Eine Liste der bereits definierten Toolchains, die registriert werden soll, wenn dieses Modul ausgewählt wird. Muss eine Liste absoluter Zielmuster sein, d. h., die mit @ oder // beginnen. Weitere Informationen finden Sie unter Toolchain-Auflösung.

Modulerweiterung

unknown module_extension(implementation, *, tag_classes={}, doc='')

Erstellt eine neue Modulerweiterung. Speichern Sie ihn in einem globalen Wert, damit er exportiert und in einer MODULE.bazel-Datei verwendet werden kann.

Parameter

Parameter Beschreibung
implementation erforderlich
Die Funktion, die diese Modulerweiterung implementiert. Es muss ein einzelner Parameter verwendet werden: module_ctx. Die Funktion wird einmal zu Beginn eines Builds aufgerufen, um die verfügbaren Repositories zu ermitteln.
tag_classes default = {}
Wörterbuch, in dem alle von der Erweiterung verwendeten Tag-Klassen deklariert werden. Er wird vom Namen der Tag-Klasse einem tag_class-Objekt zugeordnet.
doc default = ''
Eine Beschreibung der Modulerweiterung, die von Tools zur Dokumentationserstellung extrahiert werden kann.

Multiple_Version_Überschreiben

None multiple_version_override(module_name, versions, registry='')

Gibt an, dass eine Abhängigkeit weiterhin aus einer Registry stammen sollte, aber mehrere Versionen davon gleichzeitig gleichzeitig vorhanden sein dürfen. Diese Anweisung kann nur vom Stammmodul verwendet werden. Wenn also ein Modul Überschreibungen angibt, kann es von anderen nicht als Abhängigkeit verwendet werden.

Parameter

Parameter Beschreibung
module_name erforderlich
Der Name der Bazel-Modulabhängigkeit, auf die diese Überschreibung angewendet werden soll.
versions Iterable of strings; erforderlich
Gibt explizit die Versionen an, die gleichzeitig vorhanden sein dürfen. Diese Versionen müssen bereits in der Vorauswahl der Abhängigkeitsgrafik vorhanden sein. Abhängigkeiten dieses Moduls werden auf die nächste höhere zulässige Version auf der gleichen Kompatibilitätsstufe aktualisiert, während Abhängigkeiten, die eine höhere Version als zulässige Versionen auf derselben Kompatibilitätsstufe haben, einen Fehler verursachen.
registry default = ''
Überschreibt die Registry für dieses Modul. Statt dieses Modul aus der Standardliste von Registries zu finden, sollte die angegebene Registry verwendet werden.

Print

None print(sep=" ", *args)

Gibt args als Debug-Ausgabe aus. ihm wird der String "DEBUG" und der Ort (Datei und Zeilennummer) dieses Anrufs vorangestellt. Die genaue Art und Weise, wie die Argumente in Strings konvertiert werden, ist nicht angegeben und kann sich jederzeit ändern. Sie kann sich von der Formatierung von str() und repr() unterscheiden.

Von der Verwendung von print im Produktionscode wird abgeraten, da es Spam für Nutzer erzeugt. Verwenden Sie für die Einstellung nach Möglichkeit einen harten Fehler mit fail().

Parameter

Parameter Beschreibung
sep default = " "
Der Trennzeichenstring zwischen den Objekten, der Standardwert ist ein Leerzeichen (" ").
args erforderlich
Die zu druckenden Objekte.

Anbieter

unknown provider(doc='', *, fields=None, init=None)

Definiert ein Anbietersymbol. Der Anbieter kann durch Aufrufen aufgerufen oder direkt als Schlüssel zum Abrufen einer Instanz dieses Anbieters von einem Ziel verwendet werden. Beispiel:
MyInfo = provider()
...
def _my_library_impl(ctx):
    ...
    my_info = MyInfo(x = 2, y = 3)
    # my_info.x == 2
    # my_info.y == 3
    ...

Einen umfassenden Leitfaden zur Verwendung von Anbietern finden Sie unter Regeln (Anbieter).

Gibt einen aufrufbaren Wert für Provider zurück, wenn init nicht angegeben ist.

Wenn init angegeben ist, wird ein Semikolon aus zwei Elementen zurückgegeben: ein aufrufbarer Wert von Provider und ein aufrufbarer Wert von Raw-Konstruktor. Weitere Informationen finden Sie unten im Abschnitt Regeln (benutzerdefinierte Initialisierung benutzerdefinierter Anbieter) und im init-Parameter.

Parameter

Parameter Beschreibung
doc default = ''
Eine Beschreibung des Anbieters, die durch Tools zur Dokumentationserstellung extrahiert werden kann.
fields sequence of strings; or dict; or None; default = None
Wenn festgelegt, werden die zulässigen Felder eingeschränkt.
Mögliche Werte:
  • Liste der Felder:
    provider(fields = ['a', 'b'])

  • Feldname des Wörterbuchs -> Dokumentation:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
Alle Felder sind optional.
init callable; or None; default = None
Optionaler Callback für die Vorverarbeitung und Validierung der Feldwerte des Anbieters während der Instanziierung. Wenn init angegeben ist, gibt provider() ein Semikolon aus zwei Elementen zurück: das normale Anbietersymbol und einen Rohkonstruktor.

Es folgt eine genaue Beschreibung. Unter Regeln (Benutzerdefinierte Initialisierung von Anbietern) finden Sie hilfreiche Informationen und Anwendungsfälle.

Lassen Sie P zum Anbietersymbol, das durch Aufrufen von provider() erstellt wird. Konzeptuell wird eine Instanz von P generiert, indem eine Standardkonstruktorfunktion c(*args, **kwargs) aufgerufen wird, die Folgendes tut:

  • Wenn args nicht leer ist, tritt ein Fehler auf.
  • Wenn der Parameter fields beim Aufruf von provider() angegeben wurde und kwargs einen Schlüssel enthält, der nicht in fields aufgeführt ist, tritt ein Fehler auf.
  • Andernfalls gibt c eine neue Instanz zurück, die für jeden k: v-Eintrag in kwargs ein Feld namens k mit dem Wert v enthält.
Wenn ein init-Callback nicht angegeben wird, fungiert ein Aufruf an das Symbol P selbst als Aufruf der Standardkonstruktorfunktion c. Mit anderen Worten: P(*args, **kwargs) gibt c(*args, **kwargs) zurück. Beispielsweise wird
MyInfo = provider()
m = MyInfo(foo = 1)
das Ganze so einfach machen, dass m eine MyInfo-Instanz mit m.foo == 1 ist.

Falls jedoch init angegeben ist, führt der Aufruf P(*args, **kwargs) stattdessen die folgenden Schritte aus:

  1. Der Callback wird als init(*args, **kwargs) aufgerufen, d. h. mit denselben Positions- und Keyword-Argumenten, die an P übergeben wurden.
  2. Der Rückgabewert von init muss ein Wörterbuch sein, d, dessen Schlüssel Feldnamen-Strings sind. Ist dies nicht der Fall, tritt ein Fehler auf.
  3. Eine neue P-Instanz wird generiert, als würde der Standardkonstruktor mit Einträgen von d als Keyword-Argumente aufgerufen werden, z. B. c(**d).

Hinweis: Die obigen Schritte deuten darauf hin, dass ein Fehler auftritt, wenn *args oder **kwargs nicht mit der Signatur von init übereinstimmt, die Auswertung des Textes von init fehlschlägt (vielleicht durch einen Aufruf an fail()) oder wenn der Rückgabewert von init kein Wörterbuch mit dem erwarteten Schema ist.

Auf diese Weise erfolgt beim init-Callback die allgemeine Konstruktion von Anbietern, da Positionsargumente und eine beliebige Logik zur Vorverarbeitung und Validierung zulässig sind. Sie ermöglicht nicht das Umgehen der Liste zulässiger fields.

Wenn init angegeben ist, wird der Rückgabewert von provider() zu einem Duplikat von (P, r), wobei r der Rohkonstruktor ist. Das Verhalten von r entspricht genau der oben beschriebenen Standardkonstruktorfunktion c. In der Regel ist r an eine Variable gebunden, deren Name ein Unterstrich vorangestellt ist, sodass nur die aktuelle .bzl-Datei direkten Zugriff darauf hat:

MyInfo, _new_myinfo = provider(init = ...)

Bereich

sequence range(start_or_stop, stop_or_none=None, step=1)

Erstellt eine Liste mit Elementen vom start bis zum stop in Schritten von step. Wenn ein einzelnes Argument angegeben wird, reichen die Elemente von 0 bis zu diesem Element.
range(4) == [0, 1, 2, 3]
range(3, 9, 2) == [3, 5, 7]
range(3, 0, -1) == [3, 2, 1]

Parameter

Parameter Beschreibung
start_or_stop erforderlich
Wert des Startelements, falls angegeben, sonst Wert der Haltestelle und der tatsächliche Startwert ist 0
stop_or_none int; or None; default = None
optionaler Index des ersten Elements, das nicht in der Ergebnisliste enthalten ist; die Erstellung der Liste endet, bevor stop erreicht wird
step default = 1
Das Inkrement (Standard ist 1). Er kann negativ sein.

register_execution_platforms()

None register_execution_platforms(*platform_labels)

Registrieren Sie eine bereits definierte Plattform, damit Bazel sie als Ausführungsplattform während der Toolchain-Auflösung verwenden kann.

Parameter

Parameter Beschreibung
platform_labels sequence of strings; erforderlich
Die Labels der zu registrierenden Plattformen.

register_execution_platforms()

None register_execution_platforms(*platform_labels)

Gibt bereits definierte Ausführungsplattformen an, die registriert werden sollen, wenn dieses Modul ausgewählt ist. Sollte absolute Zielmuster sein (d. h., die entweder mit @ oder // beginnen). Weitere Informationen finden Sie unter Toolchain-Auflösung.

Parameter

Parameter Beschreibung
platform_labels sequence of strings; erforderlich
Die Labels der zu registrierenden Plattformen.

Kassentoolchains()

None register_toolchains(*toolchain_labels)

Registrieren Sie eine bereits definierte Toolchain, damit Bazel sie bei der Toolchain-Auflösung verwenden kann. Beispiele für die Definition und Registrierung von Toolchains

Parameter

Parameter Beschreibung
toolchain_labels sequence of strings; erforderlich
Die Labels der zu registrierenden Toolchains.

Kassentoolchains()

None register_toolchains(*toolchain_labels)

Gibt bereits definierte Toolchains an, die registriert werden sollen, wenn dieses Modul ausgewählt wird. Sollte absolute Zielmuster sein (d. h., die entweder mit @ oder // beginnen). Weitere Informationen finden Sie unter Toolchain-Auflösung.

Parameter

Parameter Beschreibung
toolchain_labels sequence of strings; erforderlich
Die Labels der zu registrierenden Toolchains.

Repository_rule(Implementierung, attrs, local, environ, configure, remotable, doc)

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')

Erstellt eine neue Repository-Regel. Speichern Sie die Datei in einem globalen Wert, damit sie aus der WORKSPACE-Datei geladen und aufgerufen werden kann.

Parameter

Parameter Beschreibung
implementation ist die
Funktion, die diese Regel implementiert. Es muss ein einzelner Parameter vorhanden sein: repository_ctx. Die Funktion wird während der Ladephase für jede Instanz der Regel aufgerufen.
attrs dict; or None; default = None
Wörterbuch, um alle Attribute der Regel zu deklarieren. Er ist einem Attributnamen einem Attributobjekt zugeordnet (siehe attr-Modul). Attribute, die mit _ beginnen, sind privat und können verwendet werden, um einer Datei eine implizite Abhängigkeit von einem Label hinzuzufügen. Eine Repository-Regel kann nicht von einem generierten Artefakt abhängen. Das Attribut name wird implizit hinzugefügt und darf nicht angegeben werden.
local default = False
Gibt an, dass diese Regel alles aus dem lokalen System abruft und bei jedem Abruf neu bewertet werden soll.
environ sequence of strings; default = []
Stellt eine Liste der Umgebungsvariablen bereit, von der diese Repository-Regel abhängt. Wenn sich eine Umgebungsvariable in dieser Liste ändert, wird das Repository noch einmal abgerufen.
configure default = False
Gibt an, dass das Repository das System zur Konfiguration untersucht
remotable default = False
Experimentell. Dieser Parameter ist experimentell und kann sich jederzeit ändern. Verlassen Sie sich nicht darauf. Die Funktion kann auf experimenteller Basis aktiviert werden, indem die Einstellung ---experimental_repo_remote_exec
Kompatibel mit der Remote-Ausführung festgelegt wird
doc default = ''
Eine Beschreibung der Repository-Regel, die von Tools zur Dokumentationserstellung extrahiert werden kann.

Repository_rule(Implementierung, attrs, local, environ, configure, remotable, doc)

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')

Erstellt eine neue Repository-Regel. Speichern Sie die Datei in einem globalen Wert, damit sie aus der WORKSPACE-Datei geladen und aufgerufen werden kann.

Parameter

Parameter Beschreibung
implementation ist die
Funktion, die diese Regel implementiert. Es muss ein einzelner Parameter vorhanden sein: repository_ctx. Die Funktion wird während der Ladephase für jede Instanz der Regel aufgerufen.
attrs dict; or None; default = None
Wörterbuch, um alle Attribute der Regel zu deklarieren. Er ist einem Attributnamen einem Attributobjekt zugeordnet (siehe attr-Modul). Attribute, die mit _ beginnen, sind privat und können verwendet werden, um einer Datei eine implizite Abhängigkeit von einem Label hinzuzufügen. Eine Repository-Regel kann nicht von einem generierten Artefakt abhängen. Das Attribut name wird implizit hinzugefügt und darf nicht angegeben werden.
local default = False
Gibt an, dass diese Regel alles aus dem lokalen System abruft und bei jedem Abruf neu bewertet werden soll.
environ sequence of strings; default = []
Stellt eine Liste der Umgebungsvariablen bereit, von der diese Repository-Regel abhängt. Wenn sich eine Umgebungsvariable in dieser Liste ändert, wird das Repository noch einmal abgerufen.
configure default = False
Gibt an, dass das Repository das System zur Konfiguration untersucht
remotable default = False
Experimentell. Dieser Parameter ist experimentell und kann sich jederzeit ändern. Verlassen Sie sich nicht darauf. Die Funktion kann auf experimenteller Basis aktiviert werden, indem die Einstellung ---experimental_repo_remote_exec
Kompatibel mit der Remote-Ausführung festgelegt wird
doc default = ''
Eine Beschreibung der Repository-Regel, die von Tools zur Dokumentationserstellung extrahiert werden kann.

Rep.

string repr(x)

Wandelt jedes Objekt in eine Stringdarstellung um. Dies ist nützlich für die Fehlerbehebung.
repr("ab") == '"ab"'

Parameter

Parameter Beschreibung
x erforderlich
Das Objekt, das konvertiert werden soll.

reversed

list reversed(sequence)

Gibt eine neue, nicht fixierte Liste zurück, die die Elemente der ursprünglichen iterierbaren Sequenz in umgekehrter Reihenfolge enthält.
reversed([3, 5, 4]) == [4, 5, 3]

Parameter

Parameter Beschreibung
sequence erforderlich
Die iterierbare Sequenz (z.B. Liste), die rückgängig gemacht werden soll.

rule

callable rule(implementation, test=False, attrs=None, outputs=None, executable=False, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, compile_one_filetype=None, name=None)

Erstellt eine neue Regel, die aus einer BUILD-Datei oder einem Makro aufgerufen werden kann, um Ziele zu erstellen.

Regeln müssen globalen Variablen in einer BZL-Datei zugewiesen werden .Der Name der globalen Variablen entspricht dem Namen der Regel.

Testregeln müssen einen Namen haben, der auf _test endet. Alle anderen Regeln dürfen dieses Suffix nicht haben. Diese Einschränkung gilt nur für Regeln, nicht für deren Ziele.

Parameter

Parameter Beschreibung
implementation erforderlich
Die Starlark-Funktion, durch die diese Regel implementiert wird, muss genau einen Parameter haben: ctx. Die Funktion wird während der Analysephase für jede Instanz der Regel aufgerufen. Es kann auf die vom Nutzer bereitgestellten Attribute zugreifen. Sie muss Aktionen erstellen, um alle deklarierten Ausgaben zu generieren.
test default = False
Gibt an, ob diese Regel eine Testregel ist, d. h., ob sie einem blaze test-Befehl zugewiesen werden kann. Alle Testregeln gelten automatisch als ausführbar. Es ist daher nicht nötig und wird davon abgeraten, executable = True explizit für eine Testregel festzulegen. Weitere Informationen finden Sie auf der Seite Regeln.
attrs dict; or None; default = None
Wörterbuch, um alle Attribute der Regel zu deklarieren. Er ist einem Attributnamen einem Attributobjekt zugeordnet (siehe attr-Modul). Attribute, die mit _ beginnen, sind privat und können verwendet werden, um eine implizite Abhängigkeit von einem Label hinzuzufügen. Das Attribut name wird implizit hinzugefügt und darf nicht angegeben werden. Die Attribute visibility, deprecation, tags, testonly und features werden implizit hinzugefügt und können nicht überschrieben werden. Die meisten Regeln erfordern nur eine Handvoll Attribute. Zur Begrenzung der Arbeitsspeichernutzung wird durch die Regelfunktion eine Obergrenze für die Größe von Attributen festgelegt.
outputs dict; or None; or function; default = None
Eingestellt. Dieser Parameter ist veraltet und wird bald entfernt. Verlassen Sie sich nicht darauf. Sie ist mit ---incompatible_no_rule_outputs_param deaktiviert. Verwenden Sie dieses Flag, um zu bestätigen, dass Ihr Code mit seiner unmittelbaren Entfernung kompatibel ist.
Dieser Parameter wurde eingestellt. Migrieren Sie die Regeln, um stattdessen OutputGroupInfo oder attr.output zu verwenden.

Ein Schema zum Definieren vordefinierter Ausgaben. Im Gegensatz zu den Attributen output und output_list gibt der Nutzer keine Labels für diese Dateien an. Weitere Informationen zu vorab deklarierten Ausgaben finden Sie auf der Seite Regeln.

Der Wert dieses Arguments ist entweder ein Wörterbuch oder eine Callback-Funktion, die ein Wörterbuch erzeugt. Der Callback funktioniert ähnlich wie berechnete Abhängigkeitsattribute: Die Parameternamen der Funktion werden mit den Attributen der Regel abgeglichen. Wenn Sie beispielsweise outputs = _my_func mit der Definition def _my_func(srcs, deps): ... übergeben, hat die Funktion Zugriff auf die Attribute srcs und deps. Unabhängig davon, ob das Wörterbuch direkt oder über eine Funktion angegeben wird, wird es folgendermaßen interpretiert.

Jeder Eintrag im Wörterbuch erstellt eine vordefinierte Ausgabe, wobei der Schlüssel eine Kennung und der Wert eine Stringvorlage ist, die das Label der Ausgabe bestimmt. In der Implementierungsfunktion der Regel wird die Kennung zum Feldnamen, der für den Zugriff auf die Ausgabe File in ctx.outputs verwendet wird. Das Label der Ausgabe enthält dasselbe Paket wie die Regel und der Teil nach der Erstellung des Pakets. Dabei wird jeder Platzhalter im Format "%{ATTR}" durch einen String ersetzt, der aus dem Wert des Attributs ATTR besteht:

  • Attribute vom Typ „String“ werden wortwörtlich ersetzt.
  • Attribute des Typs „Label“ werden nach dem Paket Teil des Labels ohne die Dateiendung. Das Label "//pkg:a/b.c" wird beispielsweise zu "a/b".
  • Ausgabetypische Attribute werden nach dem Paket in das Label eingefügt, einschließlich der Dateiendung (im Beispiel oben "a/b.c").
  • Alle in Platzhaltern verwendeten Attribute (z. B. attr.label_list) müssen genau ein Element haben. Die Conversion ist dieselbe wie die nicht in der Liste enthaltene Version (attr.label).
  • Andere Attributtypen sind möglicherweise nicht in Platzhaltern enthalten.
  • Die speziellen Platzhalter %{dirname} und %{basename} für das Nicht-Attribut werden auf diese Teile des Labels der Regel erweitert. Das Paket ist dabei vollständig. In "//pkg:a/b.c" lautet der Name beispielsweise a und der Basisname b.c.

In der Praxis ist der gängigste Ersatzplatzhalter "%{name}". Für ein Ziel mit dem Namen "foo" gibt die Ausgaben beispielsweise {"bin": "%{name}.exe"} eine Ausgabe namens foo.exe vor, die in der Implementierungsfunktion als ctx.outputs.bin zugänglich ist.

executable default = False
Gibt an, ob diese Regel als ausführbar gilt, d. h., sie möglicherweise einem blaze run-Befehl unterliegt. Weitere Informationen finden Sie auf der Seite Regeln.
output_to_genfiles default = False
Bei"true"werden die Dateien im Verzeichnis genfiles und nicht im bin-Verzeichnis generiert. Verwenden Sie dieses Flag nicht, es sei denn, Sie benötigen es für die Kompatibilität mit bestehenden Regeln (z.B. beim Generieren von Header-Dateien für C++).
fragments sequence of strings; default = []
Liste der Namen von Konfigurationsfragmenten, die die Regel in der Zielkonfiguration benötigt.
host_fragments sequence of strings; default = []
Liste der Namen von Konfigurationsfragmenten, die die Regel in der Hostkonfiguration erfordert.
_skylark_testable default = False
(Experimentell)

Wenn der Wert „true“ ist, werden die Aktionen dieser Regel für die Prüfung durch Regeln verfügbar gemacht, die von einem Aktionen-Anbieter abhängig sind. Der Anbieter steht der Regel auch über ctx.built_actions() zur Verfügung.

Dieser Wert sollte nur verwendet werden, um das Analysezeitverhalten von Starlark-Regeln zu testen. Dieses Flag wird möglicherweise in Zukunft entfernt.
toolchains sequence; default = []
Wenn festgelegt, die Gruppe von Toolchains, die für diese Regel erforderlich sind. Die Liste kann String-, Label- oder StarlarkToolchainTypeApi-Objekte in einer beliebigen Kombination enthalten. Toolchains werden gefunden, indem die aktuelle Plattform geprüft und über ctx.toolchain für die Regelimplementierung bereitgestellt wird.
incompatible_use_toolchain_transition default = False
Veraltet, wird nicht mehr verwendet und sollte entfernt werden.
doc default = ''
Eine Beschreibung der Regel, die von Tools zur Dokumentationserstellung extrahiert werden kann.
provides default = []
Eine Liste der Anbieter, die die Implementierungsfunktion zurückgeben muss.

Wenn die Implementierungsfunktion einen der hier aufgeführten Anbieter nicht mit ihrem Rückgabewert ausschließt, tritt ein Fehler auf. Die Implementierungsfunktion kann jedoch weitere Anbieter zurückgeben, die hier nicht aufgeführt sind.

Jedes Element der Liste ist ein *Info-Objekt, das von provider() zurückgegeben wird, mit der Ausnahme, dass ein Legacy-Anbieter stattdessen durch seinen Stringnamen dargestellt wird.

exec_compatible_with sequence of strings; default = []
Eine Liste von Einschränkungen auf der Ausführungsplattform, die für alle Ziele dieses Regeltyps gelten.
analysis_test default = False
Bei "true" wird diese Regel als Analysetest behandelt.

Hinweis: Analysetestregeln werden hauptsächlich mithilfe der Infrastruktur definiert, die in den Starlark-Bibliotheken bereitgestellt wird. Weitere Informationen finden Sie unter Tests.

Wenn eine Regel als Analysetestregel definiert ist, kann sie Konfigurationsübergänge verwenden, die mit analysis_test_transition für ihre Attribute definiert wurden, aber einige Einschränkungen sind aktiviert:

  • Die Ziele dieser Regel sind in der Anzahl der temporären Abhängigkeiten begrenzt.
  • Die Regel gilt als Testregel, als wäre test=True festgelegt. Dies hat Vorrang vor dem Wert von test
  • Die Funktion zur Regelimplementierung darf keine Aktionen registrieren. Stattdessen müssen Sie über AnalysisTestResultInfo eine Prüfung bestehen bzw. nicht bestehen.
build_setting BuildSetting; or None; default = None
Wenn diese Richtlinie konfiguriert ist, wird build setting für diese Regel erklärt. Weitere Informationen finden Sie im Modul config. Wenn dieses Attribut festgelegt ist, wird dieser Regel automatisch ein obligatorisches Attribut namens "build_setting_default" hinzugefügt, dessen Typ dem hier übergebenen Wert entspricht.
cfg default = None
Wenn diese Option festgelegt ist, verweist sie auf den Konfigurationsübergang, bevor die Regel auf ihre eigene Konfiguration angewendet wird.
exec_groups dict; or None; default = None
Dict of Execution Group name (string) to exec_groups. Wenn festgelegt, können Regeln Aktionen auf mehreren Ausführungsplattformen innerhalb eines einzelnen Ziels ausführen. Weitere Informationen finden Sie in der Dokumentation zu Ausführungsgruppen.
compile_one_filetype sequence of strings; or None; default = None
Wird von "--kompilieren_ein_dependency" verwendet: Wenn mehrere Regeln die angegebene Datei nutzen, sollten wir diese Regel gegenüber anderen auswählen.
name string; or None; default = None
Veraltet: nicht verwenden.

Der Name dieser Regel, wie von Bazel interpretiert und in Kontexten wie Logging, native.existing_rule(...)[kind] und bazel query gemeldet. In der Regel entspricht dies der Starlark-ID, die an diese Regel gebunden wird. Eine Regel namens foo_library wird beispielsweise als foo_library = rule(...) deklariert und in einer BUILD-Datei als foo_library(...) instanziiert.

Wenn Sie diesen Parameter nicht angeben, wird der Name der Regel auf den Namen der ersten globalen Starlark-Variablen gesetzt, die an diese Regel im zugehörigen deklarierten .bzl-Modul gebunden ist. Daher muss foo_library = rule(...) diesen Parameter nicht angeben, wenn der Name foo_library ist.

Die Angabe eines expliziten Namens für eine Regel wirkt sich nicht darauf aus, wo Sie die Regel instanziieren dürfen.

wähle

unknown select(x, no_match_error='')

select() ist die Hilfsfunktion, mit der ein Regelattribut konfigurierbar wird. Weitere Informationen finden Sie unter Build-Enzyklopädie.

Parameter

Parameter Beschreibung
x erforderlich
Ein Wörterbuch, das Konfigurationsbedingungen Werten zuordnet. Jeder Schlüssel ist ein Label oder ein Labelstring, der eine Instanz von config_setting oder constraint_value angibt. In der Dokumentation zu Makros erfahren Sie, wann Sie anstelle eines Strings ein Label verwenden sollten.
no_match_error default = ''
Optionaler benutzerdefinierter Fehler, der gemeldet wird, wenn keine Bedingung erfüllt ist.

Single_version_override

None single_version_override(module_name, version='', registry='', patches=[], patch_strip=0)

Gibt an, dass eine Abhängigkeit immer noch von einer Registry stammen sollte, aber ihre Version angepinnt oder ihre Registry überschrieben oder eine Liste von Patches angewendet werden sollte. Diese Anweisung kann nur vom Stammmodul verwendet werden. Wenn also ein Modul Überschreibungen angibt, kann es von anderen nicht als Abhängigkeit verwendet werden.

Parameter

Parameter Beschreibung
module_name erforderlich
Der Name der Bazel-Modulabhängigkeit, auf die diese Überschreibung angewendet werden soll.
version default = ''
Überschreibt die deklarierte Version dieses Moduls in der Abhängigkeitsgrafik. Das heißt, dieses Modul wird an diese Überschreibungsversion „angepinnt“. Dieses Attribut kann weggelassen werden, wenn nur die Registry oder die Patches überschrieben werden sollen.
registry default = ''
Überschreibt die Registry für dieses Modul. Statt dieses Modul aus der Standardliste von Registries zu finden, sollte die angegebene Registry verwendet werden.
patches Iterable of strings; default = []
Eine Liste von Labels, die auf Patch-Dateien verweisen, die für dieses Modul angewendet werden sollen. Die Patchdateien müssen in der Quellstruktur des Projekts auf oberster Ebene vorhanden sein. Sie werden in der Reihenfolge der Liste angewendet.
patch_strip default = 0
Identisch mit dem Argument „--strip“ des Unix-Patches.

sortiert

list sorted(iterable, *, key=None, reverse=False)

Gibt eine neue sortierte Liste zurück, die alle Elemente der angegebenen iterierbaren Sequenz enthält. Ein Fehler kann auftreten, wenn ein Paar der Elemente x, y nicht mit x < y verglichen wird. Die Elemente werden in aufsteigender Reihenfolge sortiert, sofern das umgekehrte Argument nicht „True“ ist. In diesem Fall ist die Reihenfolge in absteigender Reihenfolge sortiert. Die Sortierung ist stabil: Bei Elementen, die den gleichen Wert haben, wird die ursprüngliche relative Reihenfolge beibehalten.
sorted([3, 5, 4]) == [3, 4, 5]

Parameter

Parameter Beschreibung
iterable erforderlich
Die iterierbare Sequenz zum Sortieren.
key default = None
Eine optionale Funktion, die vor dem Vergleich auf jedes Element angewendet wird.
reverse default = False
Gibt Ergebnisse in absteigender Reihenfolge zurück.

str

string str(x)

Wandelt jedes beliebige Objekt in einen String um. Dies ist nützlich für die Fehlerbehebung.
str("ab") == "ab"
str(8) == "8"

Parameter

Parameter Beschreibung
x erforderlich
Das Objekt, das konvertiert werden soll.

Tag-Klasse

tag_class tag_class(attrs={}, *, doc='')

Erstellt ein neues Tag_class-Objekt, das ein Attributschema für eine Klasse von Tags definiert. Dies sind Datenobjekte, die von einer Modulerweiterung verwendet werden können.

Parameter

Parameter Beschreibung
attrs default = {}
Ein Wörterbuch, in dem alle Attribute dieser Tag-Klasse deklariert werden. Er ist einem Attributnamen einem Attributobjekt zugeordnet (siehe attr-Modul).
doc default = ''
Eine Beschreibung der Tag-Klasse, die von Tools zur Dokumentationserstellung extrahiert werden kann.

Semikolon

tuple tuple(x=())

Gibt ein Semikolon mit denselben Elementen zurück, das dem angegebenen iterierbaren Wert entspricht.
tuple([1, 2]) == (1, 2)
tuple((2, 3, 2)) == (2, 3, 2)
tuple({5: "a", 2: "b", 4: "c"}) == (5, 2, 4)

Parameter

Parameter Beschreibung
x default = ()
Das zu konvertierende Objekt.

Typ

string type(x)

Gibt den Typnamen des zugehörigen Arguments zurück. Dies ist nützlich für die Fehlerbehebung und Typprüfung. Beispiele:
type(2) == "int"
type([1]) == "list"
type(struct(a = 2)) == "struct"
Diese Funktion kann sich in Zukunft ändern. Um Python-kompatiblen Code zu schreiben und zukunftssicher zu sein, sollten Sie ihn nur verwenden, um Rückgabewerte zu vergleichen:
if type(x) == type([]):  # if x is a list

Parameter

Parameter Beschreibung
x required
Das Objekt, dessen Typ geprüft werden soll.

Erweiterung verwenden

module_extension_proxy use_extension(extension_bzl_file, extension_name, *, dev_dependency=False)

Gibt ein Proxy-Objekt zurück, das eine Modulerweiterung darstellt. Seine Methoden können zum Erstellen von Modulerweiterungs-Tags aufgerufen werden.

Parameter

Parameter Beschreibung
extension_bzl_file erforderlich
Ein Label für die Starlark-Datei, mit der die Modulerweiterung definiert wird.
extension_name erforderlich
Der Name der zu verwendenden Modulerweiterung. Ein Symbol mit diesem Namen muss in die Starlark-Datei exportiert werden.
dev_dependency default = False
Bei "true" wird diese Nutzung der Modulerweiterung ignoriert, wenn das aktuelle Modul nicht das Stammmodul ist oder "--ignore_dev_dependency" aktiviert ist.

Repository verwenden

None use_repo(extension_proxy, *args, **kwargs)

Importiert eine oder mehrere Repositories, die von der angegebenen Modulerweiterung generiert wurden, in den Bereich des aktuellen Moduls.

Parameter

Parameter Beschreibung
extension_proxy erforderlich
Ein Proxy für ein Modulerweiterung, das von einem use_extension-Aufruf zurückgegeben wird.
args erforderlich
Die Namen der zu importierenden Repositories.
kwargs erforderlich
Gibt bestimmte Repositories an, die in den Bereich des aktuellen Moduls mit unterschiedlichen Namen importiert werden sollen. Die Schlüssel sollten den Namen haben, der im aktuellen Bereich verwendet werden soll. Die Werte sollten die ursprünglichen Namen sein, die von der Modulerweiterung exportiert wurden.

Sichtbarkeit

None visibility(value)

(Experimentell; durch --experimental_bzl_visibility aktiviert. Diese API kann sich ändern. Nur Pakete, die in --experimental_bzl_visibility_allowlist erscheinen, können diese Funktion aufrufen. Bekanntes Problem: Diese Funktion funktioniert derzeit möglicherweise nicht unter „bzlmod“.

Legt die bzl-Sichtbarkeit des .bzl-Moduls fest, das derzeit initialisiert wird.

Die „bzl- visibility“-Phase des BZL-Moduls (nicht zu verwechseln mit der Sichtbarkeit des Ziels) bestimmt, ob ein load() dieser BZL-Datei in den BUILD- und BZL-Dateien eines bestimmten Pakets zulässig ist. Zulässige Werte:

  • "public" (Standardeinstellung): Die .bzl-Datei kann überall geladen werden.
  • "private": Das BZL kann nur von Dateien im selben Paket geladen werden (Unterpakete werden ausgeschlossen).
  • Eine Liste von Paketspezifikationen (z.B. ["//pkg1","//pkg2/subpkg/..."]): Die .bzl-Datei kann durch Dateien in einem beliebigen Paket geladen werden, das einer der aufgeführten Spezifikationen entspricht. Paketspezifikationen können Paketpfade oder Paketpfade mit einem abschließenden "/..." sein, um alle Unterpakete einzubeziehen. Negierte Muster werden derzeit nicht unterstützt. Alle Paketspezifikationen befinden sich im aktuellen Repository. Die Syntax „&“ ist nicht zulässig.

Im Allgemeinen wird visibility() oben in der BZL-Datei direkt nach den load()-Anweisungen aufgerufen. Es ist schlecht, diese Deklaration später in der Datei oder in einer Hilfsmethode zu platzieren. Sie darf nur einmal pro BZL oder nach Ausführung des Top-Level-Codes von BZL aufgerufen werden.

Beachten Sie, dass ein .bzl-Modul mit einer öffentlichen bzl-Sichtbarkeit nicht zwangsläufig bedeutet, dass das entsprechende Dateiziel öffentlich sichtbar ist. Das bedeutet, dass es möglich ist, eine BZL-Datei zu load(), ohne dass sie in einem filegroup oder einem anderen Ziel davon abhängen.

Parameter

Parameter Beschreibung
value erforderlich
Die festzulegende Bzl-Sichtbarkeitsstufe. Kann "public", "private" oder eine Liste von Paketen sein.

Arbeitsbereich

None workspace(name)

Diese Funktion kann nur in einer WORKSPACE-Datei verwendet werden und muss vor allen anderen Funktionen in der Datei WORKSPACE deklariert werden. Jede WORKSPACE-Datei sollte eine workspace-Funktion haben.

Legt den Namen für diesen Arbeitsbereich fest. Arbeitsbereichsnamen sollten eine Beschreibung des Projekts im Java-Format sein und Unterstriche als Trennzeichen verwenden. Beispiel: github.com/bazelbuild/bazel sollte com_github_bazelbuild_bazel verwenden.

Dieser Name wird für das Verzeichnis verwendet, in dem die Runfiles des Repositorys gespeichert sind. Wenn beispielsweise das Runfile foo/bar im lokalen Repository vorhanden ist und die WORKSPACE-Datei workspace(name = 'baz') enthält, ist die Runfile unter mytarget.runfiles/baz/foo/bar verfügbar. Wenn kein Arbeitsbereichsname angegeben ist, wird die Runfile-Datei mit bar.runfiles/foo/bar verknüpft.

Die Namen von Regeln vom Typ Remote-Repository müssen gültige Arbeitsbereichsnamen sein. Sie könnten beispielsweise maven_jar(name = 'foo'), aber nicht maven_jar(name = 'foo%bar') haben, da Bazel versucht, eine WORKSPACE-Datei für die maven_jar mit workspace(name = 'foo%bar') zu schreiben.

Parameter

Parameter Beschreibung
name Erforderlich
ist der Name des Arbeitsbereichs. Namen müssen mit einem Buchstaben beginnen und dürfen nur Buchstaben, Ziffern, Unterstriche, Bindestriche und Punkte enthalten.

ZIP

list zip(*args)

Gibt ein list von tuples zurück, wobei das i-te Semikolon das i-te Element aus jeder Argumentsequenz oder jedem iterierbaren Element enthält. Die Liste hat die kürzeste Eingabe. Mit einem einzelnen iterierbaren Argument wird eine Liste von 1-Tuple-Werten zurückgegeben. Ohne Argumente wird eine leere Liste zurückgegeben. Beispiele:
zip()  # == []
zip([1, 2])  # == [(1,), (2,)]
zip([1, 2], [3, 4])  # == [(1, 3), (2, 4)]
zip([1, 2], [3, 4, 5])  # == [(1, 3), (2, 4)]

Parameter

Parameter Beschreibung
args erforderlichen
Listen zum Komprimieren.