ATTR

Este es un módulo de nivel superior para definir los esquemas de atributos de una regla o un aspecto. Cada función muestra un objeto que representa el esquema de un solo atributo. Estos objetos se usan como valores del argumento del diccionario attrs de rule() y aspect().

Consulta la página Reglas para obtener más información sobre cómo definir y usar atributos.

Miembros

bool

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

Crea un esquema para un atributo booleano.

Parámetros

Parámetro Descripción
default default = False
Es un valor predeterminado que se usa si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla.
doc default = ''
Es una descripción del atributo que se puede extraer mediante herramientas de generación de documentación.
mandatory predeterminado = Falso
Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default).

int

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

Crea un esquema para un atributo de número entero. El valor debe estar dentro del rango de 32 bits con firma.

Parámetros

Parámetro Descripción
default default = 0
Es un valor predeterminado que se usa si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla.
doc default = ''
Es una descripción del atributo que se puede extraer mediante herramientas de generación de documentación.
mandatory predeterminado = Falso
Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default).
values sequence of ints; predeterminado = []
Es la lista de valores permitidos para el atributo. Si se proporciona otro valor, se genera un error.

int_list

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

Crea un esquema para un atributo de lista de números enteros. Cada elemento debe estar dentro del rango de 32 bits firmado.

Parámetros

Parámetro Descripción
mandatory predeterminado = Falso
Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default).
allow_empty default = True
Es verdadero si el atributo puede estar vacío.
default sequence of ints; default = []
Es un valor predeterminado que se usa si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla.
doc default = ''
Es una descripción del atributo que se puede extraer mediante herramientas de generación de documentación.

etiqueta

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

Crea un esquema para un atributo de etiqueta. Este es un atributo de dependencia.

Este atributo contiene valores Label únicos. Si se proporciona una string en lugar de un Label, se convertirá mediante el constructor de etiquetas. Las partes relativas de la ruta de acceso de la etiqueta, incluido el repositorio (posiblemente con un nombre nuevo), se resuelven con respecto al paquete del destino con instancia.

En el momento del análisis (dentro de la función de implementación de la regla), cuando se recupera el valor del atributo de ctx.attr, las etiquetas se reemplazan por los Target correspondientes. Esto te permite acceder a los proveedores de las dependencias del destino actual.

Además de los archivos fuente comunes, este tipo de atributo suele usarse para hacer referencia a una herramienta, por ejemplo, un compilador. Estas herramientas se consideran dependencias, al igual que los archivos fuente. Para evitar que los usuarios deban especificar la etiqueta de la herramienta cada vez que usen la regla en sus archivos BUILD, puedes codificar la etiqueta de una herramienta canónica como el valor default de este atributo. Si también quieres evitar que los usuarios anulen esta configuración predeterminada, puedes establecer el atributo como privado. Para ello, asígnale un nombre que comience con un guion bajo. Consulta la página Reglas para obtener más información.

Parámetros

Parámetro Descripción
default Label; or string; or LateBoundDefault; or NativeComputedDefault; or function; or None; predeterminado = Ninguno
Es un valor predeterminado que se usa si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla.Usa una cadena o la función Label para especificar un valor predeterminado, por ejemplo, attr.label(default = "//a:b").
doc default = ''
Es una descripción del atributo que se puede extraer mediante herramientas de generación de documentación.
executable default = False
Es verdadero si la dependencia tiene que ser ejecutable. Esto significa que la etiqueta debe hacer referencia a un archivo ejecutable o a una regla que genere un archivo ejecutable. Accede a la etiqueta con ctx.executable.<attribute_name>.
allow_files bool; or sequence of strings; or None; predeterminado = Ninguno
Indica si se permiten objetivos File. Puede ser True, False (predeterminado) o una lista de extensiones de archivo permitidas (por ejemplo, [".cc", ".cpp"]).
allow_single_file default = None
Es similar a allow_files, con la restricción de que la etiqueta debe corresponder a un solo File. Accede a él a través de ctx.file.<attribute_name>.
mandatory predeterminado = Falso
Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default).
providers default = []
Son los proveedores que debe proporcionar cualquier dependencia que aparezca en este atributo.

El formato de este argumento es una lista de listas de proveedores: objetos *Info que muestra provider() (o, en el caso de un proveedor heredado, su nombre de cadena). La dependencia debe mostrar TODOS los proveedores mencionados en al menos UNO de las listas internas. Para tu comodidad, este argumento también puede ser una lista de proveedores de un solo nivel, en cuyo caso está encapsulado en una lista externa con un elemento.

