atribuição

Reportar um problema Ver código-fonte Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Este é um módulo de nível superior para definir os esquemas de atributos de uma regra ou aspecto. Cada função retorna um objeto que representa o esquema de um único atributo. Esses objetos são usados como os valores do argumento do dicionário attrs de rule(), aspect(), repository_rule() e tag_class().

Consulte a página "Regras" para mais informações sobre como definir e usar atributos.

Membros

bool

Attribute attr.bool(configurable=unbound, default=False, doc=None, mandatory=False)

Cria um esquema para um atributo booleano. O atributo ctx.attr correspondente será do tipo bool.

Parâmetros

Parâmetro Descrição
configurable bool ou não vinculado; o padrão é unbound
Este argumento só pode ser especificado para um atributo de uma macro simbólica.

Se configurable for definido explicitamente como False, o atributo de macro simbólico não será configurável. Em outras palavras, ele não poderá ter um valor select(). Se o configurable não estiver vinculado ou for explicitamente definido como True, o atributo será configurável e poderá receber um valor select().

Para um atributo de uma regra ou aspecto, configurable precisa ficar sem vínculo. A maioria dos atributos de regras do Starlark é sempre configurável, com exceção dos atributos de regras attr.output(), attr.output_list() e attr.license(), que não são configuráveis.

default bool; o padrão é False
Um valor padrão a ser usado se nenhum valor para esse atributo for fornecido ao instanciar a regra.
doc string ou None; o padrão é None
Uma descrição do atributo que pode ser extraído por ferramentas de geração de documentação.
mandatory bool; o padrão é False
Se verdadeiro, o valor precisa ser especificado explicitamente, mesmo que tenha um default.

int

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

Cria um esquema para um atributo inteiro. O valor precisa estar no intervalo assinado de 32 bits. O atributo ctx.attr correspondente será do tipo int.

Parâmetros

Parâmetro Descrição
configurable bool ou não vinculado; o padrão é unbound
Esse argumento só pode ser especificado para um atributo de uma macro simbólica.

Se configurable for definido explicitamente como False, o atributo de macro simbólico não será configurável. Em outras palavras, ele não poderá ter um valor select(). Se a configurable estiver desvinculada ou definida explicitamente como True, o atributo será configurável e poderá receber um valor de select().

Para um atributo de uma regra ou aspecto, configurable precisa ficar sem vínculo. A maioria dos atributos de regras do Starlark é sempre configurável, com exceção dos atributos de regras attr.output(), attr.output_list() e attr.license(), que não são configuráveis.

default int; O padrão é 0
Um valor padrão a ser usado se nenhum valor para esse atributo for fornecido ao instanciar a regra.
doc string ou None; o padrão é None
Uma descrição do atributo que pode ser extraído por ferramentas de geração de documentação.
mandatory bool; o padrão é False
. Se verdadeiro, o valor precisa ser especificado explicitamente (mesmo que tenha um default).
values sequência de ints; o padrão é []
A lista de valores permitidos para o atributo. Um erro será gerado se qualquer outro valor for fornecido.

int_list

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

Cria um esquema para um atributo de lista de números inteiros. Cada elemento precisa estar no intervalo de 32 bits assinado.

Parâmetros

Parâmetro Descrição
mandatory bool; o padrão é False
Se verdadeiro, o valor precisa ser especificado explicitamente (mesmo que tenha um default).
allow_empty bool; o padrão é True
Verdadeiro se o atributo pode estar vazio.
configurable bool ou não vinculado; o padrão é unbound
Esse argumento só pode ser especificado para um atributo de uma macro simbólica.

Se configurable for definido explicitamente como False, o atributo de macro simbólico não será configurável. Em outras palavras, ele não poderá ter um valor select(). Se o configurable não estiver vinculado ou for explicitamente definido como True, o atributo será configurável e poderá receber um valor select().

Para um atributo de uma regra ou aspecto, configurable precisa ficar sem vínculo. A maioria dos atributos de regras do Starlark é sempre configurável, exceto os atributos de regra attr.output(), attr.output_list() e attr.license(), que sempre não são configuráveis.

