Globales

Objetos, funciones y módulos registrados en el entorno global.

Miembros

todos

bool all(elements)

Muestra true si todos los elementos se evalúan como verdaderos o si la colección está vacía. Los elementos se convierten en valores booleanos mediante la función bool.
all(["hello", 3, True]) == True
all([-1, 0, 1]) == False

Parámetros

Parámetro Descripción
elements required
Es una cadena o una colección de elementos.

analysis_test_transition

transition analysis_test_transition(settings)

Crea una transición de configuración que se aplicará en las dependencias de la regla de análisis y prueba. Esta transición solo puede aplicarse a atributos de reglas con analysis_test = True. Estas reglas tienen capacidades restringidas (por ejemplo, el tamaño de su árbol de dependencias es limitado), por lo que las transiciones creadas con esta función tienen un alcance potencial limitado en comparación con las transiciones creadas con transition.

Esta función está diseñada principalmente para facilitar la biblioteca principal de Analysis Test Framework. Consulta la documentación (o la implementación) para conocer las prácticas recomendadas.

Parámetros

Parámetro Descripción
settings required
Es un diccionario que contiene información sobre los parámetros de configuración que deben establecerse con esta transición de configuración. Las claves son las etiquetas de configuración de compilación y los valores son sus nuevos valores posteriores a la transición. Ninguna otra configuración se modificó. Úsalo para declarar parámetros de configuración específicos que se deben establecer para que se apruebe una prueba de análisis.

cualquiera

bool any(elements)

Muestra true si al menos un elemento se evalúa como True. Los elementos se convierten en valores booleanos mediante la función bool.
any([-1, 0, 1]) == True
any([False, 0, ""]) == False

Parámetros

Parámetro Descripción
elements required
Es una cadena o una colección de elementos.

archive_override

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

Especifica que esta dependencia debe provenir de un archivo (zip, gzip, etc.) en una ubicación determinada, en lugar de un registro. Esta directiva solo se aplica en el módulo raíz; en otras palabras, si otros usuarios usan un módulo como dependencia, se ignorarán sus propias anulaciones.

Parámetros

Parámetro Descripción
module_name required
Es el nombre de la dependencia del módulo de Bazel a la que se aplicará esta anulación.
urls string; or Iterable of strings; obligatorio
Las URLs del archivo pueden ser http(s):// o file://.
integrity default = ''
La suma de verificación esperada del archivo de almacenamiento, en formato de integridad de subrecursos.
strip_prefix default = ''
Es un prefijo de directorio para quitar de los archivos extraídos.
patches Iterable of strings; default = []
Una lista de etiquetas que apunta a los archivos de parche para aplicar en este módulo. Los archivos de parche deben existir en el árbol de fuentes del proyecto de nivel superior. Se aplican en orden de lista.
patch_cmds Iterable of strings; default = []
Secuencia de comandos Bash que se aplicarán en Linux/Macos después de la aplicación de los parches.
patch_strip default = 0
Igual que el argumento --strip del parche Unix.

aspecto

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)

Crea un aspecto nuevo. El resultado de esta función debe almacenarse en un valor global. Consulta la introducción a los Aspectos para obtener más detalles.

Parámetros

Parámetro Descripción
implementation required
Una función de Starlark que implementa este aspecto, con exactamente dos parámetros: Target (el objetivo al que se aplica el aspecto) y ctx (el contexto de regla desde el que se crea el destino). Los atributos del destino están disponibles a través del campo ctx.rule. Esta función se evalúa durante la fase de análisis para cada aplicación de un aspecto a un objetivo.
attr_aspects sequence of strings; predeterminado = []
Lista de nombres de atributos. El aspecto se propaga a lo largo de las dependencias especificadas en los atributos de un destino con estos nombres. Aquí, los valores comunes incluyen deps y exports. La lista también puede contener una sola string "*" para propagarse a lo largo de todas las dependencias de un destino.
attrs dict; or None; default = None
Es un diccionario que declara todos los atributos del aspecto. Se asigna desde un nombre de atributo a un objeto de atributo, como `attr.label` o `attr.string` (consulta el módulo attr). Los atributos de aspecto están disponibles para la función de implementación como campos del parámetro ctx.

Los atributos implícitos que comienzan con _ deben tener valores predeterminados y tener el tipo label o label_list.

Los atributos explícitos deben tener el tipo string y deben usar la restricción values. Los atributos explícitos restringen el aspecto para que se use solo con reglas que tengan atributos del mismo nombre, tipo y valores válidos según la restricción.

required_providers default = []
Este atributo permite que el aspecto limite su propagación solo a los objetivos cuyas reglas anuncian a los proveedores requeridos. El valor debe ser una lista que contenga proveedores individuales o listas de proveedores, pero no ambos. Por ejemplo, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] es un valor válido, mientras que [FooInfo, BarInfo, [BazInfo, QuxInfo]] no lo es.

Una lista de proveedores no anidada se convertirá automáticamente en una lista que contiene una lista de proveedores. Es decir, [FooInfo, BarInfo] se convertirá automáticamente en [[FooInfo, BarInfo]].

Para que algunos objetivos de regla (p.ej., some_rule) sean visibles para un aspecto, some_rule debe anunciar todos los proveedores de, al menos, una de las listas de proveedores obligatorias. Por ejemplo, si el required_providers de un aspecto es [[FooInfo], [BarInfo], [BazInfo, QuxInfo]], este aspecto solo puede ver objetivos de some_rule si y solo si some_rule proporciona FooInfo *o* BarInfo *o* BazInfo *y* QuxInfo.

required_aspect_providers default = []
Este atributo permite que este aspecto inspeccione otros. El valor debe ser una lista que contenga proveedores individuales o listas de proveedores, pero no ambos. Por ejemplo, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] es un valor válido, mientras que [FooInfo, BarInfo, [BazInfo, QuxInfo]] no lo es.

Una lista de proveedores no anidada se convertirá automáticamente en una lista que contiene una lista de proveedores. Es decir, [FooInfo, BarInfo] se convertirá automáticamente en [[FooInfo, BarInfo]].

Para que otro aspecto (p.ej., other_aspect) sea visible para este, other_aspect debe proporcionar todos los proveedores de al menos una de las listas. En el ejemplo de [[FooInfo], [BarInfo], [BazInfo, QuxInfo]], este aspecto solo puede ver other_aspect si other_aspect proporciona FooInfo *o* BarInfo *o* BazInfo *y* QuxInfo.

provides default = []
Es una lista de proveedores que debe mostrar la función de implementación.

Se generará un error si la función de implementación omite de su valor que se muestra alguno de los tipos de proveedores que se indican aquí. Sin embargo, la función de implementación puede mostrar proveedores adicionales que no se mencionan aquí.

Cada elemento de la lista es un objeto *Info que muestra provider(), con la excepción de que un proveedor heredado se representa por su nombre de cadena.