allow_rules sequence of strings; or None; default = None
Los objetivos de reglas (nombre de las clases) están permitidos. Esta función dejó de estar disponible (se conserva solo para fines de compatibilidad). En su lugar, usa proveedores.
cfg default = Ninguno
Es la configuración del atributo. Puede ser "exec", que indica que la dependencia se compila para execution platform, o "target", que indica que la dependencia se compila para target platform. Un ejemplo típico de la diferencia es cuando se compilan apps para dispositivos móviles, donde target platform es Android o iOS, mientras que execution platform es Linux, macOS o Windows. Se requiere este parámetro si executable es verdadero para evitar la compilación accidental de herramientas del host en la configuración de destino. "target" no tiene efecto semántico, así que no lo configures cuando executable sea False, a menos que realmente ayude a aclarar tus intenciones.
aspects sequence of Aspects; default = []
Aspectos que se deben aplicar a la dependencia o a las dependencias especificadas por este atributo.

label_keyed_string_dict

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

Crea un esquema para un atributo que contiene un diccionario, donde las claves son etiquetas y los valores son cadenas. Este es un atributo de dependencia.

Este atributo contiene valores Label únicos. Si se proporciona una string en lugar de un Label, se convertirá mediante el constructor de etiquetas. Las partes relativas de la ruta de acceso de la etiqueta, incluido el repositorio (posiblemente con un nombre nuevo), se resuelven con respecto al paquete del destino con instancia.

En el momento del análisis (dentro de la función de implementación de la regla), cuando se recupera el valor del atributo de ctx.attr, las etiquetas se reemplazan por los Target correspondientes. Esto te permite acceder a los proveedores de las dependencias del destino actual.

Parámetros

Parámetro Descripción
allow_empty default = True
Es verdadero si el atributo puede estar vacío.
default dict; or function; default = {}
Un valor predeterminado que se debe usar si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla.Usa cadenas o la función Label para especificar valores predeterminados; por ejemplo, attr.label_keyed_string_dict(default = {"//a:b": "value", "//a:c": "string"}).
doc default = ''
Es una descripción del atributo que se puede extraer mediante herramientas de generación de documentación.
allow_files bool; or sequence of strings; or None; predeterminado = Ninguno
Indica si se permiten objetivos File. Puede ser True, False (predeterminado) o una lista de extensiones de archivo permitidas (por ejemplo, [".cc", ".cpp"]).
allow_rules sequence of strings; or None; default = None
Los objetivos de reglas (nombre de las clases) están permitidos. Esta función dejó de estar disponible (se conserva solo para fines de compatibilidad). En su lugar, usa proveedores.
providers default = []
Son los proveedores que debe proporcionar cualquier dependencia que aparezca en este atributo.

El formato de este argumento es una lista de listas de proveedores: objetos *Info que muestra provider() (o, en el caso de un proveedor heredado, su nombre de cadena). La dependencia debe mostrar TODOS los proveedores mencionados en al menos UNO de las listas internas. Para tu comodidad, este argumento también puede ser una lista de proveedores de un solo nivel, en cuyo caso está encapsulado en una lista externa con un elemento.

flags sequence of strings; default = []
Obsoleto, se quitará.
mandatory predeterminado = Falso
Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default).
cfg default = Ninguno
Es la configuración del atributo. Puede ser "exec", que indica que la dependencia se compila para execution platform, o "target", que indica que la dependencia se compila para target platform. Un ejemplo típico de la diferencia es cuando se compilan apps para dispositivos móviles, donde target platform es Android o iOS, mientras que execution platform es Linux, macOS o Windows.
aspects sequence of Aspects; default = []
Aspectos que se deben aplicar a la dependencia o a las dependencias especificadas por este atributo.

label_list

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

Crea un esquema para un atributo de lista de etiquetas. Este es un atributo de dependencia.

Este atributo contiene valores Label únicos. Si se proporciona una string en lugar de un Label, se convertirá mediante el constructor de etiquetas. Las partes relativas de la ruta de acceso de la etiqueta, incluido el repositorio (posiblemente con un nombre nuevo), se resuelven con respecto al paquete del destino con instancia.

En el momento del análisis (dentro de la función de implementación de la regla), cuando se recupera el valor del atributo de ctx.attr, las etiquetas se reemplazan por los Target correspondientes. Esto te permite acceder a los proveedores de las dependencias del destino actual.

Parámetros

Parámetro Descripción
allow_empty default = True
Es verdadero si el atributo puede estar vacío.
default sequence of Labels; or function; predeterminado = []
Es un valor predeterminado que se usa si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla.Usa cadenas o la función Label para especificar valores predeterminados, por ejemplo, attr.label_list(default = ["//a:b", "//a:c"]).
doc default = ''
Es una descripción del atributo que se puede extraer mediante herramientas de generación de documentación.
allow_files bool; or sequence of strings; or None; predeterminado = Ninguno
Indica si se permiten objetivos File. Puede ser True, False (predeterminado) o una lista de extensiones de archivo permitidas (por ejemplo, [".cc", ".cpp"]).
allow_rules sequence of strings; or None; default = None
Los objetivos de reglas (nombre de las clases) están permitidos. Esta función dejó de estar disponible (se conserva solo para fines de compatibilidad). En su lugar, usa proveedores.
providers default = []
Son los proveedores que debe proporcionar cualquier dependencia que aparezca en este atributo.