default Sequência de ints; o padrão é []
Um valor padrão a ser usado se nenhum valor for fornecido para esse atributo ao instanciar a regra.
doc string; ou None; o padrão é None.
Uma descrição do atributo que pode ser extraída por ferramentas que geram documentação.

o rótulo.

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=[])

Cria um esquema para um atributo de rótulo. Esse é um atributo de dependência.

Esse atributo contém valores exclusivos de Label. Se uma string for fornecida no lugar de um Label, ela será convertida usando o construtor de rótulos. As partes relativas do caminho do rótulo, incluindo o repositório (possivelmente renomeado), são resolvidas em relação ao pacote de destino instanciado.

No momento da análise (na função de implementação da regra), ao extrair o valor do atributo de ctx.attr, os rótulos são substituídos pelos Targets correspondentes. Isso permite acessar os provedores das dependências do destino atual.

Além dos arquivos de origem comuns, esse tipo de atributo é usado com frequência para se referir a uma ferramenta, por exemplo, um compilador. Essas ferramentas são consideradas dependências, assim como os arquivos de origem. Para evitar que os usuários especifiquem o rótulo da ferramenta sempre que usarem a regra nos arquivos BUILD, codifique o rótulo de uma ferramenta canônica como o valor default desse atributo. Se você também quiser impedir que os usuários substituam esse padrão, torne o atributo privado atribuindo um nome que comece com um sublinhado. Consulte a página Regras para mais informações.

Parâmetros

Parâmetro Descrição
configurable bool ou não vinculado; o padrão é unbound
Este argumento só pode ser especificado para um atributo de uma macro simbólica.

Se configurable for definido explicitamente como False, o atributo de macro simbólico não será configurável. Em outras palavras, ele não poderá ter um valor select(). Se a configurable estiver desvinculada ou definida explicitamente como True, o atributo será configurável e poderá receber um valor de select().

Para um atributo de uma regra ou aspecto, configurable precisa ser deixado sem vínculo. A maioria dos atributos de regras do Starlark é sempre configurável, com exceção dos atributos de regras attr.output(), attr.output_list() e attr.license(), que não são configuráveis.

default Label; ou string; ou LateBoundDefault; ou NativeComputedDefault; ou function; ou None; O padrão é None
Um valor padrão a ser usado se nenhum valor para esse atributo for fornecido ao instanciar a regra. Use uma string ou a função Label para especificar um valor padrão, por exemplo, attr.label(default = "//a:b").
materializer function; o padrão é None
Experimental. Esse parâmetro é experimental e pode mudar a qualquer momento. Não dependa dele. Ele pode ser ativado de forma experimental definindo --experimental_dormant_deps
. Se definido, o atributo materializa dependências inativas da interseção transitiva. O valor desse parâmetro precisa ser uma função que tenha acesso aos valores dos atributos da regra que não são dependências ou estão marcados como disponíveis para resolução de dependências. Ele precisa retornar uma dependência inativa ou uma lista delas, dependendo do tipo do atributo.
doc string ou None; o padrão é None
Uma descrição do atributo que pode ser extraído por ferramentas de geração de documentação.
executable bool; o padrão é False
Verdadeiro se a dependência precisa ser executável. Isso significa que o rótulo precisa se referir a um arquivo executável ou a uma regra que gera um arquivo executável. Acesse o identificador com ctx.executable.<attribute_name>.
allow_files bool ou sequência de strings ou None. O padrão é None
. Define se os destinos File são permitidos. Pode ser True, False (padrão) ou uma lista de extensões de arquivo permitidas (por exemplo, [".cc", ".cpp"]).
allow_single_file O padrão é None
. Isso é semelhante a allow_files, com a restrição de que o rótulo precisa corresponder a um único arquivo. Acesse o recurso pelo ctx.file.<attribute_name>.
mandatory bool; o padrão é False
Se verdadeiro, o valor precisa ser especificado explicitamente, mesmo que tenha um default.
skip_validations bool; O padrão é False
Se verdadeiro, as ações de validação de dependências transitivas desse atributo não serão executadas. Essa é uma mitigação temporária e será removida no futuro.
providers sequência: o padrão é []
. Os provedores que precisam ser fornecidos por qualquer dependência que apareça nesse atributo.