requires sequence of Aspects; default = []
Lista de aspectos necesarios que se deben propagar antes de este aspecto.
fragments sequence of strings; predeterminado = []
Lista de nombres de fragmentos de configuración que el aspecto requiere en la configuración de destino.
host_fragments sequence of strings; default = []
Lista de nombres de fragmentos de configuración que el aspecto requiere en la configuración del host.
toolchains sequence; default = []
Si se configura, es el conjunto de cadenas de herramientas que requiere esta regla. La lista puede contener objetos String, Label o StarlarkToolchainTypeApi, en cualquier combinación. Para encontrar las cadenas de herramientas, verifica la plataforma actual y se proporcionan a la implementación de la regla a través de ctx.toolchain.
incompatible_use_toolchain_transition default = False
Esta opción dejó de estar disponible, por lo que se debe quitar.
doc default = ''
Es una descripción del aspecto que se puede extraer con las herramientas de generación de documentación.
apply_to_generating_rules default = False
Si el valor es "true", el aspecto se aplicará, cuando se aplique a un archivo de salida, a la regla de generación del archivo de salida.

Por ejemplo, supongamos que un aspecto se propaga transitivamente a través del atributo `deps` y se aplica al objetivo `alpha`. Supongamos que `alpha` tiene `deps = [':beta_output']`, donde `beta_output` es un resultado declarado de un `beta` de destino. Supón que `beta` tiene un `charlie` de destino como uno de sus `alpha` de destino, y luego propaga el `false` a través del 'Aspecto'.

Falso de forma predeterminada.

exec_compatible_with sequence of strings; default = []
Una lista de restricciones en la plataforma de ejecución que se aplican a todas las instancias de este aspecto.
exec_groups dict; or None; default = None
Dicta del nombre del grupo de ejecución (string) en exec_groups. Si se configura, permite que los aspectos ejecuten acciones en múltiples plataformas de ejecución dentro de una sola instancia. Consulta la documentación sobre grupos de ejecución para obtener más información.

bazel_dep

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

Declara una dependencia directa de otro módulo de Bazel.

Parámetros

Parámetro Descripción
name required
Es el nombre del módulo que se agregará como dependencia directa.
version default = ''
Es la versión del módulo que se agregará como dependencia directa.
max_compatibility_level default = -1
Es el valor máximo de compatibility_level admitido para que el módulo se agregue como dependencia directa. La versión del módulo indica el valor mínimo de compatibilidad_level admitido, así como el máximo si no se especifica este atributo.
repo_name default = ''
Es el nombre del repositorio externo que representa esta dependencia. Este es el nombre predeterminado del módulo.
dev_dependency default = False
Si el valor es true, se ignorará esta dependencia si el módulo actual no es el módulo raíz o se habilita `--ignore_dev_dependency`.

bind

None bind(name, actual=None)

Advertencia: No se recomienda el uso de bind(). Consulta Considera quitar la vinculación para ver un análisis detallado de sus problemas y alternativas.

Otorga a un objetivo un alias en el paquete //external.

Parámetros

Parámetro Descripción
name required
La etiqueta de “//external” para que funcione como el nombre del alias
actual string; or None; predeterminado = Ninguno
La etiqueta real a la que se le asignará un alias

bool

bool bool(x=False)

Constructor para el tipo bool. Muestra False si el objeto es None, False, una string vacía (""), el número 0 o una colección vacía (p.ej., (), []). De lo contrario, muestra True.

Parámetros

Parámetro Descripción
x default = False
Es la variable que se convertirá.

configuration_field

LateBoundDefault configuration_field(fragment, name)

Hace referencia a un valor predeterminado de límite tardío para un atributo del tipo label. Un valor tiene “de vinculación tardía” si requiere que se compile la configuración antes de determinar el valor. Cualquier atributo que use este valor como valor debe ser privado.

Ejemplo de uso:

Define un atributo de regla:

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

Se está accediendo en la implementación de reglas:

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

Parámetros

Parámetro Descripción
fragment required
Es el nombre de un fragmento de configuración que contiene el valor de vínculo tardío.
name required
Es el nombre del valor que se obtiene del fragmento de configuración.

salida

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

Crea un depset. El parámetro direct es una lista de elementos directos del depset, y el parámetro transitive es una lista de dependencias cuyos elementos se convierten en elementos indirectos del depset creado. El parámetro order especifica el orden en el que se muestran los elementos cuando el depset se convierte en una lista. Consulta la descripción general de las dependencias para obtener más información.

Todos los elementos (directos e indirectos) de un depset deben ser del mismo tipo, como lo obtiene la expresión type(x).

Debido a que se usa un conjunto basado en hash para eliminar duplicados durante la iteración, todos los elementos de un depset deben poder generar un hash. Sin embargo, esta invariante actualmente no se verifica de manera coherente en todos los constructores. Usa la marca --incompatible_always_check_depset_elements para habilitar la verificación coherente. Este será el comportamiento predeterminado en versiones futuras; consulta el error 10313.

Además, los elementos deben ser inmutables, aunque esta restricción se relajará en el futuro.

El orden de la dependencia creada debe ser compatible con el orden de las dependencias de transitive. El pedido de "default" es compatible con cualquier otro pedido; los demás pedidos son compatibles solo con ellos mismos.

Nota sobre la retrocompatibilidad. Actualmente, esta función acepta un parámetro posicional items. Es obsoleto y se quitará en el futuro. Después de su eliminación, direct se convertirá en un único parámetro posicional de la función depset. Por lo tanto, las dos llamadas siguientes son equivalentes y están preparadas para el futuro:

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

Parámetros

Parámetro Descripción
direct sequence; or None; predeterminado = Ninguno
Es una lista de elementos directos de un depset.
order default = "default"
La estrategia de recorrido para la configuración nueva. Consulta aquí los valores posibles.
transitive sequence of depsets; or None; default = None
Es una lista de dependencias cuyos elementos se convertirán en elementos indirectos de ella.

dict

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

Crea un diccionario a partir de un argumento posicional opcional y un conjunto opcional de argumentos de palabras clave. Si se proporciona la misma clave varias veces, se usará el último valor. Se considera que las entradas suministradas a través de los argumentos de palabra clave vienen después de las entradas suministradas a través del argumento posicional.

Parámetros

Parámetro Descripción
pairs default = []
Es un dict o un iterable cuyos elementos son cada uno de una longitud 2 (clave, valor).
kwargs required
Diccionario de entradas adicionales.

dir

list dir(x)

Muestra una lista de cadenas: los nombres de los atributos y métodos del objeto de parámetro.

Parámetros

Parámetro Descripción
x required
El objeto que se verificará.

enumerar

list enumerate(list, start=0)

Muestra una lista de pares (tuplas de dos elementos), con el índice (int) y el elemento de la secuencia de entrada.
enumerate([24, 21, 84]) == [(0, 24), (1, 21), (2, 84)]

Parámetros

Parámetro Descripción
list la secuencia de entrada
requerida.
start default = 0
índice de inicio.

exec_group

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

Crea un grupo de ejecución que se puede usar para crear acciones para una plataforma de ejecución específica durante la implementación de reglas.

Parámetros

