atribuição

Informar um problema Acessar fonte

Este é um módulo de nível superior para definir os esquemas de atributos de uma regra ou um 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() e aspect().

Consulte a página "Regras" para saber mais sobre como definir e usar atributos.

Participantes

bool

Attribute attr.bool(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
default default é 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ída pelas ferramentas que geram documentação.
mandatory O padrão é False
Se for verdadeiro, o valor precisará ser especificado explicitamente, mesmo que tenha um default.

int

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

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

Parâmetros

Parâmetro Descrição
default default é 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ída pelas ferramentas que geram documentação.
mandatory O padrão é False
Se for verdadeiro, o valor precisará 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 informado.

int_list

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

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

Parâmetros

Parâmetro Descrição
mandatory O padrão é False
Se for verdadeiro, o valor precisará ser especificado explicitamente, mesmo que tenha um default.
allow_empty o padrão é True
Verdadeiro se o atributo puder ficar vazio.
default sequência de ints. 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ída pelas ferramentas que geram documentação.

Identificador

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

Cria um esquema para um atributo de rótulo. 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ótulo. As partes relativas do caminho do marcador, incluindo o repositório (possivelmente renomeado), são resolvidas em relação ao pacote do destino instanciado.

No momento da análise (na função de implementação da regra), ao recuperar 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 geralmente é usado para se referir a uma ferramenta, por exemplo, um compilador. Essas ferramentas são consideradas dependências, assim como os arquivos de origem. Para não exigir que os usuários especifiquem o identificador da ferramenta sempre que usarem a regra nos arquivos BUILD, você pode codificar 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 particular atribuindo a ele um nome que comece com um sublinhado. Veja a página Regras para mais informações.

Parâmetros

Parâmetro Descrição
default Label, ou string, LateBoundDefault, NativeComputedDefault, function ou None; o padrão é None
Um valor padrão a ser usado se nenhum valor desse atributo for fornecido ao instanciar a regra.Use uma string ou a função Label para especificar um valor padrão, como attr.label(default = "//a:b").
doc string; ou None; o padrão é None
Uma descrição do atributo que pode ser extraída pelas ferramentas que geram documentação.
executable o padrão é False
Verdadeiro se a dependência tiver que 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 rótulo com ctx.executable.<attribute_name>.
allow_files bool; ou sequência de stringss; ou None; o padrão é None
Se os destinos de 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
É semelhante ao allow_files, com a restrição de que o rótulo precisa corresponder a um único Arquivo. Acesse pelo ctx.file.<attribute_name>.
mandatory O padrão é False
Se for verdadeiro, o valor precisará ser especificado explicitamente, mesmo que tenha um default.
providers o padrão é []
Os provedores que precisam ser fornecidos por qualquer dependência exibida 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. Por conveniência, esse argumento também pode ser uma lista de provedores de nível único. Nesse caso, ele é unido 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.

allow_rules sequência de strings ou None. O padrão é None.
Quais segmentações de regras (nome das classes) são permitidas. Como o uso 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 é criada para o execution platform, ou "target", que indica que a dependência é criada para o target platform. Um exemplo típico da diferença é na criação de apps para dispositivos móveis, em que target platform é Android ou iOS, enquanto execution platform é Linux, macOS ou Windows. Esse parâmetro será obrigatório se executable for verdadeiro para evitar a criação acidental de ferramentas de host na configuração de destino. A "target" não tem efeito semântico. Portanto, não a defina quando executable for falsa, a menos que isso ajude a esclarecer suas intenções.
aspects Sequence de Aspects. O padrão é []
Aspectos que precisam ser aplicados à dependência ou dependências 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=[])

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ótulo. As partes relativas do caminho do marcador, incluindo o repositório (possivelmente renomeado), são resolvidas em relação ao pacote do destino instanciado.

No momento da análise (na função de implementação da regra), ao recuperar 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 o padrão é True
Verdadeiro se o atributo puder ficar vazio.
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.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ída pelas ferramentas que geram documentação.
allow_files bool; ou sequência de stringss; ou None; o padrão é None
Se os destinos de 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 segmentações de regras (nome das classes) são permitidas. Como o uso foi descontinuado (mantido apenas para compatibilidade), use provedores.
providers o padrão é []
Os provedores que precisam ser fornecidos por qualquer dependência exibida 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. Por conveniência, esse argumento também pode ser uma lista de provedores de nível único. Nesse caso, ele é unido 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.

