ATTR

Denuncia un problema Ver fuente Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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(), aspect(), repository_rule() y tag_class().

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

Miembros

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 sin vincular; el valor predeterminado es unbound
Este argumento solo se puede especificar para un atributo de una macro simbólica.

Si configurable se establece de forma explícita en False, el atributo de macro simbólica no se puede configurar; en otras palabras, no puede tomar un valor select(). Si el configurable no está vinculado o se establece explícitamente en True, el atributo se puede configurar y puede tener un valor select().

Para un atributo de una regla o un aspecto, configurable debe dejarse sin vincular. La mayoría de los atributos de reglas de Starlark siempre se pueden configurar, a excepción de los atributos de reglas attr.output(), attr.output_list() y attr.license(), que siempre son inconfigurables.

default bool; el valor predeterminado es False
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.
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 bool; 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(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 firmados. El atributo ctx.attr correspondiente será del tipo int.

Parámetros

Parámetro Descripción
configurable bool o sin vincular; el valor predeterminado es unbound
Este argumento solo se puede especificar para un atributo de una macro simbólica.

Si configurable se establece de forma explícita en False, el atributo de macro simbólica no se puede configurar; en otras palabras, no puede tomar un valor select(). Si el configurable no está vinculado o se establece explícitamente en True, el atributo se puede configurar y puede tener un valor select().

Para un atributo de una regla o un aspecto, configurable debe dejarse sin vincular. La mayoría de los atributos de reglas de Starlark siempre se pueden configurar, a excepción de los atributos de reglas attr.output(), attr.output_list() y attr.license(), que siempre son inconfigurables.

default int; El valor predeterminado es 0
Es un valor predeterminado que se debe usar si no se proporciona un valor para este atributo cuando se crea una instancia de 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 bool; el valor predeterminado es False
Si es verdadero, el valor se debe especificar de manera explícita (incluso si tiene un default).
values secuencia de int; el valor predeterminado es []
Es la 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, *, configurable=unbound, default=[], doc=None)

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

Parámetros

Parámetro Descripción
mandatory bool; El valor predeterminado es False
Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).
allow_empty bool; el valor predeterminado es True
Verdadero si el atributo puede estar vacío.
configurable bool o sin vincular; el valor predeterminado es unbound
Este argumento solo se puede especificar para un atributo de una macro simbólica.

Si configurable se configura explícitamente como False, el atributo de la macro simbólica no se puede configurar. En otras palabras, no puede tomar un valor select(). Si el configurable no está vinculado o se establece explícitamente en True, el atributo se puede configurar y puede tener un valor select().

Para un atributo de una regla o un aspecto, configurable debe dejarse sin vincular. La mayoría de los atributos de reglas de Starlark siempre se pueden configurar, a excepción de los atributos de reglas attr.output(), attr.output_list() y attr.license(), que siempre son inconfigurables.

default secuencia de int; el valor predeterminado es []
Es 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.
doc string o None; el valor predeterminado es None
Es una descripción del atributo que se puede extraer con las herramientas de generación de documentación.

etiqueta

Attribute attr.label(configurable=unbound, default=None, materializer=None, doc=None, executable=False, allow_files=None, allow_single_file=None, mandatory=False, skip_validations=False, providers=[], for_dependency_resolution=unbound, 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 únicos de Label. 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 con otro nombre), se resuelven en función del paquete del destino al que se le creó una 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 de origen 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 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 este valor predeterminado, puedes hacer que el atributo sea privado. Para ello, asígnale un nombre que comience con un guion bajo. Consulta la página Rules para obtener más información.

Parámetros

Parámetro Descripción
configurable bool o sin vincular; el valor predeterminado es unbound
Este argumento solo se puede especificar para un atributo de una macro simbólica.

Si configurable se configura explícitamente como False, el atributo de la macro simbólica no se puede configurar. En otras palabras, no puede tomar un valor select(). Si configurable no está delimitado o se establece de forma explícita en True, el atributo se puede configurar y puede tomar un valor select().