Parámetro Descripción
toolchains sequence; default = []
El conjunto de cadenas de herramientas que requiere este grupo de ejecución. La lista puede contener objetos String, Label o StarlarkToolchainTypeApi, en cualquier combinación.
exec_compatible_with sequence of strings; default = []
Una lista de restricciones en la plataforma de ejecución.
copy_from_rule default = False
Si se configura como true, este grupo de ejecutables hereda las cadenas de herramientas y las restricciones de la regla a la que se adjunta este grupo. Si se establece en cualquier otra cadena, se producirá un error.

desaprobado

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

Hace que la ejecución falle con un error.

Parámetros

Parámetro Descripción
msg default = None
Obsoleto: usa argumentos posicionales. Este argumento actúa como un argumento posicional inicial implícito.
attr string; or None; predeterminado = Ninguno
Obsoleto. Hace que un prefijo opcional que contiene esta cadena se agregue al mensaje de error.
args required
Es una lista de valores, formateada con debugPrint (que equivale a str de forma predeterminada) y unidos con espacios, que aparecen en el mensaje de error.

float

float float(x=unbound)

Muestra x como valor de número de punto flotante.
  • Si x ya es un número de punto flotante, float lo muestra sin cambios.
  • Si x es un bool, float muestra 1.0 para True y 0.0 para False.
  • Si x es un número entero, float muestra el valor de punto flotante finito más cercano a x, o bien un error si la magnitud es demasiado grande.
  • Si x es una string, debe ser un literal de punto flotante válido o ser igual (sin distinguir mayúsculas de minúsculas) a NaN, Inf o Infinity, precedido opcionalmente por un signo + o -.
Cualquier otro valor generará un error. Sin ningún argumento, float() muestra 0.0.

Parámetros

Parámetro Descripción
x default = unbound
Es el valor que se convertirá.

getattr

unknown getattr(x, name, default=unbound)

Muestra el campo de la estructura del nombre dado, si existe. De lo contrario, muestra default (si se especifica) o genera un error. getattr(x, "foobar") es igual a x.foobar.
getattr(ctx.attr, "myattr")
getattr(ctx.attr, "myattr", "mydefault")

Parámetros

Parámetro Descripción
x required
La struct cuyo atributo se accede a ella.
name required
El nombre del atributo struct.
default default = unbound
Es el valor predeterminado que se muestra en caso de que el struct no tenga un atributo con el nombre dado.

git_override

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

Especifica que una dependencia debe provenir de una confirmación determinada de un repositorio de Git. Esta directiva solo se aplica en el módulo raíz; en otras palabras, si otros usuarios usan un módulo como dependencia, se ignorarán sus propias anulaciones.

Parámetros

Parámetro Descripción
module_name required
Es el nombre de la dependencia del módulo de Bazel a la que se aplicará esta anulación.
remote required
La URL del repositorio de Git remoto.
commit default = ''
La confirmación que se debe verificar.
patches Iterable of strings; default = []
Una lista de etiquetas que apunta a los archivos de parche para aplicar en este módulo. Los archivos de parche deben existir en el árbol de fuentes del proyecto de nivel superior. Se aplican en orden de lista.
patch_cmds Iterable of strings; default = []
Secuencia de comandos Bash que se aplicarán en Linux/Macos después de la aplicación de los parches.
patch_strip default = 0
Igual que el argumento --strip del parche Unix.

Hasattr

bool hasattr(x, name)

Muestra el valor True si el objeto x tiene un atributo o método del name determinado; de lo contrario, muestra False. Ejemplo:
hasattr(ctx.attr, "myattr")

Parámetros

Parámetro Descripción
x required
El objeto que se verificará.
name required
Es el nombre del atributo.

hash

int hash(value)

Muestra un valor de hash para una cadena. Esto se calcula de forma determinista con el mismo algoritmo que String.hashCode() de Java, es decir:
s[0] * (31^(n-1)) + s[1] * (31^(n-2)) + ... + s[n-1]
Por el momento, no se admite el hash de valores además de las cadenas.

Parámetros

Parámetro Descripción
value required
Es el valor de la string para generar un hash.

int

int int(x, base=unbound)

Muestra x como un valor int.
  • Si x ya es un int, int lo muestra sin cambios.
  • Si x es un bool, int muestra 1 para verdadero y 0 para Falso.
  • Si x es una cadena, debe tener el formato <sign><prefix><digits>. <sign> tiene el valor "+", "-" o está vacío (se interpreta como positivo). <digits> es una secuencia de dígitos del 0 al base - 1, en la que las letras de la a-z (o de la A a la Z) se usan como dígitos del 10 al 35. Cuando base sea 2/8/16, <prefix> es opcional y puede ser 0b/0o/0x (o, lo equivalente, 0B/0O/0X) respectivamente. Si base es cualquier otro valor además de estas bases o el valor especial 0, el prefijo debe estar vacío. En el caso de que base sea 0, la cadena se interpreta como un literal de número entero, en el sentido de que se elige una de las bases 2/8/10/16 según el prefijo que se use, si se utiliza alguno. Si base es 0, no se usa ningún prefijo y hay más de un dígito, el dígito inicial no puede ser 0; esto es para evitar confusiones entre el octal y el decimal. La magnitud del número que representa la cadena debe estar dentro del rango permitido para el tipo int.
  • Si x es un número de punto flotante, int muestra el valor entero del número de punto flotante, que se redondea hacia cero. Es un error si x no es finito (NaN o infinito).
Esta función falla si x es de otro tipo o si el valor es una string que no cumple con el formato anterior. A diferencia de la función int de Python, esta función no permite cero argumentos ni espacios en blanco extraños para argumentos de cadena.

Ejemplos:

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

Parámetros

Parámetro Descripción
x required
Es la cadena que se convertirá.
base default = unbound
La base que se usa para interpretar un valor de string; el valor predeterminado es 10. Debe ser un valor entre 2 y 36 (inclusive) o 0 para detectar la base como si x fuera un literal de número entero. No se debe proporcionar este parámetro si el valor no es una cadena.

len

int len(x)

Muestra la longitud de una string, una secuencia (como una lista o una tupla), dict o algún otro iterable.

Parámetros

Parámetro Descripción
x required
Es el valor cuya longitud se va a informar.

list

list list(x=[])

Muestra una lista nueva con los mismos elementos que el valor iterable determinado.
list([1, 2]) == [1, 2]
list((2, 3, 2)) == [2, 3, 2]
list({5: "a", 2: "b", 4: "c"}) == [5, 2, 4]

Parámetros

Parámetro Descripción
x default = []
Es el objeto que se convertirá.

local_path_override

None local_path_override(module_name, path)

Especifica que una dependencia debe provenir de un directorio determinado en el disco local. Esta directiva solo se aplica en el módulo raíz; en otras palabras, si otros usuarios usan un módulo como dependencia, se ignorarán sus propias anulaciones.

Parámetros

Parámetro Descripción
module_name required
Es el nombre de la dependencia del módulo de Bazel a la que se aplicará esta anulación.
path required
La ruta de acceso al directorio en el que se encuentra este módulo.