O formato desse argumento é uma lista de listas de provedores: objetos *Info retornados por provider() (ou, no caso de um provedor legado, o nome da string). A dependência precisa retornar TODOS os provedores mencionados em pelo menos UMA das listas internas. Para sua conveniência, esse argumento também pode ser uma lista de provedores de um único nível. Nesse caso, ele é envolvido em uma lista externa com um elemento. A regra da dependência NÃO precisa anunciar esses provedores no parâmetro provides, mas é considerada uma prática recomendada.

for_dependency_resolution o padrão é unbound.
Se definido, o atributo fica disponível para materializadores. Somente as regras marcadas com a flag de mesmo nome podem ser referenciadas por esses atributos.
allow_rules Sequência de strings ou None. O padrão é None
. Quais regras de destino (nome das classes) são permitidas. Esse recurso foi descontinuado (mantido apenas para compatibilidade). Use provedores.
cfg O padrão é None
Configuração do atributo. Pode ser "exec", que indica que a dependência foi criada para o execution platform, ou "target", que indica que a dependência foi criada para o target platform. Um exemplo típico da diferença é ao criar apps para dispositivos móveis, em que target platform é Android ou iOS, enquanto execution platform é Linux, macOS ou Windows. Esse parâmetro é necessário se executable for verdadeiro para evitar a criação acidental de ferramentas de host na configuração de destino. "target" não tem efeito semântico. Portanto, não o defina quando executable for "false", a menos que ele realmente ajude a esclarecer suas intenções.
aspects sequência de Aspectos. O padrão é []
Aspectos que precisam ser aplicados à dependência ou às dependências especificadas por esse atributo.
flags Sequência de strings. O padrão é []
. Descontinuado, será removido.

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=[])

Cria um esquema para um atributo que contém um dicionário, em que as chaves são rótulos e os valores são strings. Esse é um atributo de dependência.

Esse atributo contém valores Label exclusivos. Se uma string for fornecida no lugar de um Label, ela será convertida usando o construtor de rótulos. As partes relativas do caminho do rótulo, incluindo o repositório (possivelmente renomeado), são resolvidas em relação ao pacote de destino instanciado.

No momento da análise (na função de implementação da regra), ao extrair o valor do atributo de ctx.attr, os rótulos são substituídos pelos Targets correspondentes. Isso permite que você acesse os provedores das dependências do destino atual.

Parâmetros

Parâmetro Descrição
allow_empty bool; o padrão é True
Verdadeiro se o atributo pode estar vazio.
configurable bool ou não vinculado; o padrão é unbound
Este argumento só pode ser especificado para um atributo de uma macro simbólica.

Se configurable for definido explicitamente como False, o atributo de macro simbólico não será configurável. Em outras palavras, ele não poderá receber um valor de select(). Se o configurable não estiver vinculado ou for explicitamente definido como True, o atributo será configurável e poderá receber um valor select().

Para um atributo de uma regra ou aspecto, configurable precisa ficar sem vínculo. A maioria dos atributos de regras do Starlark é sempre configurável, com exceção dos atributos de regras attr.output(), attr.output_list() e attr.license(), que não são configuráveis.

default dict; ou function; o padrão é {}
Um valor padrão a ser usado se nenhum valor desse atributo for fornecido ao instanciar a regra.Use strings ou a função Label para especificar valores padrão, por exemplo, attr.label_keyed_string_dict(default = {"//a:b": "value", "//a:c": "string"}).
doc string ou None; o padrão é None
Uma descrição do atributo que pode ser extraído por ferramentas de geração de documentação.
allow_files bool ou sequência de strings ou None. O padrão é None
. Define se os destinos File são permitidos. Pode ser True, False (padrão) ou uma lista de extensões de arquivo permitidas (por exemplo, [".cc", ".cpp"]).
allow_rules Sequência de strings ou None. O padrão é None
. Quais regras de destino (nome das classes) são permitidas. Esse recurso foi descontinuado (mantido apenas para compatibilidade). Use provedores.
providers sequência: o padrão é []
. Os provedores que precisam ser fornecidos por qualquer dependência que apareça nesse atributo.