Para un atributo de una regla o un aspecto, configurable debe dejarse sin vincular. La mayoría de los atributos de reglas de Starlark siempre se pueden configurar, a excepción de los atributos de reglas attr.output(), attr.output_list() y attr.license(), que siempre son inconfigurables.

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 un 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").
materializer function; El valor predeterminado es None
Experimental. Este parámetro es experimental y puede cambiar en cualquier momento. No dependa de él. Se puede habilitar de forma experimental configurando --experimental_dormant_deps
Si se configura, el atributo materializa las dependencias inactivas de la clausura transitiva. El valor de este parámetro debe ser una función que obtenga acceso a los valores de los atributos de la regla que no sean dependencias o que estén marcados como disponibles para la resolución de dependencias. Debe mostrar una dependencia inactiva o una lista de ellas según el tipo del atributo.
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 bool; 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; o secuencia de cadenas; o None; El valor predeterminado es None
Indica si se permiten los destinos 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
Esto es similar a allow_files, con la restricción de que la etiqueta debe corresponder a un solo archivo. Accede a él a través de ctx.file.<attribute_name>.
mandatory bool; El valor predeterminado es False
Si es verdadero, el valor se debe especificar 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 las dependencias transitivas de este atributo. Esta es una mitigación temporal y SE quitará en el futuro.
providers sequence; 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 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 UNA de las listas internas. Para tu comodidad, este argumento también puede ser una lista de proveedores de un solo nivel, en cuyo caso se une en una lista externa con un elemento. NO es necesario que la regla de la dependencia anuncie esos proveedores en su parámetro provides. Sin embargo, se considera una práctica recomendada.

