ATTR

Informar un problema Ver fuente Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Este es un módulo de nivel superior para definir los esquemas de atributos de una regla o un aspecto. Cada función devuelve un objeto que representa el esquema de un solo atributo. Estos objetos se usan como los 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=None, mandatory=False)

Crea un esquema para un atributo booleano. El atributo ctx.attr correspondiente será del tipo bool.

Parámetros

Parámetro Descripción
default El valor predeterminado es False.
Es un valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se instancia la regla.
doc cadena o None; El valor predeterminado es None
Es una descripción del atributo que pueden extraer las herramientas de generación de documentación.
mandatory El valor predeterminado es False
. Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).

int

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

Crea un esquema para un atributo de número entero. El valor debe estar en el rango de 32 bits con signo. El atributo ctx.attr correspondiente será del tipo int.

Parámetros

Parámetro Descripción
default El valor predeterminado es 0.
Es un valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se instancia la regla.
doc cadena o None; El valor predeterminado es None
Es una descripción del atributo que pueden extraer las herramientas de generación de documentación.
mandatory El valor predeterminado es False
. Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).
values sequence de ints; el valor predeterminado es []
Lista de valores permitidos para el atributo. Se genera un error si se proporciona cualquier otro valor.

int_list

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

Crea un esquema para un atributo de lista de números enteros. Cada elemento debe estar en el rango de 32 bits con signo.

Parámetros

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

etiqueta

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

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

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

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 se suele usar 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 de forma rígida la etiqueta de una herramienta canónica como el valor default de este atributo. Si también quieres evitar que los usuarios anulen este valor predeterminado, puedes hacer que el atributo sea privado asignándole 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 Etiqueta, cadena, LateBoundDefault, NativeComputedDefault, función o None; el valor predeterminado es None
Es un valor predeterminado que se usará 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 cadena o None; El valor predeterminado es None
Es una descripción del atributo que pueden extraer las herramientas de generación de documentación.
executable El valor predeterminado es False
. Es verdadero si la dependencia debe 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, sequence de strings o None; el valor predeterminado es None
Indica si se permiten los objetivos de File. Puede ser True, False (predeterminado) o una lista de extensiones de archivo permitidas (por ejemplo, [".cc", ".cpp"]).
allow_single_file El valor predeterminado es None
. Es similar a allow_files, con la restricción de que la etiqueta debe corresponder a un solo File. Accede a ella a través de ctx.file.<attribute_name>.
mandatory El valor predeterminado es False
. Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).
providers El valor predeterminado es []
. 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 devuelve provider() (o, en el caso de un proveedor heredado, su nombre de cadena). La dependencia debe devolver TODOS los proveedores mencionados en al menos UNA de las listas internas. Para mayor comodidad, este argumento también puede ser una lista de un solo nivel de proveedores, en cuyo caso se incluye en una lista externa con un elemento. NO es obligatorio que la regla de la dependencia anuncie esos proveedores en su parámetro provides, pero se considera una práctica recomendada.

allow_rules sequence de strings o None; El valor predeterminado es None
Qué destinos de reglas (nombres de las clases) se permiten. Esta propiedad dejó de estar disponible (se mantiene solo por compatibilidad). En su lugar, usa proveedores.
cfg El valor predeterminado es None
. 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 se da cuando se compilan apps para dispositivos móviles, en las que target platform es Android o iOS, mientras que execution platform es Linux, macOS o Windows. Este parámetro es obligatorio si executable es verdadero para evitar la compilación accidental de herramientas del host en la configuración de destino. "target" no tiene ningún efecto semántico, por lo que no debes establecerlo cuando executable es falso, a menos que realmente ayude a aclarar tus intenciones.
aspects sequence de Aspects; el valor predeterminado es []
Aspectos que se deben aplicar a la dependencia o las dependencias especificadas por este atributo.

label_keyed_string_dict

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

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

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

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 El valor predeterminado es True
. Es verdadero si el atributo puede estar vacío.
default dict o function; el valor predeterminado es {}
Es un valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se cree 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 cadena o None; El valor predeterminado es None
Es una descripción del atributo que pueden extraer las herramientas de generación de documentación.
allow_files bool, sequence de strings o None; el valor predeterminado es None
Indica si se permiten los objetivos de File. Puede ser True, False (predeterminado) o una lista de extensiones de archivo permitidas (por ejemplo, [".cc", ".cpp"]).
allow_rules sequence de strings o None; El valor predeterminado es None
Qué destinos de reglas (nombres de las clases) se permiten. Esta propiedad dejó de estar disponible (se mantiene solo por compatibilidad). En su lugar, usa proveedores.
providers El valor predeterminado es []
. 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 devuelve provider() (o, en el caso de un proveedor heredado, su nombre de cadena). La dependencia debe devolver TODOS los proveedores mencionados en al menos UNA de las listas internas. Para mayor comodidad, este argumento también puede ser una lista de un solo nivel de proveedores, en cuyo caso se incluye en una lista externa con un elemento. NO es obligatorio que la regla de la dependencia anuncie esos proveedores en su parámetro provides, pero se considera una práctica recomendada.