El formato de este argumento es una lista de listas de proveedores: objetos *Info que muestra provider() (o, en el caso de un proveedor heredado, su nombre de cadena). La dependencia debe mostrar TODOS los proveedores mencionados en al menos UNO de las listas internas. Para tu comodidad, este argumento también puede ser una lista de proveedores de un solo nivel, en cuyo caso está encapsulado en una lista externa con un elemento.

flags sequence of strings; default = []
Obsoleto, se quitará.
mandatory predeterminado = Falso
Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default).
cfg default = Ninguno
Es la configuración del atributo. Puede ser "exec", que indica que la dependencia se compila para execution platform, o "target", que indica que la dependencia se compila para target platform. Un ejemplo típico de la diferencia es cuando se compilan apps para dispositivos móviles, donde target platform es Android o iOS, mientras que execution platform es Linux, macOS o Windows.
aspects sequence of Aspects; default = []
Aspectos que se deben aplicar a la dependencia o a las dependencias especificadas por este atributo.

salida

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

Crea un esquema para un atributo de salida (etiqueta).

Este atributo contiene valores Label únicos. Si se proporciona una string en lugar de un Label, se convertirá mediante el constructor de etiquetas. Las partes relativas de la ruta de acceso de la etiqueta, incluido el repositorio (posiblemente con un nombre nuevo), se resuelven con respecto al paquete del destino con instancia.

En el momento del análisis, el File correspondiente se puede recuperar con ctx.outputs.

Parámetros

Parámetro Descripción
doc default = ''
Es una descripción del atributo que se puede extraer mediante herramientas de generación de documentación.
mandatory predeterminado = Falso
Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default).

output_list

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

Crea un esquema para un atributo de lista de resultados.

Este atributo contiene valores Label únicos. Si se proporciona una string en lugar de un Label, se convertirá mediante el constructor de etiquetas. Las partes relativas de la ruta de acceso de la etiqueta, incluido el repositorio (posiblemente con un nombre nuevo), se resuelven con respecto al paquete del destino con instancia.

En el momento del análisis, el File correspondiente se puede recuperar con ctx.outputs.

Parámetros

Parámetro Descripción
allow_empty default = True
Es verdadero si el atributo puede estar vacío.
doc default = ''
Es una descripción del atributo que se puede extraer mediante herramientas de generación de documentación.
mandatory predeterminado = Falso
Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default).

cadena

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

Crea un esquema para un atributo de string.

Parámetros

Parámetro Descripción
default string; or NativeComputedDefault; default = ''
Es un valor predeterminado que se usa si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla.
doc default = ''
Es una descripción del atributo que se puede extraer mediante herramientas de generación de documentación.
mandatory predeterminado = Falso
Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default).
values sequence of strings; predeterminado = []
Es la lista de valores permitidos para el atributo. Si se proporciona otro valor, se genera un error.

string_dict

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

Crea un esquema para un atributo que contiene un diccionario, en el que las claves y los valores son cadenas.

Parámetros

Parámetro Descripción
allow_empty default = True
Es verdadero si el atributo puede estar vacío.
default default = {}
Un valor predeterminado que se debe usar si no se proporciona ningún valor para este atributo al crear una instancia de la regla.
doc default = ''
Es una descripción del atributo que se puede extraer mediante herramientas de generación de documentación.
mandatory predeterminado = Falso
Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default).

string_list

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

Crea un esquema para un atributo de lista de cadenas.

Parámetros

Parámetro Descripción
mandatory predeterminado = Falso
Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default).
allow_empty default = True
Es verdadero si el atributo puede estar vacío.
default sequence of strings; or NativeComputedDefault; default = []
Es un valor predeterminado que se usa si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla.
doc default = ''
Es una descripción del atributo que se puede extraer mediante herramientas de generación de documentación.

string_list_dict

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

Crea un esquema para un atributo que contiene un diccionario, donde las claves son cadenas y los valores son listas de cadenas.

Parámetros

Parámetro Descripción
allow_empty default = True
Es verdadero si el atributo puede estar vacío.
default default = {}
Un valor predeterminado que se debe usar si no se proporciona ningún valor para este atributo al crear una instancia de la regla.
doc default = ''
Es una descripción del atributo que se puede extraer mediante herramientas de generación de documentación.
mandatory predeterminado = Falso
Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default).