for_dependency_resolution El valor predeterminado es unbound
Si se establece, el atributo está disponible para los materializadores. Solo se puede hacer referencia a reglas marcadas con la marca del mismo nombre a través de esos atributos.
allow_rules secuencia de strings o None. El valor predeterminado es None
Los objetivos de la regla (nombre de las clases) están permitidos. Esta función dejó de estar disponible (se conserva solo por motivos de compatibilidad). Usa proveedores en su lugar.
cfg El valor predeterminado es None
. Configuración del atributo. Puede ser "exec", 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, 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 de host 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 []
. Son los aspectos que se deben aplicar a la o las dependencias especificadas por este atributo.
flags Secuencia de cadenas. El valor predeterminado es []
. Está obsoleto y se quitará.

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=[], for_dependency_resolution=unbound, 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 únicos de Label. 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 (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 bool; El valor predeterminado es True
Es verdadero si el atributo puede estar vacío.
configurable bool o no delimitado; el valor predeterminado es unbound
Este argumento solo se puede especificar para un atributo de una macro simbólica.

Si configurable se configura explícitamente como False, el atributo de la macro simbólica no se puede configurar. En otras palabras, no puede tomar un valor select(). Si el configurable no está vinculado o se establece explícitamente en True, el atributo se puede configurar y puede tener un valor select().

Para un atributo de una regla o un aspecto, configurable debe dejarse sin vincular. La mayoría de los atributos de reglas de Starlark siempre se pueden configurar, excepto los atributos de regla attr.output(), attr.output_list() y attr.license(), que siempre son no configurables.

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 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 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; o secuencia de cadenas; o None; El valor predeterminado es None
Indica si se permiten los destinos File. Puede ser True, False (configuración predeterminada) o una lista de extensiones de archivo permitidas (por ejemplo, [".cc", ".cpp"]).
allow_rules Secuencia de cadenas o None; El valor predeterminado es None
Indica qué objetivos de reglas (nombres de las clases) se permiten. Esta función dejó de estar disponible (se conserva solo por motivos de compatibilidad). Usa proveedores en su lugar.
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 *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 UNA de las listas internas. Para tu comodidad, este argumento también puede ser una lista de proveedores de un solo nivel, en cuyo caso se une en una lista externa con un elemento. NO es necesario que la regla de la dependencia anuncie esos proveedores en su parámetro provides. Sin embargo, se considera una práctica recomendada.

for_dependency_resolution El valor predeterminado es unbound
Si se establece, el atributo está disponible para los materializadores. Solo se puede hacer referencia a reglas marcadas con la marca del mismo nombre a través de esos atributos.
flags secuencia de strings (el valor predeterminado es []
) Se quitará, ya que es obsoleta.
mandatory bool; el valor predeterminado es False
Si es verdadero, el valor se debe especificar de manera 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 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 Aspects; la opción predeterminada es []
Aspectos que deben aplicarse a la dependencia o dependencias especificadas por este atributo.

label_list

Attribute attr.label_list(allow_empty=True, *, configurable=unbound, default=[], materializer=None, doc=None, allow_files=None, allow_rules=None, providers=[], for_dependency_resolution=unbound, 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 lista 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.

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 bool; el valor predeterminado es True
Verdadero si el atributo puede estar vacío.
configurable bool o no delimitado; el valor predeterminado es unbound
Este argumento solo se puede especificar para un atributo de una macro simbólica.

Si configurable se establece de forma explícita en False, el atributo de macro simbólica no se puede configurar; en otras palabras, no puede tomar un valor select(). Si el configurable no está vinculado o se establece explícitamente en True, el atributo se puede configurar y puede tener un valor select().

Para un atributo de una regla o un aspecto, configurable debe dejarse sin delimitar. La mayoría de los atributos de reglas de Starlark siempre se pueden configurar, a excepción de los atributos de reglas attr.output(), attr.output_list() y attr.license(), que siempre son inconfigurables.

default secuencia de etiquetas; o función; predeterminado es []
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_list(default = ["//a:b", "//a:c"]).
materializer function; El valor predeterminado es None
Experimental. Este parámetro es experimental y puede cambiar en cualquier momento. No dependas de ella. Se puede habilitar de forma experimental configurando --experimental_dormant_deps
Si se configura, el atributo materializa las dependencias inactivas de la clausura transitiva. El valor de este parámetro debe ser una función que obtenga acceso a los valores de los atributos de la regla que no sean dependencias o que estén marcados como disponibles para la resolución de dependencias. Debe mostrar una dependencia inactiva o una lista de ellas según el tipo de atributo.
doc string o None; el valor predeterminado es None
Es una descripción del atributo que se puede extraer con las herramientas de generación de documentación.
allow_files bool o secuencia de string; o None; el valor predeterminado es None
Indica si se permiten los 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 cadenas o None; El valor predeterminado es None
Indica qué objetivos de reglas (nombres de las clases) se permiten. Esta función dejó de estar disponible (se conserva solo por motivos de compatibilidad). Usa proveedores en su lugar.
providers sequence; 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 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 UNA de las listas internas. Para tu comodidad, este argumento también puede ser una lista de proveedores de un solo nivel, en cuyo caso se une en una lista externa con un elemento. NO es obligatorio que la regla de la dependencia anuncie esos proveedores en su parámetro provides; sin embargo, esto se considera una práctica recomendada.

for_dependency_resolution El valor predeterminado es unbound
Si se establece, el atributo está disponible para los materializadores. Solo se permite hacer referencia a reglas marcadas con la marca del mismo nombre a través de esos atributos.
flags Secuencia de cadenas. El valor predeterminado es []
. Está obsoleto y se quitará.
mandatory bool; El valor predeterminado es False
Si es verdadero, el valor se debe especificar 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 las 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", 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 []
. Son los aspectos que se deben aplicar a la 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 únicos de Label. 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 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 bool; el valor predeterminado es False
Si es verdadero, el valor se debe especificar de manera 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 únicos de Label. 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 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 bool; 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(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 delimitado; el valor predeterminado es unbound
Este argumento solo se puede especificar para un atributo de una macro simbólica.

Si configurable se configura explícitamente como False, el atributo de la macro simbólica no se puede configurar. En otras palabras, no puede tomar un valor select(). Si configurable no está delimitado o se establece de forma explícita en True, el atributo se puede configurar y puede tomar un valor select().

Para un atributo de una regla o un aspecto, configurable debe dejarse sin vincular. La mayoría de los atributos de reglas de Starlark siempre se pueden configurar, a excepción de los atributos de reglas attr.output(), attr.output_list() y attr.license(), que siempre son inconfigurables.

default cadena; o NativeComputedDefault; el valor predeterminado es ''
Es un valor predeterminado que se usará si no se proporciona un valor para este atributo cuando se crea una instancia de 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 bool; El valor predeterminado es False
Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).
values secuencia de cadenas; 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, *, 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
Verdadero si el atributo puede estar vacío.
configurable bool o sin vincular; el valor predeterminado es unbound
Este argumento solo se puede especificar para un atributo de una macro simbólica.

Si configurable se establece de forma explícita en False, el atributo de macro simbólica no se puede configurar; en otras palabras, no puede tomar un valor select(). Si configurable no está delimitado o se establece de forma explícita en True, el atributo se puede configurar y puede tomar un valor select().

Para un atributo de una regla o un aspecto, configurable debe dejarse sin vincular. La mayoría de los atributos de reglas de Starlark siempre se pueden configurar, a excepción de los atributos de reglas attr.output(), attr.output_list() y attr.license(), que siempre son inconfigurables.

default dict; El valor predeterminado es {}
Es 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.
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 bool; El valor predeterminado es False
Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).

string_keyed_label_dict

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

Crea un esquema para un atributo cuyo valor es un diccionario en el que las claves son strings y los valores son etiquetas. Este es un atributo de dependencia.

Este atributo contiene valores únicos de Label. 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 con otro nombre), se resuelven en función del paquete del destino al que se le creó una 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 sin vincular; el valor predeterminado es unbound
Este argumento solo se puede especificar para un atributo de una macro simbólica.