O formato desse argumento é uma lista de listas de provedores: objetos *Info retornados por provider() (ou, no caso de um provedor legado, o nome da string). A dependência precisa retornar TODOS os provedores mencionados em pelo menos UMA das listas internas. Por conveniência, esse argumento também pode ser uma lista de provedores de nível único. Nesse caso, ele é incluído em uma lista externa com um elemento. A regra da dependência NÃO precisa anunciar esses provedores no parâmetro provides, mas é considerada uma prática recomendada.

for_dependency_resolution O padrão é unbound
Se definido, o atributo fica disponível para materializadores. Somente as regras marcadas com o sinalizador com o mesmo nome podem ser referenciadas por esses atributos.
flags Sequência de strings. O padrão é []
. Descontinuado, será removido.
mandatory bool; o padrão é False
. Se verdadeiro, o valor precisa ser especificado explicitamente (mesmo que tenha um default).
cfg O padrão é None
Configuração do atributo. Pode ser "exec", que indica que a dependência foi criada para o execution platform, ou "target", que indica que a dependência foi criada para o target platform. Um exemplo típico da diferença é ao criar apps para dispositivos móveis, em que o target platform é Android ou iOS, enquanto o execution platform é Linux, macOS ou Windows.
aspects sequência de Aspectos. O padrão é []
Aspectos que precisam ser aplicados à dependência ou às dependências especificadas por esse 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=[])

Cria um esquema para um atributo de lista de marcadores. Esse é um atributo de dependência. O atributo ctx.attr correspondente será do tipo lista de Targets.

Esse atributo contém valores exclusivos de Label. Se uma string for fornecida no lugar de um Label, ela será convertida usando o construtor de rótulos. As partes relativas do caminho do rótulo, incluindo o repositório (possivelmente renomeado), são resolvidas em relação ao pacote de destino instanciado.

No momento da análise (na função de implementação da regra), ao extrair o valor do atributo de ctx.attr, os rótulos são substituídos pelos Targets correspondentes. Isso permite acessar os provedores das dependências do destino atual.

Parâmetros

Parâmetro Descrição
allow_empty bool; o padrão é True
Verdadeiro se o atributo puder estar vazio.
configurable bool ou não vinculado; o padrão é unbound
Esse argumento só pode ser especificado para um atributo de uma macro simbólica.

Se configurable for definido explicitamente como False, o atributo de macro simbólico não será configurável. Em outras palavras, ele não poderá ter um valor select(). Se o configurable não estiver vinculado ou for explicitamente definido como True, o atributo será configurável e poderá receber um valor select().

Para um atributo de uma regra ou aspecto, configurable precisa ficar sem vínculo. A maioria dos atributos de regras do Starlark é sempre configurável, exceto os atributos de regra attr.output(), attr.output_list() e attr.license(), que sempre não são configuráveis.

default sequência de rótulos ou função; o padrão é []
Um valor padrão a ser usado se nenhum valor para este atributo for fornecido ao instanciar a regra.Use strings ou a função Label para especificar valores padrão, por exemplo, attr.label_list(default = ["//a:b", "//a:c"]).
materializer function; o padrão é None
Experimental. Esse parâmetro é experimental e pode ser alterado a qualquer momento. Não dependa dele. Ele pode ser ativado de forma experimental definindo --experimental_dormant_deps
. Se definido, o atributo materializa dependências inativas da interseção transitiva. O valor desse parâmetro precisa ser uma função que tenha acesso aos valores dos atributos da regra que não são dependências ou estão marcados como disponíveis para resolução de dependências. Ele precisa retornar uma dependência inativa ou uma lista delas, dependendo do tipo do atributo.
doc string ou None; o padrão é None
Uma descrição do atributo que pode ser extraído por ferramentas de geração de documentação.
allow_files bool ou sequência de strings ou None. O padrão é None
. Define se os destinos File são permitidos. Pode ser True, False (padrão) ou uma lista de extensões de arquivo permitidas (por exemplo, [".cc", ".cpp"]).
allow_rules sequência de strings ou None. O padrão é None
Quais metas de regras (nome das classes) são permitidas. Esse recurso foi descontinuado (mantido apenas para compatibilidade). Use provedores.
providers sequência; o padrão é [].
Os provedores que precisam ser fornecidos por qualquer dependência que apareça nesse atributo.