flags Sequence de strings. O padrão é []
Descontinuado, será removido.
mandatory O padrão é False
Se for verdadeiro, o valor precisará 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 é criada para o execution platform, ou "target", que indica que a dependência é criada para o target platform. Um exemplo típico da diferença é na criação de apps para dispositivos móveis, em que target platform é Android ou iOS, enquanto execution platform é Linux, macOS ou Windows.
aspects Sequence de Aspects. O padrão é []
Aspectos que precisam ser aplicados à dependência ou dependências 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=[])

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

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ótulo. As partes relativas do caminho do marcador, incluindo o repositório (possivelmente renomeado), são resolvidas em relação ao pacote do destino instanciado.

No momento da análise (na função de implementação da regra), ao recuperar 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 o padrão é True
Verdadeiro se o atributo puder ficar vazio.
default Sequence de Labels; ou function; 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"]).
doc string; ou None; o padrão é None
Uma descrição do atributo que pode ser extraída pelas ferramentas que geram documentação.
allow_files bool; ou sequência de stringss; ou None; o padrão é None
Se os destinos de 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 segmentações de regras (nome das classes) são permitidas. Como o uso foi descontinuado (mantido apenas para compatibilidade), use provedores.
providers o padrão é []
Os provedores que precisam ser fornecidos por qualquer dependência exibida 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. Por conveniência, esse argumento também pode ser uma lista de provedores de nível único. Nesse caso, ele é unido 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.

flags Sequence de strings. O padrão é []
Descontinuado, será removido.
mandatory O padrão é False
Se for verdadeiro, o valor precisará 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 é criada para o execution platform, ou "target", que indica que a dependência é criada para o target platform. Um exemplo típico da diferença é na criação de apps para dispositivos móveis, em que target platform é Android ou iOS, enquanto execution platform é Linux, macOS ou Windows.
aspects Sequence de Aspects. O padrão é []
Aspectos que precisam ser aplicados à dependência ou dependências especificadas por este atributo.

saída

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ótulo. As partes relativas do caminho do marcador, incluindo o repositório (possivelmente renomeado), são resolvidas em relação ao pacote do 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ída pelas ferramentas que geram documentação.
mandatory O padrão é False
Se for verdadeiro, o valor precisará 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ótulo. As partes relativas do caminho do marcador, incluindo o repositório (possivelmente renomeado), são resolvidas em relação ao pacote do destino instanciado.

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

Parâmetros

Parâmetro Descrição
allow_empty o padrão é True
Verdadeiro se o atributo puder ficar vazio.
doc string; ou None; o padrão é None
Uma descrição do atributo que pode ser extraída pelas ferramentas que geram documentação.
mandatory O padrão é False
Se for verdadeiro, o valor precisará ser especificado explicitamente, mesmo que tenha um default.

string

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

Cria um esquema para um atributo string.

Parâmetros

Parâmetro Descrição
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ída pelas ferramentas que geram documentação.
mandatory O padrão é False
Se for verdadeiro, o valor precisará 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 informado.

string_dict

Attribute attr.string_dict(allow_empty=True, *, 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 o padrão é True
Verdadeiro se o atributo puder ficar vazio.
default default é {}
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ída pelas ferramentas que geram documentação.
mandatory O padrão é False
Se for verdadeiro, o valor precisará ser especificado explicitamente, mesmo que tenha um default.

string_list

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

Cria um esquema para um atributo de lista de strings.

Parâmetros

Parâmetro Descrição
mandatory O padrão é False
Se for verdadeiro, o valor precisará ser especificado explicitamente, mesmo que tenha um default.
allow_empty o padrão é True
Verdadeiro se o atributo puder ficar vazio.
default sequência de strings ou NativeComputedDefault. O padrão é []
. Um valor padrão a ser usado se nenhum valor para este atributo for fornecido ao instanciar a regra.
doc string; ou None; o padrão é None
Uma descrição do atributo que pode ser extraída pelas ferramentas que geram documentação.

string_list_dict

Attribute attr.string_list_dict(allow_empty=True, *, 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 o padrão é True
Verdadeiro se o atributo puder ficar vazio.
default default é {}
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ída pelas ferramentas que geram documentação.
mandatory O padrão é False
Se for verdadeiro, o valor precisará ser especificado explicitamente, mesmo que tenha um default.