atribuição

É 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 de dicionário attrs de rule() e aspect().

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

Membros

bool

Attribute attr.bool(default=False, doc='', mandatory=False)

Cria um esquema para um atributo booleano.

Parâmetros

Parâmetro Descrição
default default = False
Um valor padrão a ser usado se nenhum valor for fornecido para esse atributo ao instanciar a regra.
doc default = ''
Uma descrição do atributo que pode ser extraída por ferramentas de geração de documentação.
mandatory default = False
Se for "true", o valor precisará ser especificado explicitamente, mesmo que tenha um default.

int

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

Cria um esquema para um atributo inteiro. O valor precisa estar no intervalo de 32 bits assinado.

Parâmetros

Parâmetro Descrição
default default = 0
Um valor padrão a ser usado se nenhum valor for fornecido para esse atributo ao instanciar a regra.
doc default = ''
Uma descrição do atributo que pode ser extraída por ferramentas de geração de documentação.
mandatory default = False
Se for "true", o valor precisará ser especificado explicitamente, mesmo que tenha um default.
values sequence of ints; default = []
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, *, default=[], doc='')

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

Parâmetros

Parâmetro Descrição
mandatory default = False
Se for "true", o valor precisará ser especificado explicitamente, mesmo que tenha um default.
allow_empty default = True
True se o atributo puder estar vazio.
default sequence of ints; default = []
Um valor padrão a ser usado se nenhum valor for fornecido para esse atributo ao instanciar a regra.
doc default = ''
Uma descrição do atributo que pode ser extraída por ferramentas de geração de documentação.

o rótulo.