O formato desse argumento é uma lista de listas de provedores: objetos *Info retornados por provider() (ou, no caso de um provedor legado, o nome da string dele). A dependência precisa retornar TODOS os provedores mencionados em pelo menos UMA das listas internas. Para sua conveniência, esse argumento também pode ser uma lista de provedores de um único nível. Nesse caso, ele é envolvido em uma lista externa com um elemento. NÃO é necessário que a regra da dependência anuncie esses provedores no parâmetro provides. No entanto, essa é uma prática recomendada.

for_dependency_resolution O padrão é unbound
. Se definido, o atributo fica disponível para materializadores. Somente as regras marcadas com a flag de mesmo nome podem ser referenciadas por esses atributos.
flags Sequência de strings. O padrão é []
. Descontinuado, será removido.
mandatory bool; o padrão é False
. Se verdadeiro, o valor precisa ser especificado explicitamente (mesmo que tenha um default).
skip_validations bool; o padrão é False.
Se verdadeiro, as ações de validação de dependências transitivas desse atributo não serão executadas. Essa é uma mitigação temporária e será removida no futuro.
cfg O padrão é None
Configuração do atributo. Pode ser "exec", que indica que a dependência foi criada para o execution platform, ou "target", que indica que a dependência foi criada para o target platform. Um exemplo típico da diferença é ao criar apps para dispositivos móveis, em que target platform é Android ou iOS, enquanto execution platform é Linux, macOS ou Windows.
aspects sequência de Aspectos. O padrão é []
Aspectos que precisam ser aplicados à dependência ou às dependências especificadas por esse atributo.

output

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

Cria um esquema para um atributo de saída (rótulo).

Esse atributo contém valores Label exclusivos. Se uma string for fornecida no lugar de um Label, ela será convertida usando o construtor de rótulos. As partes relativas do caminho do rótulo, incluindo o repositório (possivelmente renomeado), são resolvidas em relação ao pacote de destino instanciado.

No momento da análise, o File correspondente pode ser recuperado usando ctx.outputs.

Parâmetros

Parâmetro Descrição
doc string ou None; o padrão é None
Uma descrição do atributo que pode ser extraído por ferramentas de geração de documentação.
mandatory bool; o padrão é False
Se verdadeiro, o valor precisa ser especificado explicitamente (mesmo que tenha um default).

output_list

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

Cria um esquema para um atributo de lista de saídas.

Esse atributo contém valores Label exclusivos. Se uma string for fornecida no lugar de um Label, ela será convertida usando o construtor de rótulos. As partes relativas do caminho do rótulo, incluindo o repositório (possivelmente renomeado), são resolvidas em relação ao pacote de destino instanciado.

No momento da análise, o File correspondente pode ser recuperado usando ctx.outputs.

Parâmetros

Parâmetro Descrição
allow_empty bool; o padrão é True
Verdadeiro se o atributo pode estar vazio.
doc string ou None; o padrão é None
Uma descrição do atributo que pode ser extraído por ferramentas de geração de documentação.
mandatory bool; o padrão é False
Se verdadeiro, o valor precisa ser especificado explicitamente (mesmo que tenha um default).

string

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

Cria um esquema para um atributo string.

Parâmetros

Parâmetro Descrição
configurable bool ou não vinculado; o padrão é unbound
Este argumento só pode ser especificado para um atributo de uma macro simbólica.

Se configurable for definido explicitamente como False, o atributo de macro simbólico não será configurável. Em outras palavras, ele não poderá ter um valor select(). Se o configurable não estiver vinculado ou for explicitamente definido como True, o atributo será configurável e poderá receber um valor select().

Para um atributo de uma regra ou aspecto, configurable precisa ficar sem vínculo. A maioria dos atributos de regras do Starlark é sempre configurável, com exceção dos atributos de regras attr.output(), attr.output_list() e attr.license(), que não são configuráveis.

