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 atributo único. 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
- Número entero
- int_list
- label
- label_keyed_string_dict
- label_list
- Resultado
- output_list
- string
- string_dict
- string_list
- string_list_dict
bool
Attribute attr.bool(configurable=unbound, 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 |
---|---|
configurable
|
bool; o no delimitados;
el valor predeterminado es unbound Este argumento solo se puede especificar para un atributo de una macro simbólica. Si Para un atributo de una regla o un aspecto, |
default
|
bool;
el valor predeterminado es False El valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla. |
doc
|
string; o None ;
el valor predeterminado es None Una descripción del atributo que se puede extraer con herramientas de generación de documentación. |
mandatory
|
bool;
el valor predeterminado es False Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default ).
|
int
Attribute attr.int(configurable=unbound, 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 firma. El atributo
ctx.attr
correspondiente será del tipo int
.
Parámetros
Parámetro | Descripción |
---|---|
configurable
|
bool; o no delimitados;
el valor predeterminado es unbound Este argumento solo se puede especificar para un atributo de una macro simbólica. Si Para un atributo de una regla o un aspecto, |
default
|
int;
el valor predeterminado es 0 El valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla. |
doc
|
string; o None ;
el valor predeterminado es None Una descripción del atributo que se puede extraer con herramientas de generación de documentación. |
mandatory
|
bool;
el valor predeterminado es False Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default ).
|
values
|
secuencia de ints;
el valor predeterminado es [] Es la lista de valores permitidos para el atributo. Se genera un error si se proporciona otro valor. |
int_list
Attribute attr.int_list(mandatory=False, allow_empty=True, *, configurable=unbound, 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 firma.
Parámetros
Parámetro | Descripción |
---|---|
mandatory
|
bool;
el valor predeterminado es False Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default ).
|
allow_empty
|
bool;
el valor predeterminado es True Es verdadero si el atributo puede estar vacío. |
configurable
|
bool; o no delimitados;
el valor predeterminado es unbound Este argumento solo se puede especificar para un atributo de una macro simbólica. Si Para un atributo de una regla o un aspecto, |
default
|
secuencia de ints;
el valor predeterminado es [] El valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla. |
doc
|
string; o None ;
el valor predeterminado es None Una descripción del atributo que se puede extraer con herramientas de generación de documentación. |
etiqueta
Attribute attr.label(configurable=unbound, default=None, doc=None, executable=False, allow_files=None, allow_single_file=None, mandatory=False, skip_validations=False, providers=[], allow_rules=None, cfg=None, aspects=[], flags=[])
Crea un esquema para un atributo de etiqueta. Este es un atributo de dependencia.
Este atributo contiene valores 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 acceso de la etiqueta, incluido el repositorio (posiblemente renombrado) se resuelven con respecto al paquete de destino en el que se creó la instancia.
Durante el 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 las Target
correspondientes. Esto te permite acceder a los proveedores de las dependencias del objetivo actual.
Además de los archivos fuente comunes, este tipo de atributo se usa a menudo 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 usan 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 este valor predeterminado, puedes establecer el atributo como privado otorgá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 |
---|---|
configurable
|
bool; o no delimitados;
el valor predeterminado es unbound Este argumento solo se puede especificar para un atributo de una macro simbólica. Si Para un atributo de una regla o un aspecto, |
default
|
Etiqueta; o string; o LateBoundDefault o NativeComputedDefault; o función; o None ;
el valor predeterminado es None 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 string o la función Label para especificar un valor predeterminado, por ejemplo, attr.label(default = "//a:b") .
|
doc
|
string; o None ;
el valor predeterminado es None Una descripción del atributo que se puede extraer con herramientas de generación de documentación. |
executable
|
bool;
el valor predeterminado es False Es verdadero si la dependencia debe ser ejecutable. Esto significa que la etiqueta debe referirse 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; o secuencia de cadenas; o None ;
la configuración predeterminada es None Si se permiten objetivos File . Puede ser True , False (configuración predeterminada) o una lista de extensiones de archivo permitidas (por ejemplo, [".cc", ".cpp"] ).
|
allow_single_file
|
el valor predeterminado es None Esto es similar a allow_files , con la restricción de que la etiqueta debe corresponder a un solo File. Accede a través de ctx.file.<attribute_name> .
|
mandatory
|
bool;
el valor predeterminado es False Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default ).
|
skip_validations
|
bool;
el valor predeterminado es False Si es verdadero, no se ejecutarán las acciones de validación de dependencias transitivas de este atributo. Esta es una mitigación temporal y se quitará en el futuro. |
providers
|
secuencia;
el valor predeterminado es [] 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 |
allow_rules
|
secuencia de strings; o None ;
el valor predeterminado es None Qué objetivos de la regla (nombre de las clases) están permitidos Esta función dejó de estar disponible (se mantiene solo para fines de compatibilidad). En su lugar, usa proveedores. |
cfg
|
el valor predeterminado es None Configuración del atributo Puede ser "exec" , lo que indica que la dependencia se compiló para execution platform , o "target" , que indica que la dependencia se compiló 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 . Este parámetro es obligatorio si executable se establece en True para evitar que se compilen herramientas de host por accidente en la configuración de destino. "target" no tiene efecto semántico, por lo que no debes configurarlo cuando executable es falso, a menos que realmente ayude a aclarar tus intenciones.
|
aspects
|
secuencia de Aspectos
el valor predeterminado es [] Aspectos que se deben aplicar a la dependencia o dependencias especificadas por este atributo. |
flags
|
secuencia de strings;
el valor predeterminado es [] Se quitará como obsoleto. |
label_keyed_string_dict
Attribute attr.label_keyed_string_dict(allow_empty=True, *, configurable=unbound, 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 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 acceso de la etiqueta, incluido el repositorio (posiblemente renombrado) se resuelven con respecto al paquete de destino en el que se creó la instancia.
Durante el 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 las Target
correspondientes. Esto te permite acceder a los proveedores de las dependencias del objetivo actual.
Parámetros
Parámetro | Descripción |
---|---|
allow_empty
|
bool;
el valor predeterminado es True Es verdadero si el atributo puede estar vacío. |
configurable
|
bool; o no delimitados;
el valor predeterminado es unbound Este argumento solo se puede especificar para un atributo de una macro simbólica. Si Para un atributo de una regla o un aspecto, |
default
|
dict; o función;
el valor predeterminado es {} El valor predeterminado que se usará si no se proporciona un valor para este atributo cuando se crea una instancia de la regla.Usa strings o la función Label para especificar valores predeterminados, por ejemplo, attr.label_keyed_string_dict(default = {"//a:b": "value", "//a:c": "string"}) .
|
doc
|
string; o None ;
el valor predeterminado es None Una descripción del atributo que se puede extraer con herramientas de generación de documentación. |
allow_files
|
bool; o secuencia de cadenas; o None ;
la configuración predeterminada es None Si se permiten objetivos File . Puede ser True , False (configuración predeterminada) o una lista de extensiones de archivo permitidas (por ejemplo, [".cc", ".cpp"] ).
|
allow_rules
|
secuencia de strings; o None ;
el valor predeterminado es None Qué objetivos de la regla (nombre de las clases) están permitidos Esta función dejó de estar disponible (se mantiene solo para fines de compatibilidad). En su lugar, usa proveedores. |
providers
|
secuencia;
el valor predeterminado es [] 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 |
flags
|
secuencia de strings;
el valor predeterminado es [] Se quitará como obsoleto. |
mandatory
|
bool;
el valor predeterminado es False Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default ).
|
cfg
|
el valor predeterminado es None Configuración del atributo Puede ser "exec" , lo que indica que la dependencia se compiló para execution platform , o "target" , que indica que la dependencia se compiló 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
|
secuencia de Aspectos
el valor predeterminado es [] Aspectos que se deben aplicar a la dependencia o dependencias especificadas por este atributo. |
label_list
Attribute attr.label_list(allow_empty=True, *, configurable=unbound, default=[], doc=None, allow_files=None, allow_rules=None, providers=[], flags=[], mandatory=False, skip_validations=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 Target
.
Este atributo contiene valores 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 acceso de la etiqueta, incluido el repositorio (posiblemente renombrado) se resuelven con respecto al paquete de destino en el que se creó la instancia.
Durante el 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 las Target
correspondientes. Esto te permite acceder a los proveedores de las dependencias del objetivo actual.
Parámetros
Parámetro | Descripción |
---|---|
allow_empty
|
bool;
el valor predeterminado es True Es verdadero si el atributo puede estar vacío. |
configurable
|
bool; o no delimitados;
el valor predeterminado es unbound Este argumento solo se puede especificar para un atributo de una macro simbólica. Si Para un atributo de una regla o un aspecto, |
default
|
secuencia de Etiquetas; o función;
la configuración predeterminada es [] El valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla.Usa strings o la función Label para especificar valores predeterminados, por ejemplo, attr.label_list(default = ["//a:b", "//a:c"]) .
|
doc
|
string; o None ;
el valor predeterminado es None Una descripción del atributo que se puede extraer con herramientas de generación de documentación. |
allow_files
|
bool; o secuencia de cadenas; o None ;
la configuración predeterminada es None Si se permiten objetivos File . Puede ser True , False (configuración predeterminada) o una lista de extensiones de archivo permitidas (por ejemplo, [".cc", ".cpp"] ).
|
allow_rules
|
secuencia de strings; o None ;
el valor predeterminado es None Qué objetivos de la regla (nombre de las clases) están permitidos Esta función dejó de estar disponible (se mantiene solo para fines de compatibilidad). En su lugar, usa proveedores. |
providers
|
secuencia;
el valor predeterminado es [] 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 |
flags
|
secuencia de strings;
el valor predeterminado es [] Se quitará como obsoleto. |
mandatory
|
bool;
el valor predeterminado es False Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default ).
|
skip_validations
|
bool;
el valor predeterminado es False Si es verdadero, no se ejecutarán las acciones de validación de dependencias transitivas de este atributo. Esta es una mitigación temporal y se quitará en el futuro. |
cfg
|
el valor predeterminado es None Configuración del atributo Puede ser "exec" , lo que indica que la dependencia se compiló para execution platform , o "target" , que indica que la dependencia se compiló 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
|
secuencia de Aspectos
el valor predeterminado es [] Aspectos que se deben aplicar a la dependencia o 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 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 acceso de la etiqueta, incluido el repositorio (posiblemente renombrado) se resuelven con respecto al paquete de destino en el que se creó la instancia.
En el momento del análisis, se puede recuperar el File
correspondiente con ctx.outputs
.
Parámetros
Parámetro | Descripción |
---|---|
doc
|
string; o None ;
el valor predeterminado es None Una descripción del atributo que se puede extraer con herramientas de generación de documentación. |
mandatory
|
bool;
el valor predeterminado es False 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=None, mandatory=False)Crea un esquema para un atributo de lista de salidas.
Este atributo contiene valores 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 acceso de la etiqueta, incluido el repositorio (posiblemente renombrado) se resuelven con respecto al paquete de destino en el que se creó la instancia.
En el momento del análisis, se puede recuperar el File
correspondiente con ctx.outputs
.
Parámetros
Parámetro | Descripción |
---|---|
allow_empty
|
bool;
el valor predeterminado es True Es verdadero si el atributo puede estar vacío. |
doc
|
string; o None ;
el valor predeterminado es None Una descripción del atributo que se puede extraer con herramientas de generación de documentación. |
mandatory
|
bool;
el valor predeterminado es False Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default ).
|
string
Attribute attr.string(configurable=unbound, default='', doc=None, mandatory=False, values=[])Crea un esquema para un atributo string.
Parámetros
Parámetro | Descripción |
---|---|
configurable
|
bool; o no delimitados;
el valor predeterminado es unbound Este argumento solo se puede especificar para un atributo de una macro simbólica. Si Para un atributo de una regla o un aspecto, |
default
|
string; o NativeComputedDefault;
el valor predeterminado es '' El valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla. |
doc
|
string; o None ;
el valor predeterminado es None Una descripción del atributo que se puede extraer con herramientas de generación de documentación. |
mandatory
|
bool;
el valor predeterminado es False Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default ).
|
values
|
secuencia de strings;
el valor predeterminado es [] Es la lista de valores permitidos para el atributo. Se genera un error si se proporciona otro valor. |
string_dict
Attribute attr.string_dict(allow_empty=True, *, configurable=unbound, 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
|
bool;
el valor predeterminado es True Es verdadero si el atributo puede estar vacío. |
configurable
|
bool; o no delimitados;
el valor predeterminado es unbound Este argumento solo se puede especificar para un atributo de una macro simbólica. Si Para un atributo de una regla o un aspecto, |
default
|
dict;
el valor predeterminado es {} El valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla. |
doc
|
string; o None ;
el valor predeterminado es None Una descripción del atributo que se puede extraer con herramientas de generación de documentación. |
mandatory
|
bool;
el valor predeterminado es False 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, *, configurable=unbound, default=[], doc=None)Crea un esquema para un atributo de lista de strings.
Parámetros
Parámetro | Descripción |
---|---|
mandatory
|
bool;
el valor predeterminado es False Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default ).
|
allow_empty
|
bool;
el valor predeterminado es True Es verdadero si el atributo puede estar vacío. |
configurable
|
bool; o no delimitados;
el valor predeterminado es unbound Este argumento solo se puede especificar para un atributo de una macro simbólica. Si Para un atributo de una regla o un aspecto, |
default
|
secuencia de strings; o NativeComputedDefault;
el valor predeterminado es [] El valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla. |
doc
|
string; o None ;
el valor predeterminado es None Una descripción del atributo que se puede extraer con herramientas de generación de documentación. |
string_list_dict
Attribute attr.string_list_dict(allow_empty=True, *, configurable=unbound, 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
|
bool;
el valor predeterminado es True Es verdadero si el atributo puede estar vacío. |
configurable
|
bool; o no delimitados;
el valor predeterminado es unbound Este argumento solo se puede especificar para un atributo de una macro simbólica. Si Para un atributo de una regla o un aspecto, |
default
|
dict;
el valor predeterminado es {} El valor predeterminado que se usará si no se proporciona ningún valor para este atributo cuando se crea una instancia de la regla. |
doc
|
string; o None ;
el valor predeterminado es None Una descripción del atributo que se puede extraer con herramientas de generación de documentación. |
mandatory
|
bool;
el valor predeterminado es False Si es verdadero, el valor debe especificarse de forma explícita (incluso si tiene un default ).
|