temp.

unknown max(*args)

Muestra el mayor de todos los argumentos especificados. Si solo se proporciona un argumento, debe ser un iterable que no esté vacío.Se trata de un error si los elementos no son comparables (por ejemplo, int con string) o si no se proporcionan argumentos.
max(2, 5, 4) == 5
max([5, 6, 3]) == 6

Parámetros

Parámetro Descripción
args required
Los elementos que se deben verificar.

min

unknown min(*args)

Muestra el menor de todos los argumentos especificados. Si solo se proporciona un argumento, debe ser un iterable que no esté vacío. Se produce un error si los elementos no son comparables (por ejemplo, int con string) o si no se proporcionan argumentos.
min(2, 5, 4) == 2
min([5, 6, 3]) == 3

Parámetros

Parámetro Descripción
args required
Los elementos que se deben verificar.

módulo

None module(name='', version='', compatibility_level=0, repo_name='', bazel_compatibility=[])

Declara ciertas propiedades del módulo de Bazel que representa el repositorio actual de Bazel. Estas propiedades son metadatos esenciales del módulo (como el nombre y la versión) o afectan el comportamiento del módulo actual y sus dependientes.

Como máximo, debe llamarse una vez. Solo se puede omitir si este módulo es el módulo raíz (como en el caso de que otro módulo no dependa de él).

Parámetros

Parámetro Descripción
name default = ''
Es el nombre del módulo. Solo se puede omitir si este módulo es el módulo raíz (como en el caso de que otro módulo no dependa de él). Un nombre de módulo válido debe: 1) contener solo letras minúsculas (a-z), dígitos (0-9), puntos (.), guiones (-) y guiones bajos (_); 2) comenzar con una letra minúscula; 3) terminar con una letra minúscula o un número.
version default = ''
Es la versión del módulo. Solo se puede omitir si este módulo es el módulo raíz (como en el caso de que otro módulo no dependa de él).
compatibility_level default = 0
El nivel de compatibilidad del módulo. Esto se debe cambiar cada vez que se presenta un cambio importante incompatible. Esta es básicamente la "versión principal" del módulo en términos de SemVer, con la excepción de que no está incorporada en la cadena de versión en sí, pero existe como un campo independiente. Los módulos con diferentes niveles de compatibilidad participan en la resolución de la versión como si fueran módulos con nombres diferentes, pero el gráfico de dependencia final no puede contener varios módulos con el mismo nombre, pero con diferentes niveles de compatibilidad (a menos que multiple_version_override esté vigente; consulta allí para obtener más detalles).
repo_name default = ''
Es el nombre del repositorio que representa este módulo, tal como lo ve el módulo. De forma predeterminada, el nombre del repositorio es el nombre del módulo. Se puede especificar para facilitar la migración de proyectos que usaron un nombre de repositorio distinto de su nombre de módulo.
bazel_compatibility Iterable of strings; default = []
Una lista de versiones de Bazel que permite a los usuarios declarar qué versiones de Bazel son compatibles con este módulo. NO afecta la resolución de dependencias, pero bzlmod usará esta información para verificar si tu versión actual de Bazel es compatible. El formato de este valor es una string de algunos valores de restricción separados por comas. Se admiten tres restricciones: <=X.X.X: la versión de Bazel debe ser igual o anterior a X.X.X. Se usa cuando hay un cambio incompatible conocido en una versión más reciente. >=X.X.X: La versión de Bazel debe ser igual o posterior a X.X.X.Se usa cuando dependes de algunas funciones que solo están disponibles a partir de X.X.X. -X.X.X: La versión X.X.X de Bazel no es compatible. Se usa cuando hay un error en X.X.X que interrumpe, pero se corrigió en versiones posteriores.

module_extension

unknown module_extension(implementation, *, tag_classes={}, doc='', environ=[], os_dependent=False, arch_dependent=False)

Crea una nueva extensión de módulo. Almacena los datos en un valor global para que se puedan exportar y usar en un archivo MODULE.bazel.

Parámetros

Parámetro Descripción
implementation required
Es la función que implementa la extensión de este módulo. Debe tomar un solo parámetro, module_ctx. Se llama a la función una vez al comienzo de una compilación para determinar el conjunto de repositorios disponibles.
tag_classes default = {}
Es un diccionario para declarar todas las clases de etiquetas que usa la extensión. Se asigna desde el nombre de la clase de etiqueta a un objeto tag_class.
doc default = ''
Es una descripción de la extensión del módulo que se puede extraer con las herramientas de generación de documentación.
environ sequence of strings; default = []
Proporciona una lista de variables de entorno de la que depende la extensión de este módulo. Si una variable de entorno de esa lista cambia, se volverá a evaluar la extensión.
os_dependent predeterminada = Falso
Indica si esta extensión depende o no del SO
arch_dependent predeterminado = Falso
Indica si esta extensión depende o no de la arquitectura

multiple_version_override

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

Especifica que una dependencia aún debe provenir de un registro, pero se debe permitir que coexistan varias versiones de esta. Para obtener más detalles, consulta la documentación. Esta directiva solo se aplica en el módulo raíz; en otras palabras, si otros usuarios usan un módulo como dependencia, se ignorarán sus propias anulaciones.

Parámetros

Parámetro Descripción
module_name required
Es el nombre de la dependencia del módulo de Bazel a la que se aplicará esta anulación.
versions Iterable of strings; obligatorio
Especifica de forma explícita las versiones que pueden coexistir. Estas versiones ya deben estar presentes en la selección previa del gráfico de dependencia. Las dependencias de este módulo se "actualizarán" a la versión permitida superior más cercana con el mismo nivel de compatibilidad, mientras que las dependencias que tengan una versión superior a la permitida en el mismo nivel de compatibilidad generarán un error.
registry default = ''
Anula el registro de este módulo. En lugar de encontrar este módulo en la lista predeterminada de registros, se debe usar el registro determinado.

imprimir

None print(sep=" ", *args)

Imprime args como resultado de depuración. Tendrá el prefijo de la cadena "DEBUG" y la ubicación (archivo y número de línea) de esta llamada. La forma exacta en la que los argumentos se convierten en cadenas no se especifica y puede cambiar en cualquier momento. En particular, puede ser diferente (y más detallado) del formato que usan str() y repr().

No se recomienda usar print en el código de producción debido al spam que crea para los usuarios. Para las bajas, prioriza un error grave con fail() siempre que sea posible.

Parámetros

Parámetro Descripción
sep default = " "
La cadena del separador entre los objetos. El valor predeterminado es el espacio (" ").
args required
Los objetos que se imprimirán.

provider

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

Define un símbolo de proveedor. Se puede crear una instancia del proveedor llamándolo o se puede usar directamente como clave para recuperar una instancia de ese proveedor desde un destino. Ejemplo:
MyInfo = provider()
...
def _my_library_impl(ctx):
    ...
    my_info = MyInfo(x = 2, y = 3)
    # my_info.x == 2
    # my_info.y == 3
    ...