Attribute attr.label(default=None, doc='', 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 em vez 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 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 costuma ser 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 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 a ele um nome que comece com um sublinhado. Consulte a página Regras para mais informações.

Parâmetros

Parâmetro Descrição
default Label; or string; or LateBoundDefault; or NativeComputedDefault; or function; or None; default = None
Um valor padrão a ser usado se nenhum valor for fornecido para esse atributo 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").
doc default = ''
Uma descrição do atributo que pode ser extraída por ferramentas de geração de documentação.
executable default = False
True se a dependência precisar ser executável. Isso significa que o rótulo precisa se referir a um arquivo executável ou a uma regra que gere um arquivo executável. Acesse o rótulo com ctx.executable.<attribute_name>.
allow_files bool; or sequence of strings; or None; default = None
Indica 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 default = None
É semelhante a allow_files, com a restrição de que o rótulo precisa corresponder a um único File. Acesse em ctx.file.<attribute_name>.
mandatory default = False
Se for "true", o valor precisará ser especificado explicitamente, mesmo que tenha um default.
providers default = []
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 nível único. Nesse caso, ele é envolvido em uma lista externa com um elemento.

allow_rules sequence of strings; or None; default = None
Quais destinos de regra (nome das classes) são permitidos. Esse recurso está descontinuado (mantido apenas para compatibilidade). Use provedores.
cfg default = 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. Esse parâmetro é obrigatório se executable for "True" 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 isso realmente ajude a esclarecer suas intenções.
aspects sequence of Aspects; default = []
Aspectos que devem ser aplicados à dependência ou às dependências especificadas por esse atributo.

label_keyed_string_dict

Attribute attr.label_keyed_string_dict(allow_empty=True, *, default={}, doc='', 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 em vez 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 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 default = True
True se o atributo puder estar vazio.
default dict; or function; default = {}
Um valor padrão a ser usado se nenhum valor for fornecido para esse atributo 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 default = ''
Uma descrição do atributo que pode ser extraída por ferramentas de geração de documentação.
allow_files bool; or sequence of strings; or None; default = None
Indica 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 sequence of strings; or None; default = None
Quais destinos de regra (nome das classes) são permitidos. Esse recurso está descontinuado (mantido apenas para compatibilidade). Use provedores.
providers default = []
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 nível único. Nesse caso, ele é envolvido em uma lista externa com um elemento.

flags sequence of strings; default = []
Descontinuado, será removido.
mandatory default = False
Se for "true", o valor precisará ser especificado explicitamente, mesmo que tenha um default.
cfg default = 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 sequence of Aspects; default = []
Aspectos que devem ser aplicados à dependência ou às dependências especificadas por esse atributo.

label_list

Attribute attr.label_list(allow_empty=True, *, default=[], doc='', 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.

Esse atributo contém valores Label exclusivos. Se uma string for fornecida em vez 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 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 default = True
True se o atributo puder estar vazio.
default sequence of Labels; or function; default = []
Um valor padrão a ser usado se nenhum valor for fornecido para esse atributo 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 default = ''
Uma descrição do atributo que pode ser extraída por ferramentas de geração de documentação.
allow_files bool; or sequence of strings; or None; default = None
Indica 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 sequence of strings; or None; default = None
Quais destinos de regra (nome das classes) são permitidos. Esse recurso está descontinuado (mantido apenas para compatibilidade). Use provedores.
providers default = []
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 nível único. Nesse caso, ele é envolvido em uma lista externa com um elemento.

flags sequence of strings; default = []
Descontinuado, será removido.
mandatory default = False
Se for "true", o valor precisará ser especificado explicitamente, mesmo que tenha um default.
cfg default = 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 sequence of Aspects; default = []
Aspectos que devem ser aplicados à dependência ou às dependências especificadas por esse atributo.

output

Attribute attr.output(doc='', 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 em vez 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 do destino instanciado.

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

Parâmetros

Parâmetro Descrição
doc default = ''
Uma descrição do atributo que pode ser extraída por ferramentas de geração de documentação.
mandatory default = False
Se for "true", o valor precisará ser especificado explicitamente, mesmo que tenha um default.

output_list

Attribute attr.output_list(allow_empty=True, *, doc='', 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 em vez 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 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 default = True
True se o atributo puder estar vazio.
doc default = ''
Uma descrição do atributo que pode ser extraída por ferramentas de geração de documentação.
mandatory default = False
Se for "true", o valor precisará ser especificado explicitamente, mesmo que tenha um default.

string

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

Cria um esquema para um atributo de string.

Parâmetros

Parâmetro Descrição
default string; or NativeComputedDefault; default = ''
Um valor padrão a ser usado se nenhum valor for fornecido para esse atributo ao instanciar a regra.
doc default = ''
Uma descrição do atributo que pode ser extraída por ferramentas de geração de documentação.
mandatory default = False
Se for "true", o valor precisará ser especificado explicitamente, mesmo que tenha um default.
values sequence of strings; default = []
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, *, default={}, doc='', 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 default = True
True se o atributo puder estar vazio.
default default = {}
Um valor padrão a ser usado se nenhum valor for fornecido para esse atributo ao instanciar a regra.
doc default = ''
Uma descrição do atributo que pode ser extraída por ferramentas de geração de documentação.
mandatory default = False
Se for "true", o valor precisará ser especificado explicitamente, mesmo que tenha um default.

string_list

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

Cria um esquema para um atributo de lista de strings.

Parâmetros

Parâmetro Descrição
mandatory default = False
Se for "true", o valor precisará ser especificado explicitamente, mesmo que tenha um default.
allow_empty default = True
True se o atributo puder estar vazio.
default sequence of strings; or NativeComputedDefault; default = []
Um valor padrão a ser usado se nenhum valor for fornecido para esse atributo ao instanciar a regra.
doc default = ''
Uma descrição do atributo que pode ser extraída por ferramentas de geração de documentação.

string_list_dict

Attribute attr.string_list_dict(allow_empty=True, *, default={}, doc='', 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 default = True
True se o atributo puder estar vazio.
default default = {}
Um valor padrão a ser usado se nenhum valor for fornecido para esse atributo ao instanciar a regra.
doc default = ''
Uma descrição do atributo que pode ser extraída por ferramentas de geração de documentação.
mandatory default = False
Se for "true", o valor precisará ser especificado explicitamente, mesmo que tenha um default.