default string ou NativeComputedDefault; o padrão é ''
Um valor padrão a ser usado se nenhum valor para esse atributo for fornecido ao instanciar a regra.
doc string ou None; o padrão é None
Uma descrição do atributo que pode ser extraído por ferramentas de geração de documentação.
mandatory bool; o padrão é False
Se verdadeiro, o valor precisa ser especificado explicitamente, mesmo que tenha um default.
values Sequência de strings. O padrão é []
. A lista de valores permitidos para o atributo. Um erro será gerado se qualquer outro valor for fornecido.

string_dict

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

Cria um esquema para um atributo que contém um dicionário, em que as chaves e os valores são strings.

Parâmetros

Parâmetro Descrição
allow_empty bool; o padrão é True
Verdadeiro se o atributo pode estar vazio.
configurable bool ou não vinculado; o padrão é unbound
Este argumento só pode ser especificado para um atributo de uma macro simbólica.

Se configurable for definido explicitamente como False, o atributo de macro simbólico não será configurável. Em outras palavras, ele não poderá ter um valor select(). Se a configurable estiver desvinculada ou definida explicitamente como True, o atributo será configurável e poderá receber um valor de select().

Para um atributo de uma regra ou aspecto, configurable precisa ficar sem vínculo. A maioria dos atributos de regras do Starlark é sempre configurável, com exceção dos atributos de regras attr.output(), attr.output_list() e attr.license(), que não são configuráveis.

default dict; o padrão é {}
Um valor padrão a ser usado se nenhum valor para esse atributo for fornecido ao instanciar a regra.
doc string ou None; o padrão é None
Uma descrição do atributo que pode ser extraído por ferramentas de geração de documentação.
mandatory bool; o padrão é False
. Se verdadeiro, o valor precisa ser especificado explicitamente (mesmo que tenha um 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=[])

Cria um esquema para um atributo cujo valor é um dicionário em que as chaves são strings e os valores são rótulos. Esse é um atributo de dependência.

Esse atributo contém valores exclusivos de Label. Se uma string for fornecida no lugar de um Label, ela será convertida usando o construtor de rótulos. As partes relativas do caminho do rótulo, incluindo o repositório (possivelmente renomeado), são resolvidas em relação ao pacote de destino instanciado.

No momento da análise (na função de implementação da regra), ao extrair o valor do atributo de ctx.attr, os rótulos são substituídos pelos Targets correspondentes. Isso permite acessar os provedores das dependências do destino atual.

Parâmetros

Parâmetro Descrição
allow_empty bool; o padrão é True
Verdadeiro se o atributo pode estar vazio.
configurable bool ou não vinculado; o padrão é unbound
Este argumento só pode ser especificado para um atributo de uma macro simbólica.

Se configurable for definido explicitamente como False, o atributo de macro simbólico não será configurável. Em outras palavras, ele não poderá ter um valor select(). Se o configurable não estiver vinculado ou for explicitamente definido como True, o atributo será configurável e poderá receber um valor select().

Para um atributo de uma regra ou aspecto, configurable precisa ficar sem vínculo. A maioria dos atributos de regras do Starlark é sempre configurável, exceto os atributos de regra attr.output(), attr.output_list() e attr.license(), que sempre não são configuráveis.

default dict ou function; O padrão é {}
Um valor padrão a ser usado se nenhum valor para esse atributo for fornecido ao instanciar a regra. Use strings ou a função Label para especificar valores padrão, por exemplo, attr.string_keyed_label_dict(default = {"foo": "//a:b", "bar": "//a:c"}).
doc string ou None; o padrão é None
Uma descrição do atributo que pode ser extraído por ferramentas de geração de documentação.
allow_files bool ou sequência de strings ou None. O padrão é None
. Define se os destinos File são permitidos. Pode ser True, False (padrão) ou uma lista de extensões de arquivo permitidas (por exemplo, [".cc", ".cpp"]).
allow_rules Sequência de strings ou None. O padrão é None
. Quais regras de destino (nome das classes) são permitidas. Esse recurso foi descontinuado (mantido apenas para compatibilidade). Use provedores.
providers sequência: o padrão é []
. Os provedores que precisam ser fornecidos por qualquer dependência que apareça nesse atributo.