Consulta Reglas (proveedores) para obtener una guía completa sobre cómo usar los proveedores.

Muestra un valor Provider que admite llamadas si no se especifica init.

Si se especifica init, muestra una tupla de 2 elementos: un valor Provider que admite llamadas y un valor que admite llamadas de constructor sin procesar. Para obtener más información, consulta Reglas (inicialización personalizada de proveedores personalizados) y el análisis del parámetro init a continuación.

Parámetros

Parámetro Descripción
doc default = ''
Es una descripción del proveedor que se puede extraer con las herramientas de generación de documentación.
fields sequence of strings; or dict; or None; predeterminado = Ninguno
Si se especifica, restringe el conjunto de campos permitidos.
Los valores posibles son los siguientes:
  • lista de campos:
    provider(fields = ['a', 'b'])

  • nombre del campo del diccionario -> documentación:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
Todos los campos son opcionales.
init callable; or None; predeterminado = Ninguno
Una devolución de llamada opcional para el procesamiento previo y la validación de los valores de campo del proveedor durante la creación de la instancia. Si se especifica init, provider() muestra una tupla de 2 elementos: el símbolo de proveedor normal y un constructor sin procesar.

A continuación, se incluye una descripción precisa. Consulta Reglas (inicialización personalizada de proveedores) para obtener un debate y casos de uso intuitivos.

Permite que P sea el símbolo del proveedor creado cuando se llama a provider(). Conceptualmente, una instancia de P se genera llamando a una función de constructor predeterminada c(*args, **kwargs), que hace lo siguiente:

  • Si el campo args no está vacío, se produce un error.
  • Si se especificó el parámetro fields cuando se llamó a provider() y si kwargs contiene alguna clave que no figure en fields, se produce un error.
  • De lo contrario, c muestra una instancia nueva que tiene, para cada entrada k: v en kwargs, un campo llamado k con el valor v.
En el caso de que no se proporcione una devolución de llamada a init, una llamada al símbolo P en sí funciona como una llamada a la función de constructor predeterminada c. En otras palabras, P(*args, **kwargs) muestra c(*args, **kwargs). Por ejemplo,
MyInfo = provider()
m = MyInfo(foo = 1)
hará que m sea una instancia MyInfo con m.foo == 1.

Sin embargo, en el caso en el que se especifique init, la llamada a P(*args, **kwargs) realizará los siguientes pasos:

  1. La devolución de llamada se invoca como init(*args, **kwargs), es decir, con los mismos argumentos posicionales y de palabras clave que se pasaron a P.
  2. Se espera que el valor que se muestra de init sea un diccionario, d, cuyas claves son strings de nombres de campo. Si no es así, se produce un error.
  3. Se genera una instancia nueva de P como si se llamara al constructor predeterminado con las entradas de d como argumentos de palabra clave, como en c(**d).

Nota: Los pasos anteriores implican que se produce un error si *args o **kwargs no coinciden con la firma de init, si falla la evaluación del cuerpo de init (quizás de manera intencional mediante una llamada a fail()) o si el valor que se muestra de init no es un diccionario con el esquema esperado.

De esta manera, la devolución de llamada init generaliza la construcción normal del proveedor, ya que permite argumentos posicionales y lógica arbitraria para el procesamiento previo y la validación. No permite eludir la lista de fields permitidos.

Cuando se especifica init, el valor que se muestra de provider() se convierte en una tupla (P, r), en la que r es el constructor sin procesar. De hecho, el comportamiento de r es exactamente el de la función de constructor predeterminada c que se analizó anteriormente. Por lo general, r está vinculado a una variable cuyo nombre tiene un prefijo de guion bajo para que solo el archivo .bzl actual tenga acceso directo a él:

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

rango

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

Crea una lista en la que los elementos pasen de start a stop con un incremento de step. Si se proporciona un solo argumento, los elementos varían de 0 a ese elemento.
range(4) == [0, 1, 2, 3]
range(3, 9, 2) == [3, 5, 7]
range(3, 0, -1) == [3, 2, 1]

Parámetros

Parámetro Descripción
start_or_stop obligatorio
Valor del elemento de inicio si se proporciona una parada; de lo contrario, el valor de la parada y el inicio real son 0
stop_or_none int; or None; default = None
Índice opcional del primer elemento que no se incluirá en la lista resultante. La generación de la lista se detiene antes de que se alcance el stop.
step default = 1
El incremento (el valor predeterminado es 1). Puede ser negativo.

register_execution_platforms()

None register_execution_platforms(*platform_labels)

Registra una plataforma ya definida para que Bazel pueda usarla como plataforma de ejecución durante la resolución de la cadena de herramientas.

Parámetros

Parámetro Descripción
platform_labels sequence of strings (obligatorio)
Las etiquetas de las plataformas que se registrarán

register_execution_platforms(dev_dependency)

None register_execution_platforms(dev_dependency=False, *platform_labels)