flags sequence de strings; el valor predeterminado es []
Obsoleto, se quitará.
mandatory El valor predeterminado es False
. Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).
cfg El valor predeterminado es None
. 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 se da cuando se compilan apps para dispositivos móviles, en las que target platform es Android o iOS, mientras que execution platform es Linux, macOS o Windows.
aspects sequence de Aspects; el valor predeterminado es []
Aspectos que se deben aplicar a la dependencia o las dependencias especificadas por este atributo.

label_list

Attribute attr.label_list(allow_empty=True, *, default=[], doc=None, 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. El atributo ctx.attr correspondiente será del tipo list de Targets.

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

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 El valor predeterminado es True
. Es verdadero si el atributo puede estar vacío.
default sequence de Labels o function; el valor predeterminado es []
Es un valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se instancia la regla.Usa cadenas o la función Label para especificar valores predeterminados, por ejemplo, attr.label_list(default = ["//a:b", "//a:c"]).
doc cadena o None; El valor predeterminado es None
Es una descripción del atributo que pueden extraer las herramientas de generación de documentación.
allow_files bool, sequence de strings o None; el valor predeterminado es None
Indica si se permiten los objetivos de File. Puede ser True, False (predeterminado) o una lista de extensiones de archivo permitidas (por ejemplo, [".cc", ".cpp"]).
allow_rules sequence de strings o None; El valor predeterminado es None
Qué destinos de reglas (nombres de las clases) se permiten. Esta propiedad dejó de estar disponible (se mantiene solo por compatibilidad). En su lugar, usa proveedores.
providers El valor predeterminado es []
. 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 devuelve provider() (o, en el caso de un proveedor heredado, su nombre de cadena). La dependencia debe devolver TODOS los proveedores mencionados en al menos UNA de las listas internas. Para mayor comodidad, este argumento también puede ser una lista de un solo nivel de proveedores, en cuyo caso se incluye en una lista externa con un elemento. NO es obligatorio que la regla de la dependencia anuncie esos proveedores en su parámetro provides, pero se considera una práctica recomendada.

flags sequence de strings; el valor predeterminado es []
Obsoleto, se quitará.
mandatory El valor predeterminado es False
. Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).
cfg El valor predeterminado es None
. 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 se da cuando se compilan apps para dispositivos móviles, en las que target platform es Android o iOS, mientras que execution platform es Linux, macOS o Windows.
aspects sequence de Aspects; el valor predeterminado es []
Aspectos que se deben aplicar a la dependencia o las dependencias especificadas por este atributo.

output

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

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

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

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

Parámetros

Parámetro Descripción
doc cadena o None; El valor predeterminado es None
Es una descripción del atributo que pueden extraer las herramientas de generación de documentación.
mandatory El valor predeterminado es False
. Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).

output_list

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

Crea un esquema para un atributo de lista de resultados.

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

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

Parámetros

Parámetro Descripción
allow_empty El valor predeterminado es True
. Es verdadero si el atributo puede estar vacío.
doc cadena o None; El valor predeterminado es None
Es una descripción del atributo que pueden extraer las herramientas de generación de documentación.
mandatory El valor predeterminado es False
. Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).

string

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

Crea un esquema para un atributo de cadena.

Parámetros

Parámetro Descripción
default string o NativeComputedDefault; el valor predeterminado es ''
Es un valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se instancia la regla.
doc cadena o None; El valor predeterminado es None
Es una descripción del atributo que pueden extraer las herramientas de generación de documentación.
mandatory El valor predeterminado es False
. Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).
values sequence de strings; el valor predeterminado es []
Es la lista de valores permitidos para el atributo. Se genera un error si se proporciona cualquier otro valor.

string_dict

Attribute attr.string_dict(allow_empty=True, *, default={}, doc=None, 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 El valor predeterminado es True
. Es verdadero si el atributo puede estar vacío.
default El valor predeterminado es {}.
Es un valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se instancia la regla.
doc cadena o None; El valor predeterminado es None
Es una descripción del atributo que pueden extraer las herramientas de generación de documentación.
mandatory El valor predeterminado es False
. Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).

string_list

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

Crea un esquema para un atributo de lista de cadenas.

Parámetros

Parámetro Descripción
mandatory El valor predeterminado es False
. Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).
allow_empty El valor predeterminado es True
. Es verdadero si el atributo puede estar vacío.
default sequence de strings o NativeComputedDefault; el valor predeterminado es []
Es un valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se instancia la regla.
doc cadena o None; El valor predeterminado es None
Es una descripción del atributo que pueden extraer las herramientas de generación de documentación.

string_list_dict

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

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

Parámetros

Parámetro Descripción
allow_empty El valor predeterminado es True
. Es verdadero si el atributo puede estar vacío.
default El valor predeterminado es {}.
Es un valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se instancia la regla.
doc cadena o None; El valor predeterminado es None
Es una descripción del atributo que pueden extraer las herramientas de generación de documentación.
mandatory El valor predeterminado es False
. Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).