O formato desse argumento é uma lista de listas de provedores: objetos *Info retornados por provider() (ou, no caso de um provedor legado, o nome da string dele). A dependência precisa retornar TODOS os provedores mencionados em pelo menos UMA das listas internas. Para sua conveniência, esse argumento também pode ser uma lista de provedores de um único nível. Nesse caso, ele é envolvido em uma lista externa com um elemento. NÃO é necessário que a regra da dependência anuncie esses provedores no parâmetro provides. No entanto, essa é uma prática recomendada.

for_dependency_resolution O padrão é unbound
Se definido, o atributo fica disponível para materializadores. Somente as regras marcadas com a flag de mesmo nome podem ser referenciadas por esses atributos.
flags Sequência de strings. O padrão é []
. Descontinuado, será removido.
mandatory bool; o padrão é False
Se verdadeiro, o valor precisa ser especificado explicitamente (mesmo que tenha um default).
cfg O padrão é None
Configuração do atributo. Pode ser "exec", que indica que a dependência foi criada para o execution platform, ou "target", que indica que a dependência foi criada para o target platform. Um exemplo típico da diferença é ao criar apps para dispositivos móveis, em que target platform é Android ou iOS, enquanto execution platform é Linux, macOS ou Windows.
aspects sequência de Aspectos. O padrão é []
Aspectos que precisam ser aplicados à dependência ou às dependências especificadas por esse atributo.

string_list

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

Cria um esquema para um atributo de lista de strings.

Parâmetros

Parâmetro Descrição
mandatory bool; o padrão é False
Se verdadeiro, o valor precisa ser especificado explicitamente (mesmo que tenha um default).
allow_empty bool; o padrão é True
Verdadeiro se o atributo puder estar vazio.
configurable bool ou não vinculado; o padrão é unbound
Este argumento só pode ser especificado para um atributo de uma macro simbólica.

Se configurable for definido explicitamente como False, o atributo de macro simbólico não será configurável. Em outras palavras, ele não poderá ter um valor select(). Se o configurable não estiver vinculado ou for explicitamente definido como True, o atributo será configurável e poderá receber um valor select().

Para um atributo de uma regra ou aspecto, configurable precisa ficar sem vínculo. A maioria dos atributos de regras do Starlark é sempre configurável, com exceção dos atributos de regras attr.output(), attr.output_list() e attr.license(), que não são configuráveis.

default sequência de strings ou NativeComputedDefault; o padrão é []
Um valor padrão a ser usado se nenhum valor para esse atributo for fornecido ao instanciar a regra.
doc string ou None; o padrão é None
Uma descrição do atributo que pode ser extraído por ferramentas de geração de documentação.

string_list_dict

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

Cria um esquema para um atributo que contém um dicionário, em que as chaves são strings e os valores são listas de strings.

Parâmetros

Parâmetro Descrição
allow_empty bool; o padrão é True
Verdadeiro se o atributo pode estar vazio.
configurable bool ou não vinculado; o padrão é unbound
Este argumento só pode ser especificado para um atributo de uma macro simbólica.

Se configurable for definido explicitamente como False, o atributo de macro simbólico não será configurável. Em outras palavras, ele não poderá ter um valor select(). Se o configurable não estiver vinculado ou for explicitamente definido como True, o atributo será configurável e poderá receber um valor select().

Para um atributo de uma regra ou aspecto, configurable precisa ficar sem vínculo. A maioria dos atributos de regras do Starlark é sempre configurável, com exceção dos atributos de regras attr.output(), attr.output_list() e attr.license(), que não são configuráveis.

default dict; o padrão é {}
Um valor padrão a ser usado se nenhum valor para esse atributo for fornecido ao instanciar a regra.
doc string ou None; o padrão é None
Uma descrição do atributo que pode ser extraído por ferramentas de geração de documentação.
mandatory bool; o padrão é False
Se verdadeiro, o valor precisa ser especificado explicitamente, mesmo que tenha um default.