Especifica las plataformas de ejecución ya definidas que se registrarán cuando se seleccione este módulo. Deben ser patrones de destino absolutos (es decir, que comiencen con @ o //). Consulta la resolución de la cadena de herramientas para obtener más información.

Parámetros

Parámetro Descripción
dev_dependency predeterminado = Falso
Si se establece como "true", las plataformas de ejecución no se registrarán si el módulo actual no es el módulo raíz o si se habilita `--ignore_dev_dependency`.
platform_labels sequence of strings (obligatorio)
Las etiquetas de las plataformas que se registrarán

register_toolchains()

None register_toolchains(*toolchain_labels)

Registra una cadena de herramientas ya definida para que Bazel pueda usarla durante la resolución de la cadena de herramientas. Consulta ejemplos para definir y registrar cadenas de herramientas.

Parámetros

Parámetro Descripción
toolchain_labels sequence of strings; required
Las etiquetas de las cadenas de herramientas que se registrarán.

register_toolchains(dev_dependency)

None register_toolchains(dev_dependency=False, *toolchain_labels)

Especifica las cadenas de herramientas ya definidas que se registrarán cuando se seleccione este módulo. Deben ser patrones de destino absolutos (es decir, que comiencen con @ o //). Consulta la resolución de la cadena de herramientas para obtener más información.

Parámetros

Parámetro Descripción
dev_dependency default = False
Si el valor es true, las cadenas de herramientas no se registrarán si el módulo actual no es el módulo raíz o si se habilita `--ignore_dev_dependency`.
toolchain_labels sequence of strings; required
Las etiquetas de las cadenas de herramientas que se registrarán.

repository_rule

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

Crea una nueva regla de repositorio. Almacena este elemento en un valor global para que se pueda cargar y llamar desde el archivo WORKSPACE.

Parámetros

Parámetro Descripción
implementation required
es la función que implementa esta regla. Debe tener un solo parámetro, repository_ctx. Se llama a la función durante la fase de carga para cada instancia de la regla.
attrs dict; or None; default = None
para declarar todos los atributos de la regla. Se asigna desde un nombre de atributo a un objeto de atributo (consulta el módulo attr). Los atributos que comienzan con _ son privados y se pueden usar para agregar a un archivo una dependencia implícita de una etiqueta (una regla de repositorio no puede depender de un artefacto generado). El atributo name se agrega de forma implícita y no se debe especificar.
local default = False
Indica que esta regla recupera todo del sistema local y debe volver a evaluarse en cada recuperación.
environ sequence of strings; default = []
Proporciona una lista de variables de entorno de la que depende esta regla de repositorio. Si una variable de entorno de esa lista cambia, el repositorio se volverá a recuperar.
configure default = Falso
Indica que el repositorio inspecciona el sistema para fines de configuración
remotable default = False
Experimental. Este parámetro es experimental y puede cambiar en cualquier momento. No dependas de ello. Se puede habilitar de forma experimental si configuras ---experimental_repo_remote_exec
Compatible con la ejecución remota.
doc default = ''
Es una descripción de la regla del repositorio que se puede extraer con las herramientas de generación de documentación.

repr

string repr(x)

Convierte cualquier objeto en una representación de cadena. Esto es útil para la depuración.
repr("ab") == '"ab"'

Parámetros

Parámetro Descripción
x required
El objeto que se convertirá.

Revertida

list reversed(sequence)

Muestra una lista nueva y no congelada que contiene los elementos de la secuencia iterable original en orden inverso.
reversed([3, 5, 4]) == [4, 5, 3]

Parámetros

Parámetro Descripción
sequence required
La secuencia iterable (p.ej., lista) que se revertirá.

regla

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)

Crea una regla nueva, a la que se puede llamar desde un archivo BUILD o una macro para crear destinos.

Las reglas deben asignarse a variables globales en un archivo .bzl; el nombre de la variable global es el nombre de la regla.

Las reglas de prueba deben tener un nombre que termine en _test, mientras que las demás reglas no deben tener este sufijo. (Esta restricción se aplica solo a las reglas, no a sus objetivos).

Parámetros

Parámetro Descripción
implementation required
la función de Starlark que implementa esta regla, debe tener exactamente un parámetro: ctx. Se llama a la función durante la fase de análisis para cada instancia de la regla. Puede acceder a los atributos que proporciona el usuario. Debe crear acciones para generar todos los resultados declarados.
test default = Falso
Indica si esta regla es una regla de prueba, es decir, si puede estar sujeta a un comando blaze test. Todas las reglas de prueba se consideran ejecutables automáticamente. No es necesario (y no se recomienda) configurar executable = True de manera explícita para una regla de prueba. Consulta la página de reglas para obtener más información.
attrs dict; or None; default = None
para declarar todos los atributos de la regla. Se asigna desde un nombre de atributo a un objeto de atributo (consulta el módulo attr). Los atributos que comienzan con _ son privados y se pueden usar para agregar una dependencia implícita de una etiqueta. El atributo name se agrega de forma implícita y no se debe especificar. Los atributos visibility, deprecation, tags, testonly y features se agregan de forma implícita y no se pueden anular. La mayoría de las reglas solo necesitan algunos atributos. Para limitar el uso de memoria, la función de regla impone un límite en el tamaño de las attrs.
outputs dict; or None; or function; predeterminado = Ninguno
Obsoleto. Este parámetro dejó de estar disponible y se quitará pronto. No dependas de ello. Está inhabilitada con ---incompatible_no_rule_outputs_param. Usa esta marca para verificar que tu código sea compatible con la eliminación inminente.
Este parámetro dejó de estar disponible. Migra las reglas para que usen OutputGroupInfo o attr.output en su lugar.

Un esquema para definir resultados declarados previamente. A diferencia de los atributos output y output_list, el usuario no especifica las etiquetas para estos archivos. Consulta la página Reglas para obtener más información sobre los resultados declarados previamente.

El valor de este argumento es un diccionario o una función de devolución de llamada que genera un diccionario. La devolución de llamada funciona de manera similar a los atributos de dependencias procesados: los nombres de los parámetros de la función se comparan con los atributos de la regla, por lo que, por ejemplo, si pasas outputs = _my_func con la definición def _my_func(srcs, deps): ..., la función tiene acceso a los atributos srcs y deps. Ya sea que el diccionario se especifique directamente o a través de una función, se interpreta de la siguiente manera:

Cada entrada en el diccionario crea un resultado declarado previamente en el que la clave es un identificador y el valor es una plantilla de string que determina la etiqueta de la salida. En la función de implementación de la regla, el identificador se convierte en el nombre de campo que se usa para acceder al File del resultado en ctx.outputs. La etiqueta del resultado tiene el mismo paquete que la regla, y la parte después del paquete se debe sustituir cada marcador de posición del formulario "%{ATTR}" por una cadena formada a partir del valor del atributo ATTR:

  • Los atributos de tipo cadena se sustituyen literalmente.
  • Los atributos de tipo de etiqueta se convierten en la parte de la etiqueta después del paquete, menos la extensión de archivo. Por ejemplo, la etiqueta "//pkg:a/b.c" se convierte en "a/b".
  • Los atributos de tipo de salida se convierten en la parte de la etiqueta después del paquete, incluida la extensión de archivo (en el ejemplo anterior, "a/b.c").
  • Todos los atributos de tipo de lista (por ejemplo, attr.label_list) que se usan en los marcadores de posición deben tener exactamente un elemento. Su conversión es la misma que la de su versión no lista (attr.label).
  • Es posible que otros tipos de atributos no aparezcan en los marcadores de posición.
  • Los marcadores de posición especiales que no son atributos %{dirname} y %{basename} se expanden a esas partes de la etiqueta de la regla y excluyen su paquete. Por ejemplo, en "//pkg:a/b.c", el dirname es a y el nombre base es b.c.

En la práctica, el marcador de posición de sustitución más común es "%{name}". Por ejemplo, para un destino llamado "foo", el dict de salida {"bin": "%{name}.exe"} declara previamente un resultado llamado foo.exe al que se puede acceder en la función de implementación como ctx.outputs.bin.

executable default = False
Indica si esta regla se considera ejecutable, es decir, si puede estar sujeta a un comando blaze run. Consulta la página de reglas para obtener más información.
output_to_genfiles default = False
Si esta preferencia se establece como "true", los archivos se generarán en el directorio genfiles en lugar de en el directorio bin. A menos que lo necesites para la compatibilidad con reglas existentes (p.ej., cuando se generan archivos de encabezado para C++), no establezcas esta marca.
fragments sequence of strings; predeterminado = []
Lista de nombres de fragmentos de configuración que la regla requiere en la configuración de destino.
host_fragments sequence of strings; default = []
Lista de nombres de fragmentos de configuración que la regla requiere en la configuración del host.
_skylark_testable default = Falso
(Experimental)

Si es verdadero, esta regla expondrá sus acciones para su inspección mediante reglas que dependen de ella mediante un proveedor de Acciones. El proveedor también está disponible para la regla mediante una llamada a ctx.created_actions().

Solo se debe usar para probar el comportamiento de tiempo de análisis de las reglas de Starlark. Es posible que esta marca se quite en el futuro.
toolchains sequence; default = []
Si se configura, es el conjunto de cadenas de herramientas que requiere esta regla. La lista puede contener objetos String, Label o StarlarkToolchainTypeApi, en cualquier combinación. Para encontrar las cadenas de herramientas, verifica la plataforma actual y se proporcionan a la implementación de la regla a través de ctx.toolchain.
incompatible_use_toolchain_transition default = False
Esta opción dejó de estar disponible, por lo que se debe quitar.
doc default = ''
Es una descripción de la regla que se puede extraer con las herramientas de generación de documentación.
provides default = []
Es una lista de proveedores que debe mostrar la función de implementación.

Se generará un error si la función de implementación omite de su valor que se muestra alguno de los tipos de proveedores que se indican aquí. Sin embargo, la función de implementación puede mostrar proveedores adicionales que no se mencionan aquí.

Cada elemento de la lista es un objeto *Info que muestra provider(), con la excepción de que un proveedor heredado se representa por su nombre de cadena.

exec_compatible_with sequence of strings; default = []
Una lista de restricciones en la plataforma de ejecución que se aplican a todos los objetivos de este tipo de regla.
analysis_test default = False
Si es verdadero, esta regla se trata como una prueba de análisis.

Nota: Las reglas de prueba de análisis se definen principalmente con la infraestructura proporcionada en las bibliotecas principales de Starlark. Consulta Pruebas para obtener orientación.

Si una regla se define como una regla de prueba de análisis, puede usar las transiciones de configuración definidas mediante analysis_test_transition en sus atributos, pero tiene algunas restricciones:

  • Los objetivos de esta regla están limitados en la cantidad de dependencias transitivas que pueden tener.
  • La regla se considera una regla de prueba (como si se hubieran configurado test=True). Esto sustituye el valor de test
  • La función de implementación de reglas no puede registrar acciones. En su lugar, debe registrar un resultado aprobado o reprobado proporcionando AnalysisTestResultInfo.
build_setting BuildSetting; or None; default = None
Si se establece, describe de qué tipo de build setting es esta regla. Consulta el módulo config. Si se configura, se agrega automáticamente un atributo obligatorio llamado "build_setting_default" a esta regla, con un tipo correspondiente al valor que se pasa aquí.
cfg default = Ninguna
Si se establece, apunta a la transición de configuración que la regla aplicará a su propia configuración antes del análisis.
exec_groups dict; or None; default = None
Dicta del nombre del grupo de ejecución (string) en exec_groups. Si se configura, permite que las reglas ejecuten acciones en varias plataformas de ejecución dentro de un solo objetivo. Consulta la documentación sobre grupos de ejecución para obtener más información.
compile_one_filetype sequence of strings; or None; default = None
Lo usa --compile_one_dependency: si varias reglas consumen el archivo especificado, ¿debemos elegir esta regla por sobre otras.
name string; or None; predeterminado = Ninguno
Obsoleto. Este parámetro dejó de estar disponible y se quitará pronto. No dependas de ello. Está inhabilitada con --+incompatible_remove_rule_name_parameter. Usa esta marca para verificar que tu código sea compatible con la eliminación inminente.
Obsoleto: no usarlo.

El nombre de esta regla, tal como Bazel la comprende y se informa en contextos como Logging, native.existing_rule(...)[kind] y bazel query. Por lo general, es el mismo que el identificador de Starlark que está vinculado a esta regla. Por ejemplo, una regla llamada foo_library suele declararse como foo_library = rule(...) y se creará una instancia de este en un archivo BUILD como foo_library(...).

Si se omite este parámetro, el nombre de la regla se establece en el nombre de la primera variable global de Starlark que se vinculará a esta regla dentro del módulo .bzl de declaración. Por lo tanto, foo_library = rule(...) no necesita especificar este parámetro si el nombre es foo_library.

Especificar un nombre explícito para una regla no cambia el lugar en el que se te permite crear una instancia de la regla.

select

unknown select(x, no_match_error='')

select() es la función auxiliar que hace que un atributo de regla sea configurable. Consulta la enciclopedia de compilaciones para obtener más detalles.

Parámetros

Parámetro Descripción
x required
Es un dict que asigna condiciones de configuración a valores. Cada clave es una Label o una cadena de etiqueta que identifica una instancia config_setting o constraint_value. Consulta la documentación sobre macros para saber cuándo usar una etiqueta en lugar de una string.
no_match_error default = ''
Es un error personalizado opcional para informar si no coincide ninguna condición.

single_version_override

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

Especifica que una dependencia aún debería provenir de un registro, pero que su versión se debe fijar, que se debe anular el registro, o bien que se debe aplicar una lista de parches. Esta directiva solo se aplica en el módulo raíz; en otras palabras, si otros usuarios usan un módulo como dependencia, se ignorarán sus propias anulaciones.

Parámetros

Parámetro Descripción
module_name required
Es el nombre de la dependencia del módulo de Bazel a la que se aplicará esta anulación.
version default = ''
Anula la versión declarada de este módulo en el gráfico de dependencias. En otras palabras, este módulo se “fijará” a esta versión de anulación. Este atributo se puede omitir si lo único que se quiere anular es el registro o los parches.
registry default = ''
Anula el registro de este módulo. En lugar de encontrar este módulo en la lista predeterminada de registros, se debe usar el registro determinado.
patches Iterable of strings; default = []
Una lista de etiquetas que apunta a los archivos de parche para aplicar en este módulo. Los archivos de parche deben existir en el árbol de fuentes del proyecto de nivel superior. Se aplican en orden de lista.
patch_cmds Iterable of strings; default = []
Secuencia de comandos Bash que se aplicarán en Linux/Macos después de la aplicación de los parches.
patch_strip default = 0
Igual que el argumento --strip del parche Unix.

ordenado

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

Muestra una lista ordenada nueva que contiene todos los elementos de la secuencia iterable proporcionada. Puede producirse un error si cualquier par de elementos x e y no se pueden comparar usando x < y. Los elementos se ordenan en orden ascendente, a menos que el argumento inverso sea True, en cuyo caso el orden es descendente. La ordenación es estable: los elementos que se comparan igual conservan su orden relativo original.
sorted([3, 5, 4]) == [3, 4, 5]

Parámetros

Parámetro Descripción
iterable required
Es la secuencia iterable que se debe ordenar.
key default = Ninguno
Es una función opcional que se aplica a cada elemento antes de la comparación.
reverse default = False
Muestra los resultados en orden descendente.

str

string str(x)

Convierte cualquier objeto en string. Esto es útil para la depuración.
str("ab") == "ab"
str(8) == "8"

Parámetros

Parámetro Descripción
x required
El objeto que se convertirá.

tag_class

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

Crea un nuevo objeto tag_class, que define un esquema de atributos para una clase de etiquetas, que son objetos de datos que puede usar una extensión de módulo.

Parámetros

Parámetro Descripción
attrs default = {}
Es un diccionario para declarar todos los atributos de esta clase de etiqueta. Se asigna desde un nombre de atributo a un objeto de atributo (consulta el módulo attr).
doc default = ''
Es una descripción de la clase de etiqueta que se puede extraer con las herramientas de generación de documentación.

tuple

tuple tuple(x=())

Muestra una tupla con los mismos elementos que el valor iterable dado.
tuple([1, 2]) == (1, 2)
tuple((2, 3, 2)) == (2, 3, 2)
tuple({5: "a", 2: "b", 4: "c"}) == (5, 2, 4)

Parámetros

Parámetro Descripción
x default = ()
Es el objeto que se convertirá.

Tipo

string type(x)

Muestra el nombre de tipo de su argumento. Esto es útil para la depuración y la comprobación de tipos. Ejemplos:
type(2) == "int"
type([1]) == "list"
type(struct(a = 2)) == "struct"
Esta función podría cambiar en el futuro. Si quieres escribir código compatible con Python y prepararte para el futuro, úsalo solo para comparar valores que se muestran:
if type(x) == type([]):  # if x is a list

Parámetros

Parámetro Descripción
x required
Es el objeto del que se debe verificar el tipo.

use_extension

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

Devuelve un objeto proxy que representa una extensión de módulo. Se pueden invocar sus métodos para crear etiquetas de extensión de módulo.

Parámetros

Parámetro Descripción
extension_bzl_file required
Una etiqueta para el archivo de Starlark que define la extensión del módulo.
extension_name required
Es el nombre de la extensión del módulo que se usará. El archivo Starlark debe exportar un símbolo con este nombre.
dev_dependency default = False
Si se establece como "true", este uso de la extensión del módulo se ignorará si el módulo actual no es el módulo raíz o si se habilita `--ignore_dev_dependency`.
isolate default = False
Experimental. Este parámetro es experimental y puede cambiar en cualquier momento. No dependas de ello. Se puede habilitar de manera experimental estableciendo ---experimental_isolated_extension_usages.
Si es verdadero, este uso de la extensión del módulo se aislará de todos los demás usos, tanto en este módulo como en otros. Las etiquetas creadas para este uso no afectan otros usos, y los repositorios que genere la extensión para este uso serán distintos de todos los demás repositorios generados por la extensión.

Por el momento, este parámetro es experimental y solo está disponible con la marca --experimental_isolated_extension_usages.

use_repo

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

Importa uno o más repositorios generados por la extensión de módulo determinada al alcance del módulo actual.

Parámetros

Parámetro Descripción
extension_proxy required
Un objeto de proxy de extensión del módulo que muestra una llamada a use_extension.
args required
Son los nombres de los repositorios que se importarán.
kwargs required
Especifica ciertos repositorios para importar al alcance del módulo actual con diferentes nombres. Las claves deben ser el nombre que se usará en el alcance actual, mientras que los valores deben ser los nombres originales exportados por la extensión del módulo.

visibilidad

None visibility(value)

Establece la visibilidad de la carga del módulo .bzl que se está inicializando en el momento.

La visibilidad de carga de un módulo determina si otros archivos BUILD y .bzl pueden cargarlo o no. (Esto es diferente de la visibilidad objetivo del archivo fuente .bzl subyacente, que determina si el archivo puede aparecer como una dependencia de otros objetivos). La visibilidad de carga funciona a nivel de paquetes: para cargar un módulo, el archivo que realiza la carga debe encontrarse en un paquete al que se le haya otorgado visibilidad para el módulo. Un módulo siempre se puede cargar dentro de su propio paquete, sin importar su visibilidad.

Solo se puede llamar a visibility() una vez por archivo .bzl y solo en el nivel superior, no dentro de una función. El estilo preferido es colocar esta llamada inmediatamente debajo de las sentencias load() y cualquier lógica breve necesaria para determinar el argumento.

Si se configura la marca --check_bzl_visibility como falsa, las infracciones de visibilidad de carga emitirán advertencias, pero no fallarán la compilación.

Parámetros

Parámetro Descripción
value required
Una lista de strings de especificación de paquete o una sola string de especificación de paquete.

Las especificaciones del paquete tienen el mismo formato que para package_group, excepto que no se permiten especificaciones de paquete negativas. Es decir, una especificación puede tener los siguientes formatos:

  • "//foo": El paquete //foo
  • "//foo/...": Es el paquete //foo y todos sus subpaquetes.
  • "public" o "private": Todos los paquetes o ninguno, respectivamente.

No se permite la sintaxis "@". Todas las especificaciones se interpretan en relación con el repositorio del módulo actual.

Si value es una lista de cadenas, el conjunto de paquetes a los que se les otorgó visibilidad para este módulo es la unión de los paquetes representados por cada especificación. (Una lista vacía tiene el mismo efecto que private). Si value es una sola string, se trata como si fuera la lista singleton [value].

Ten en cuenta que las marcas --incompatible_package_group_has_public_syntax y --incompatible_fix_package_group_reporoot_syntax no tienen efecto en este argumento. Los valores "public" y "private" siempre están disponibles, y "//..." siempre se interpreta como "todos los paquetes del repositorio actual".

lugar de trabajo

None workspace(name)

Esta función solo se puede usar en un archivo WORKSPACE y debe declararse antes que todas las demás funciones del archivo WORKSPACE. Cada archivo WORKSPACE debe tener una función workspace.

Establece el nombre de este lugar de trabajo. Los nombres del lugar de trabajo deben ser una descripción del proyecto al estilo de un paquete Java, con guiones bajos como separadores, p.ej., github.com/bazelbuild/bazel debe usar com_github_bazelbuild_bazel.

Este nombre se usa para el directorio en el que se almacenan los archivos de ejecución del repositorio. Por ejemplo, si hay un archivo de ejecución foo/bar en el repositorio local y el archivo WORKSPACE contiene workspace(name = 'baz'), el archivo de ejecución estará disponible en mytarget.runfiles/baz/foo/bar. Si no se especifica un nombre de lugar de trabajo, el archivo de ejecución se vinculará con un symlink a bar.runfiles/foo/bar.

Los nombres de las reglas del repositorio remoto deben ser nombres válidos de lugares de trabajo. Por ejemplo, puedes tener maven_jar(name = 'foo'), pero no maven_jar(name = 'foo%bar'), ya que Bazel intentaría escribir un archivo WORKSPACE para el maven_jar que contenga workspace(name = 'foo%bar').

Parámetros

Parámetro Descripción
name required
el nombre del lugar de trabajo. Deben comenzar con una letra y solo pueden contener letras, números, guiones bajos, guiones y puntos.

zip

list zip(*args)

Muestra un list de tuple, en el que la tupla i-th contiene el elemento i-ésimo de cada una de las secuencias de argumentos o los iterables. La lista tiene el tamaño de la entrada más corta. Con un solo argumento iterable, se muestra una lista de 1 tuplas. Sin argumentos, muestra una lista vacía. Ejemplos:
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)]

Parámetros

Parámetro Descripción
args required
para comprimir.