Si configurable se configura explícitamente como False, el atributo de la macro simbólica no se puede configurar. En otras palabras, no puede tomar un valor select(). Si el configurable no está vinculado o se establece explícitamente en True, el atributo se puede configurar y puede tener un valor select().

Para un atributo de una regla o un aspecto, configurable debe dejarse sin vincular. La mayoría de los atributos de reglas de Starlark siempre se pueden configurar, a excepción de los atributos de reglas attr.output(), attr.output_list() y attr.license(), que siempre son inconfigurables.

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 crea una instancia de la regla. Usa cadenas o la función Label para especificar valores predeterminados, por ejemplo, attr.string_keyed_label_dict(default = {"foo": "//a:b", "bar": "//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; o secuencia de cadenas; o None; El valor predeterminado es None
Indica si se permiten los destinos File. Puede ser True, False (predeterminado) o una lista de extensiones de archivo permitidas (por ejemplo, [".cc", ".cpp"]).
allow_rules Secuencia de cadenas o None; El valor predeterminado es None
Indica qué objetivos de reglas (nombres de las clases) se permiten. Esta función dejó de estar disponible (se conserva solo por motivos de compatibilidad). Usa proveedores en su lugar.
providers sequence; 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 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 UNA de las listas internas. Para tu comodidad, este argumento también puede ser una lista de proveedores de un solo nivel, en cuyo caso se une en una lista externa con un elemento. NO es necesario que la regla de la dependencia anuncie esos proveedores en su parámetro provides. Sin embargo, se considera una práctica recomendada.

for_dependency_resolution El valor predeterminado es unbound
Si se establece, el atributo está disponible para los materializadores. Solo se puede hacer referencia a reglas marcadas con la marca del mismo nombre a través de esos atributos.
flags Secuencia de cadenas. El valor predeterminado es []
. Está obsoleto y se quitará.
mandatory bool; 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 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, en las que target platform es Android o iOS, mientras que execution platform es Linux, macOS o Windows.
aspects Secuencia de Aspectos. El valor predeterminado es []
. Son los aspectos que se deben aplicar a la o las dependencias especificadas por este atributo.

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 cadenas.

Parámetros

Parámetro Descripción
mandatory bool; El valor predeterminado es False
Si es verdadero, el valor se debe especificar 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 sin vincular; el valor predeterminado es unbound
Este argumento solo se puede especificar para un atributo de una macro simbólica.

Si configurable se establece de forma explícita en False, el atributo de macro simbólica no se puede configurar; en otras palabras, no puede tomar un valor select(). Si el configurable no está vinculado o se establece explícitamente en True, el atributo se puede configurar y puede tener un valor select().

Para un atributo de una regla o un aspecto, configurable debe dejarse sin vincular. La mayoría de los atributos de reglas de Starlark siempre se pueden configurar, excepto los atributos de regla attr.output(), attr.output_list() y attr.license(), que siempre son no configurables.

default secuencia de strings; o NativeComputedDefault; el valor predeterminado es []
El valor predeterminado que se debe 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
Es una descripción del atributo que se puede extraer con las 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 delimitado; el valor predeterminado es unbound
Este argumento solo se puede especificar para un atributo de una macro simbólica.

Si configurable se establece de forma explícita en False, el atributo de macro simbólica no se puede configurar; en otras palabras, no puede tomar un valor select(). Si configurable no está delimitado o se establece de forma explícita en True, el atributo se puede configurar y puede tomar un valor select().

Para un atributo de una regla o un aspecto, configurable debe dejarse sin delimitar. La mayoría de los atributos de reglas de Starlark siempre se pueden configurar, a excepción de los atributos de reglas attr.output(), attr.output_list() y attr.license(), que siempre son inconfigurables.

default dict; el valor predeterminado es {}
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.
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 bool; El valor predeterminado es False
Si es verdadero, el valor se debe especificar de forma explícita (incluso si tiene un default).