Globais

Objetos, funções e módulos registrados no ambiente global.

Membros

todas

bool all(elements)

Retorna verdadeiro se todos os elementos forem avaliados como "True" ou se a coleção estiver vazia. Os elementos são convertidos em booleano usando a função bool.
all(["hello", 3, True]) == True
all([-1, 0, 1]) == False

Parâmetros

Parâmetro Descrição
elements obrigatório
Uma string ou uma coleção de elementos.

analysis_test_transition

transition analysis_test_transition(settings)

Cria uma transição de configuração a ser aplicada às dependências de uma regra de teste de análise. Essa transição só pode ser aplicada em atributos de regras com analysis_test = True. Essas regras têm recursos restritos (por exemplo, o tamanho da árvore de dependências é limitado). Portanto, as transições criadas com essa função têm um escopo potencial limitado em comparação com as transições criadas usando transition.

Essa função foi criada principalmente para facilitar a biblioteca principal do Analysis Test Framework. Consulte a documentação ou a implementação para conferir as práticas recomendadas.

Parâmetros

Parâmetro Descrição
settings obrigatório
Um dicionário com informações sobre as configurações que precisam ser definidas por essa transição de configuração. As chaves são rótulos de configuração de build, e os valores são os novos valores pós-transição. Todas as outras configurações permanecem inalteradas. Use isso para declarar configurações específicas que um teste de análise precisa ter para ser aprovado.

qualquer

bool any(elements)

Retorna "true" se pelo menos um elemento for avaliado como "True". Os elementos são convertidos em booleano usando a função bool.
any([-1, 0, 1]) == True
any([False, 0, ""]) == False

Parâmetros

Parâmetro Descrição
elements obrigatório
Uma string ou uma coleção de elementos.

archive_override

None archive_override(module_name, urls, integrity='', strip_prefix='', patches=[], patch_cmds=[], patch_strip=0)

Especifica que essa dependência deve vir de um arquivo (zip, gzip etc.) em um determinado local, em vez de um registro. Essa diretiva só entra em vigor no módulo raiz. Em outras palavras, se um módulo for usado como dependência por outros, as substituições dele serão ignoradas.

Parâmetros

Parâmetro Descrição
module_name required
O nome da dependência do módulo do Bazel a que essa substituição será aplicada.
urls string; or Iterable of strings; required
Os URLs do arquivo. Podem ser URLs http(s):// ou file://.
integrity default = ''
O checksum esperado do arquivo de arquivo, no formato de integridade de subrecursos.
strip_prefix default = ''
Um prefixo de diretório a ser removido dos arquivos extraídos.
patches Iterable of strings; default = []
Uma lista de rótulos que apontam para arquivos de patch a serem aplicados a este módulo. Os arquivos de patch precisam estar na árvore de origem do projeto de nível superior. Elas são aplicadas na ordem da lista.
patch_cmds Iterable of strings; default = []
Sequência de comandos Bash a serem aplicados no Linux/MacOS depois que os patches forem aplicados.
patch_strip default = 0
Igual ao argumento --strip do patch do Unix.

aspecto

Aspect aspect(implementation, attr_aspects=[], attrs=None, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None)

Cria um novo aspecto. O resultado dessa função precisa ser armazenado em um valor global. Consulte a introdução aos aspectos para mais detalhes.

Parâmetros

Parâmetro Descrição
implementation required
Uma função Starlark que implementa esse aspecto, com exatamente dois parâmetros: Target (o destino a que o aspecto é aplicado) e ctx (o contexto da regra de que o destino é criado). Os atributos do destino estão disponíveis no campo ctx.rule. Essa função é avaliada durante a fase de análise para cada aplicação de um aspecto a um destino.
attr_aspects sequence of strings; default = []
Lista de nomes de atributos. O aspecto se propaga ao longo das dependências especificadas nos atributos de um destino com esses nomes. Os valores comuns incluem deps e exports. A lista também pode conter uma única string "*" para propagação em todas as dependências de um destino.
attrs dict; or None; default = None
Um dicionário que declara todos os atributos do aspecto. Ele mapeia de um nome de atributo para um objeto de atributo, como "attr.label" ou "attr.string" (consulte o módulo attr). Os atributos de aspecto estão disponíveis para a função de implementação como campos do parâmetro ctx.

Os atributos implícitos que começam com _ precisam ter valores padrão e ser do tipo label ou label_list.

Os atributos explícitos precisam ser do tipo string e usar a restrição values. Os atributos explícitos restringem o aspecto para que ele seja usado apenas com regras que tenham atributos de mesmo nome, tipo e valores válidos de acordo com a restrição.

required_providers default = []
Esse atributo permite que o aspecto limite a propagação apenas aos destinos cujas regras anunciam os provedores necessários. O valor precisa ser uma lista que contenha provedores individuais ou listas de provedores, mas não ambos. Por exemplo, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] é um valor válido, mas [FooInfo, BarInfo, [BazInfo, QuxInfo]] não é.

Uma lista não aninhada de provedores será convertida automaticamente em uma lista com uma lista de provedores. Ou seja, [FooInfo, BarInfo] será convertido automaticamente em [[FooInfo, BarInfo]].

Para tornar algumas regras (por exemplo, some_rule) visíveis a um aspecto, some_rule precisa anunciar todos os provedores de pelo menos uma das listas de provedores obrigatórias. Por exemplo, se o required_providers de um aspecto for [[FooInfo], [BarInfo], [BazInfo, QuxInfo]], ele só poderá ver metas some_rule se e somente se some_rule fornecer FooInfo *ou* BarInfo *ou* ambos BazInfo *e* QuxInfo.

required_aspect_providers default = []
Esse atributo permite que esse aspecto inspecione outros aspectos. O valor precisa ser uma lista que contenha provedores individuais ou listas de provedores, mas não ambos. Por exemplo, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] é um valor válido, mas [FooInfo, BarInfo, [BazInfo, QuxInfo]] não é.

Uma lista não aninhada de provedores será convertida automaticamente em uma lista com uma lista de provedores. Ou seja, [FooInfo, BarInfo] será convertido automaticamente em [[FooInfo, BarInfo]].

Para tornar outro aspecto (por exemplo, other_aspect) visível para esse aspecto, other_aspect precisa fornecer todos os provedores de pelo menos uma das listas. No exemplo de [[FooInfo], [BarInfo], [BazInfo, QuxInfo]], esse aspecto só pode ver other_aspect se e somente se other_aspect fornecer FooInfo *ou* BarInfo *ou* BazInfo *e* QuxInfo.

provides default = []
Uma lista de provedores que a função de implementação precisa retornar.

É um erro se a função de implementação omitir qualquer um dos tipos de provedores listados aqui do valor de retorno. No entanto, a função de implementação pode retornar outros provedores não listados aqui.

Cada elemento da lista é um objeto *Info retornado por provider(), exceto que um provedor legado é representado pelo nome da string.

requires sequence of Aspects; default = []
Lista de aspectos que precisam ser propagados antes deste aspecto.
fragments sequence of strings; default = []
Lista de nomes de fragmentos de configuração que o aspecto exige na configuração de destino.
host_fragments sequence of strings; default = []
Lista de nomes de fragmentos de configuração que o aspecto exige na configuração do host.
toolchains sequence; default = []
Se definido, o conjunto de toolchains exigido por essa regra. A lista pode conter objetos String, Label ou StarlarkToolchainTypeApi, em qualquer combinação. Para encontrar as toolchains, verifique a plataforma atual e forneça-as à implementação da regra usando ctx.toolchain.
incompatible_use_toolchain_transition default = False
Descontinuado. Não está mais em uso e precisa ser removido.
doc default = ''
Uma descrição do aspecto que pode ser extraído por ferramentas de geração de documentação.
apply_to_generating_rules default = False
Se for "true", o aspecto, quando aplicado a um arquivo de saída, será aplicado à regra de geração do arquivo de saída.

Por exemplo, suponha que um aspecto se propague de maneira transitiva pelo atributo "deps" e seja aplicado ao destino "alpha". Suponha que "alpha" tenha "deps = [':beta_output']", em que "beta_output" é uma saída declarada de um destino "beta". Suponha que "beta" tenha um destino "charlie" como uma das "deps". Se "apply_to_generating_rules=True" para o aspecto, ele será propagado por "alpha", "beta" e "charlie". Se for "False", o aspecto será propagado apenas para "alpha".

O padrão é "falso".

exec_compatible_with sequence of strings; default = []
Uma lista de restrições na plataforma de execução que se aplicam a todas as instâncias desse aspecto.
exec_groups dict; or None; default = None
Dicionário do nome do grupo de execução (string) para exec_groups. Se definido, permite que os aspectos executem ações em várias plataformas de execução em uma única instância. Consulte a documentação sobre grupos de execução para mais informações.

bazel_dep

None bazel_dep(name, version='', max_compatibility_level=-1, repo_name='', dev_dependency=False)

Declara uma dependência direta de outro módulo do Bazel.

Parâmetros

Parâmetro Descrição
name obrigatório
O nome do módulo a ser adicionado como uma dependência direta.
version default = ''
A versão do módulo a ser adicionada como uma dependência direta.
max_compatibility_level default = -1
O compatibility_level máximo aceito para que o módulo seja adicionado como uma dependência direta. A versão do módulo implica o nível mínimo de compatibilidade aceito, bem como o máximo, se esse atributo não for especificado.
repo_name default = ''
O nome do repositório externo que representa essa dependência. Esse é o nome padrão do módulo.
dev_dependency default = False
Se for "true", essa dependência será ignorada se o módulo atual não for o módulo raiz ou se `--ignore_dev_dependency` estiver ativado.

vincular

None bind(name, actual=None)

Aviso: não é recomendável usar bind(). Consulte Considere remover o bind para uma discussão longa sobre os problemas e alternativas.

Dá a um destino um alias no pacote //external.

Parâmetros

Parâmetro Descrição
name obrigatório
O rótulo em "//external" para servir como nome do alias
actual string; or None; default = None
O rótulo real a ser apelidado.

bool

bool bool(x=False)

Construtor para o tipo booleano. Ele retorna False se o objeto for None, False, uma string vazia (""), o número 0 ou uma coleção vazia (por exemplo, (), []). Caso contrário, ele retorna True.

Parâmetros

Parâmetro Descrição
x default = False
A variável a ser convertida.

configuration_field

LateBoundDefault configuration_field(fragment, name)

Faz referência a um valor padrão de vinculação tardia para um atributo do tipo rótulo. Um valor é "vinculado tardiamente" se exigir que a configuração seja criada antes de determinar o valor. Qualquer atributo que use isso como um valor precisa ser privado.

Exemplo de uso:

Definir um atributo de regra:

'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))

Acessar na implementação da regra:

  def _rule_impl(ctx):
    foo_info = ctx.attr._foo
    ...

Parâmetros

Parâmetro Descrição
fragment obrigatório
O nome de um fragmento de configuração que contém o valor de vinculação tardia.
name obrigatório
O nome do valor a ser obtido do fragmento de configuração.

depset

depset depset(direct=None, order="default", *, transitive=None)

Cria um depset. O parâmetro direct é uma lista de elementos diretos do conjunto de dependências, e o parâmetro transitive é uma lista de conjuntos de dependências cujos elementos se tornam elementos indiretos do conjunto de dependências criado. A ordem em que os elementos são retornados quando o conjunto de dependências é convertido em uma lista é especificada pelo parâmetro order. Consulte a visão geral de conjuntos de dependências para mais informações.

Todos os elementos (diretos e indiretos) de um conjunto de dependências precisam ser do mesmo tipo, conforme obtido pela expressão type(x).

Como um conjunto baseado em hash é usado para eliminar duplicatas durante a iteração, todos os elementos de um conjunto de dependências precisam ser hasháveis. No entanto, essa invariante não é verificada de forma consistente em todos os construtores. Use a flag --incompatible_always_check_depset_elements para ativar a verificação consistente. Esse será o comportamento padrão em versões futuras. Consulte Problema 10313.

Além disso, os elementos precisam ser imutáveis, mas essa restrição será reduzida no futuro.

A ordem do conjunto de dependências criado precisa ser compatível com a ordem dos conjuntos de dependências transitive. A ordem "default" é compatível com qualquer outra ordem, e todas as outras são compatíveis apenas entre si.

Observação sobre compatibilidade com versões anteriores/futuras. No momento, essa função aceita um parâmetro posicional items. Ele foi descontinuado e será removido no futuro. Depois disso, direct vai se tornar um parâmetro posicional exclusivo da função depset. Portanto, as duas chamadas a seguir são equivalentes e preparadas para o futuro:

depset(['a', 'b'], transitive = [...])
depset(direct = ['a', 'b'], transitive = [...])

Parâmetros

Parâmetro Descrição
direct sequence; or None; default = None
Uma lista de elementos diretos de um conjunto de dependências.
order default = "default"
A estratégia de travessia para o novo conjunto de dependências. Consulte aqui os valores possíveis.
transitive sequence of depsets; or None; default = None
Uma lista de depsets cujos elementos se tornarão elementos indiretos do depset.

dict

dict dict(pairs=[], **kwargs)

Cria um dicionário de um argumento posicional opcional e um conjunto opcional de argumentos de palavra-chave. Se a mesma chave for fornecida várias vezes, o último valor será usado. As entradas fornecidas por argumentos de palavra-chave são consideradas posteriores às entradas fornecidas pelo argumento posicional.

Parâmetros

Parâmetro Descrição
pairs default = []
Um dict ou um iterável em que cada elemento tem comprimento 2 (chave, valor).
kwargs required
Dicionário de entradas adicionais.

dir

list dir(x)

Retorna uma lista de strings: os nomes dos atributos e métodos do objeto de parâmetro.

Parâmetros

Parâmetro Descrição
x obrigatório
O objeto a ser verificado.

enumerar

list enumerate(list, start=0)

Retorna uma lista de pares (tuplas de dois elementos) com o índice (int) e o item da sequência de entrada.
enumerate([24, 21, 84]) == [(0, 24), (1, 21), (2, 84)]

Parâmetros

Parâmetro Descrição
list sequência de entrada
obrigatória.
start default = 0
start index.

exec_group

exec_group exec_group(toolchains=[], exec_compatible_with=[], copy_from_rule=False)

Cria um grupo de execução que pode ser usado para criar ações para uma plataforma de execução específica durante a implementação da regra.

Parâmetros

Parâmetro Descrição
toolchains sequence; default = []
O conjunto de toolchains exigido por este grupo de execução. A lista pode conter objetos String, Label ou StarlarkToolchainTypeApi, em qualquer combinação.
exec_compatible_with sequence of strings; default = []
Uma lista de restrições na plataforma de execução.
copy_from_rule default = False
Se definido como "true", esse grupo de execução vai herdar as cadeias de ferramentas e restrições da regra a que ele está anexado. Se definido como qualquer outra string, isso vai gerar um erro.

fail

None fail(msg=None, attr=None, *args)

Faz com que a execução falhe com um erro.

Parâmetros

Parâmetro Descrição
msg default = None
Descontinuado: use argumentos posicionais. Esse argumento funciona como um argumento posicional inicial implícito.
attr string; or None; default = None
Descontinuado. Faz com que um prefixo opcional contendo essa string seja adicionado à mensagem de erro.
args obrigatório
Uma lista de valores, formatada com debugPrint (que é equivalente a str por padrão) e unida com espaços, que aparece na mensagem de erro.

float

float float(x=unbound)

Retorna x como um valor de ponto flutuante.
  • Se x já for um ponto flutuante, float vai retornar o valor sem alterações.
  • Se x for um booleano, float vai retornar 1,0 para "True" e 0,0 para "False".
  • Se x for um número inteiro, float vai retornar o valor de ponto flutuante finito mais próximo de x ou um erro se a magnitude for muito grande.
  • Se x for uma string, ela precisará ser um literal de ponto flutuante válido ou ser igual (ignorando maiúsculas e minúsculas) a NaN, Inf ou Infinity, precedida opcionalmente por um sinal + ou -.
Qualquer outro valor causa um erro. Sem argumento, float() retorna 0,0.

Parâmetros

Parâmetro Descrição
x default = unbound
O valor a ser convertido.

getattr

unknown getattr(x, name, default=unbound)

Retorna o campo da struct com o nome especificado, se ele existir. Caso contrário, ele retorna default (se especificado) ou gera um erro. getattr(x, "foobar") é equivalente a x.foobar.
getattr(ctx.attr, "myattr")
getattr(ctx.attr, "myattr", "mydefault")

Parâmetros

Parâmetro Descrição
x required
A struct cujo atributo é acessado.
name obrigatório
O nome do atributo struct.
default default = unbound
O valor padrão a ser retornado caso a struct não tenha um atributo com o nome especificado.

git_override

None git_override(module_name, remote, commit='', patches=[], patch_cmds=[], patch_strip=0)

Especifica que uma dependência deve vir de um determinado commit de um repositório Git. Essa diretiva só entra em vigor no módulo raiz. Em outras palavras, se um módulo for usado como dependência por outros, as substituições dele serão ignoradas.

Parâmetros

Parâmetro Descrição
module_name required
O nome da dependência do módulo do Bazel a que essa substituição será aplicada.
remote obrigatório
O URL do repositório Git remoto.
commit default = ''
O commit que precisa ser verificado.
patches Iterable of strings; default = []
Uma lista de rótulos que apontam para arquivos de patch a serem aplicados a este módulo. Os arquivos de patch precisam estar na árvore de origem do projeto de nível superior. Elas são aplicadas na ordem da lista.
patch_cmds Iterable of strings; default = []
Sequência de comandos Bash a serem aplicados no Linux/MacOS depois que os patches forem aplicados.
patch_strip default = 0
Igual ao argumento --strip do patch do Unix.

hasattr

bool hasattr(x, name)

Retorna True se o objeto x tiver um atributo ou método do name especificado. Caso contrário, retorna False. Exemplo:
hasattr(ctx.attr, "myattr")

Parâmetros

Parâmetro Descrição
x obrigatório
O objeto a ser verificado.
name required
O nome do atributo.

jogo da velha

int hash(value)

Retorna um valor de hash para uma string. Isso é calculado de forma determinística usando o mesmo algoritmo de String.hashCode() do Java, ou seja:
No momento, não há suporte para hash de valores que não sejam strings.
s[0] * (31^(n-1)) + s[1] * (31^(n-2)) + ... + s[n-1]

Parâmetros

Parâmetro Descrição
value required
Valor de string a ser gerado o hash.

int

int int(x, base=unbound)

Retorna x como um valor inteiro.
  • Se x já for um número inteiro, int o retornará sem alterações.
  • Se x for um booleano, int vai retornar 1 para "True" e 0 para "False".
  • Se x for uma string, ela precisará ter o formato <sign><prefix><digits>. <sign> é "+", "-" ou vazio (interpretado como positivo). <digits> é uma sequência de dígitos de 0 a base - 1, em que as letras a-z (ou A-Z) são usadas como dígitos de 10 a 35. No caso em que base é 2/8/16, <prefix> é opcional e pode ser 0b/0o/0x (ou, de forma equivalente, 0B/0O/0X), respectivamente. Se base for qualquer outro valor além dessas bases ou do valor especial 0, o prefixo precisará estar vazio. Quando base é 0, a string é interpretada como um literal inteiro, no sentido de que uma das bases 2/8/10/16 é escolhida dependendo de qual prefixo, se houver, é usado. Se base for 0, nenhum prefixo será usado, e se houver mais de um dígito, o primeiro não poderá ser 0. Isso evita confusão entre octal e decimal. A magnitude do número representado pela string precisa estar dentro do intervalo permitido para o tipo int.
  • Se x for um ponto flutuante, int vai retornar o valor inteiro do ponto flutuante, arredondando para zero. É um erro se x for não finito (NaN ou infinito).
Essa função falha se x for de qualquer outro tipo ou se o valor for uma string que não satisfaz o formato acima. Ao contrário da função int do Python, essa função não permite argumentos zero nem espaços em branco desnecessários para argumentos de string.

Exemplos:

int("123") == 123
int("-123") == -123
int("+123") == 123
int("FF", 16) == 255
int("0xFF", 16) == 255
int("10", 0) == 10
int("-0x10", 0) == -16
int("-0x10", 0) == -16
int("123.456") == 123

Parâmetros

Parâmetro Descrição
x obrigatório
A string a ser convertida.
base default = unbound
A base usada para interpretar um valor de string. O padrão é 10. Precisa estar entre 2 e 36 (inclusive) ou ser 0 para detectar a base como se x fosse um literal inteiro. Esse parâmetro não pode ser fornecido se o valor não for uma string.

len

int len(x)

Retorna o comprimento de uma string, sequência (como uma lista ou tupla), dict ou outro iterável.

Parâmetros

Parâmetro Descrição
x obrigatório
O valor cujo comprimento será informado.

list

list list(x=[])

Retorna uma nova lista com os mesmos elementos do valor iterável fornecido.
list([1, 2]) == [1, 2]
list((2, 3, 2)) == [2, 3, 2]
list({5: "a", 2: "b", 4: "c"}) == [5, 2, 4]

Parâmetros

Parâmetro Descrição
x default = []
O objeto a ser convertido.

local_path_override

None local_path_override(module_name, path)

Especifica que uma dependência deve vir de um determinado diretório no disco local. Essa diretiva só entra em vigor no módulo raiz. Em outras palavras, se um módulo for usado como dependência por outros, as substituições dele serão ignoradas.

Parâmetros

Parâmetro Descrição
module_name required
O nome da dependência do módulo do Bazel a que essa substituição será aplicada.
path required
O caminho para o diretório em que este módulo está.

máx.

unknown max(*args)

Retorna o maior de todos os argumentos fornecidos. Se apenas um argumento for fornecido, ele precisará ser um iterável não vazio.Será um erro se os elementos não forem comparáveis (por exemplo, int com string) ou se nenhum argumento for fornecido.
max(2, 5, 4) == 5
max([5, 6, 3]) == 6

Parâmetros

Parâmetro Descrição
args required
Os elementos a serem verificados.

min

unknown min(*args)

Retorna o menor de todos os argumentos fornecidos. Se apenas um argumento for fornecido, ele precisará ser um iterável não vazio. Será um erro se os elementos não forem comparáveis (por exemplo, int com string) ou se nenhum argumento for fornecido.
min(2, 5, 4) == 2
min([5, 6, 3]) == 3

Parâmetros

Parâmetro Descrição
args required
Os elementos a serem verificados.

módulo

None module(name='', version='', compatibility_level=0, repo_name='', bazel_compatibility=[])

Declara determinadas propriedades do módulo do Bazel representado pelo repositório atual do Bazel. Essas propriedades são metadados essenciais do módulo (como nome e versão) ou afetam o comportamento do módulo atual e das dependências dele.

Ele deve ser chamado no máximo uma vez. Ele só pode ser omitido se este módulo for o módulo raiz (ou seja, se não depender de outro módulo).

Parâmetros

Parâmetro Descrição
name default = ''
O nome do módulo. Pode ser omitido apenas se este módulo for o módulo raiz (ou seja, se ele não depender de outro módulo). Um nome de módulo válido precisa: 1) conter apenas letras minúsculas (a-z), dígitos (0-9), pontos (.), hifens (-) e sublinhados (_); 2) começar com uma letra minúscula; 3) terminar com uma letra minúscula ou um dígito.
version default = ''
A versão do módulo. Pode ser omitido apenas se este módulo for o módulo raiz (ou seja, se ele não depender de outro módulo).
compatibility_level default = 0
O nível de compatibilidade do módulo. Ele precisa ser alterado sempre que uma mudança incompatível importante for introduzida. Essa é essencialmente a "versão principal" do módulo em termos de SemVer, exceto que ela não está incorporada na própria string de versão, mas existe como um campo separado. Módulos com níveis de compatibilidade diferentes participam da resolução de versão como se fossem módulos com nomes diferentes, mas o gráfico de dependência final não pode conter vários módulos com o mesmo nome, mas níveis de compatibilidade diferentes, a menos que multiple_version_override esteja em vigor. Consulte mais detalhes lá.
repo_name default = ''
O nome do repositório que representa este módulo, conforme visto pelo próprio módulo. Por padrão, o nome do repositório é o nome do módulo. Isso pode ser especificado para facilitar a migração de projetos que usam um nome de repositório diferente do nome do módulo.
bazel_compatibility Iterable of strings; default = []
Uma lista de versões do Bazel que permite aos usuários declarar quais versões são compatíveis com este módulo. Ela NÃO afeta a resolução de dependências, mas o bzlmod usa essas informações para verificar se a versão atual do Bazel é compatível. O formato desse valor é uma string de alguns valores de restrição separados por vírgula. Três restrições são aceitas: <=X.X.X: a versão do Bazel precisa ser igual ou mais antiga que X.X.X. Usada quando há uma mudança incompatível conhecida em uma versão mais recente. >=X.X.X: a versão do Bazel precisa ser igual ou mais recente que X.X.X.Usado quando você depende de alguns recursos disponíveis apenas desde X.X.X. -X.X.X: a versão X.X.X do Bazel não é compatível. Usado quando há um bug na versão X.X.X que prejudica você, mas foi corrigido em versões posteriores.

module_extension

unknown module_extension(implementation, *, tag_classes={}, doc='', environ=[], os_dependent=False, arch_dependent=False)

Cria uma extensão de módulo. Armazene em um valor global para que possa ser exportado e usado em um arquivo MODULE.bazel.

Parâmetros

Parâmetro Descrição
implementation required
A função que implementa essa extensão de módulo. Precisa usar um único parâmetro, module_ctx. A função é chamada uma vez no início de um build para determinar o conjunto de repositórios disponíveis.
tag_classes default = {}
Um dicionário para declarar todas as classes de tag usadas pela extensão. Ele mapeia do nome da classe de tag para um objeto tag_class.
doc default = ''
Uma descrição da extensão do módulo que pode ser extraída por ferramentas de geração de documentação.
environ sequence of strings; default = []
Fornece uma lista de variáveis de ambiente de que essa extensão de módulo depende. Se uma variável de ambiente nessa lista mudar, a extensão será reavaliada.
os_dependent default = False
Indica se esta extensão depende do SO ou não
arch_dependent default = False
Indica se esta extensão depende da arquitetura ou não

multiple_version_override

None multiple_version_override(module_name, versions, registry='')

Especifica que uma dependência ainda deve vir de um registro, mas várias versões dela podem coexistir. Consulte a documentação para mais detalhes. Essa diretiva só entra em vigor no módulo raiz. Em outras palavras, se um módulo for usado como dependência por outros, as substituições dele serão ignoradas.

Parâmetros

Parâmetro Descrição
module_name required
O nome da dependência do módulo do Bazel a que essa substituição será aplicada.
versions Iterable of strings; required
Especifica explicitamente as versões que podem coexistir. Essas versões já precisam estar presentes na pré-seleção do gráfico de dependências. As dependências desse módulo serão "atualizadas" para a versão permitida mais próxima no mesmo nível de compatibilidade, enquanto as dependências que tiverem uma versão mais recente do que qualquer versão permitida no mesmo nível de compatibilidade vão causar um erro.
registry default = ''
Substitui o registro deste módulo. Em vez de encontrar este módulo na lista padrão de registros, o registro fornecido deve ser usado.

mostrar

None print(sep=" ", *args)

Imprime args como saída de depuração. Ele terá como prefixo a string "DEBUG" e o local (arquivo e número da linha) dessa chamada. A maneira exata como os argumentos são convertidos em strings não é especificada e pode mudar a qualquer momento. Em particular, ele pode ser diferente (e mais detalhado) da formatação feita por str() e repr().

Não é recomendável usar print em código de produção devido ao spam que ele cria para os usuários. Para descontinuações, prefira um erro fatal usando fail() sempre que possível.

Parâmetros

Parâmetro Descrição
sep default = " "
A string separadora entre os objetos. O padrão é espaço (" ").
args required
Os objetos a serem impressos.

provedor

unknown provider(doc='', *, fields=None, init=None)

Define um símbolo de provedor. O provedor pode ser instanciado chamando-o ou usado diretamente como uma chave para recuperar uma instância desse provedor de um destino. Exemplo:
MyInfo = provider()
...
def _my_library_impl(ctx):
    ...
    my_info = MyInfo(x = 2, y = 3)
    # my_info.x == 2
    # my_info.y == 3
    ...

Consulte Regras (provedores) para um guia completo sobre como usar provedores.

Retorna um valor de chamada Provider se init não for especificado.

Se init for especificado, vai retornar uma tupla de dois elementos: um valor de chamada Provider e um valor de chamada construtor bruto. Consulte Regras (inicialização personalizada de provedores personalizados) e a discussão do parâmetro init abaixo para mais detalhes.

Parâmetros

Parâmetro Descrição
doc default = ''
Uma descrição do provedor que pode ser extraída por ferramentas de geração de documentação.
fields sequence of strings; or dict; or None; default = None
Se especificado, restringe o conjunto de campos permitidos.
Os valores possíveis são:
  • Lista de campos:
    provider(fields = ['a', 'b'])

  • dictionary field name -> documentation:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
Todos os campos são opcionais.
init callable; or None; default = None
Um callback opcional para pré-processar e validar os valores de campo do provedor durante a instanciação. Se init for especificado, provider() vai retornar uma tupla de dois elementos: o símbolo do provedor normal e um construtor bruto.

Confira uma descrição precisa em Regras (inicialização personalizada de provedores) para uma discussão intuitiva e casos de uso.

Seja P o símbolo do provedor criado chamando provider(). Conceitualmente, uma instância de P é gerada chamando uma função de construtor padrão c(*args, **kwargs), que faz o seguinte:

  • Se args não estiver vazio, ocorrerá um erro.
  • Se o parâmetro fields foi especificado quando provider() foi chamado e se kwargs contém alguma chave que não foi listada em fields, um erro ocorre.
  • Caso contrário, c vai retornar uma nova instância que tem, para cada entrada k: v em kwargs, um campo chamado k com o valor v.
No caso em que um callback init não é fornecido, uma chamada ao próprio símbolo P atua como uma chamada à função construtora padrão c. Em outras palavras, P(*args, **kwargs) retorna c(*args, **kwargs). Por exemplo,
MyInfo = provider()
m = MyInfo(foo = 1)
vai fazer com que m seja uma instância MyInfo com m.foo == 1.

Mas, no caso em que init é especificado, a chamada P(*args, **kwargs) executa as seguintes etapas:

  1. O callback é invocado como init(*args, **kwargs), ou seja, com os mesmos argumentos posicionais e de palavra-chave transmitidos para P.
  2. O valor de retorno de init precisa ser um dicionário, d, cujas chaves são strings de nome de campo. Caso contrário, um erro vai ocorrer.
  3. Uma nova instância de P é gerada como se fosse uma chamada do construtor padrão com as entradas de d como argumentos de palavra-chave, como em c(**d).

Observação: as etapas acima implicam que um erro ocorre se *args ou **kwargs não corresponder à assinatura de init ou se a avaliação do corpo de init falhar (talvez intencionalmente por uma chamada para fail()) ou se o valor de retorno de init não for um dicionário com o esquema esperado.

Dessa forma, o callback init generaliza a construção normal do provedor, permitindo argumentos posicionais e lógica arbitrária para pré-processamento e validação. Ela não permite burlar a lista de fields permitidos.

Quando init é especificado, o valor de retorno de provider() se torna uma tupla (P, r), em que r é o construtor bruto. Na verdade, o comportamento de r é exatamente o da função construtora padrão c discutida acima. Normalmente, r é vinculado a uma variável cujo nome é prefixado com um sublinhado para que apenas o arquivo .bzl atual tenha acesso direto a ele:

MyInfo, _new_myinfo = provider(init = ...)

período

sequence range(start_or_stop, stop_or_none=None, step=1)

Cria uma lista em que os itens vão de start a stop, usando um incremento de step. Se um único argumento for fornecido, os itens vão variar de 0 até esse elemento.
range(4) == [0, 1, 2, 3]
range(3, 9, 2) == [3, 5, 7]
range(3, 0, -1) == [3, 2, 1]

Parâmetros

Parâmetro Descrição
start_or_stop required
Valor do elemento inicial se "stop" for fornecido. Caso contrário, valor de "stop" e o início real será 0.
stop_or_none int; or None; default = None
índice opcional do primeiro item não a ser incluído na lista resultante. A geração da lista é interrompida antes que stop seja alcançado.
step default = 1
O incremento (o padrão é 1). Ele pode ser negativo.

register_execution_platforms()

None register_execution_platforms(*platform_labels)

Registre uma plataforma já definida para que o Bazel possa usá-la como uma plataforma de execução durante a resolução da cadeia de ferramentas.

Parâmetros

Parâmetro Descrição
platform_labels sequence of strings; required
Os rótulos das plataformas a serem registradas.

register_execution_platforms(dev_dependency)

None register_execution_platforms(dev_dependency=False, *platform_labels)

Especifica plataformas de execução já definidas que serão registradas quando este módulo for selecionado. Devem ser padrões de destino absolutos (ou seja, que começam com @ ou //). Consulte resolução da cadeia de ferramentas para mais informações.

Parâmetros

Parâmetro Descrição
dev_dependency default = False
Se for "true", as plataformas de execução não serão registradas se o módulo atual não for o módulo raiz ou se `--ignore_dev_dependency` estiver ativado.
platform_labels sequence of strings; required
Os rótulos das plataformas a serem registradas.

register_toolchains()

None register_toolchains(*toolchain_labels)

Registre um conjunto de ferramentas já definido para que o Bazel possa usá-lo durante a resolução do conjunto de ferramentas. Confira exemplos de como definir e registrar cadeias de ferramentas.

Parâmetros

Parâmetro Descrição
toolchain_labels sequence of strings; required
Os rótulos das cadeias de ferramentas a serem registradas.

register_toolchains(dev_dependency)

None register_toolchains(dev_dependency=False, *toolchain_labels)

Especifica as toolchains já definidas que serão registradas quando este módulo for selecionado. Devem ser padrões de destino absolutos (ou seja, que começam com @ ou //). Consulte resolução da cadeia de ferramentas para mais informações.

Parâmetros

Parâmetro Descrição
dev_dependency default = False
Se for "true", as toolchains não serão registradas se o módulo atual não for o módulo raiz ou se `--ignore_dev_dependency` estiver ativado.
toolchain_labels sequence of strings; required
Os rótulos das cadeias de ferramentas a serem registradas.

repository_rule

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')

Cria uma regra de repositório. Armazene em um valor global para que possa ser carregado e chamado do arquivo WORKSPACE.

Parâmetros

Parâmetro Descrição
implementation required
a função que implementa essa regra. Precisa ter um único parâmetro, repository_ctx. A função é chamada durante a fase de carregamento para cada instância da regra.
attrs dict; or None; default = None
dicionário para declarar todos os atributos da regra. Ele mapeia de um nome de atributo para um objeto de atributo (consulte o módulo attr). Os atributos que começam com _ são particulares e podem ser usados para adicionar uma dependência implícita de um rótulo a um arquivo. Uma regra de repositório não pode depender de um artefato gerado. O atributo name é adicionado implicitamente e não pode ser especificado.
local default = False
Indica que essa regra busca tudo do sistema local e precisa ser reavaliada a cada busca.
environ sequence of strings; default = []
Fornece uma lista de variáveis de ambiente de que essa regra de repositório depende. Se uma variável de ambiente nessa lista mudar, o repositório será buscado novamente.
configure default = False
Indica que o repositório inspeciona o sistema para fins de configuração
remotable default = False
Experimental. Esse parâmetro é experimental e pode mudar a qualquer momento. Não dependa dela. Ele pode ser ativado experimentalmente definindo ---experimental_repo_remote_exec
Compatível com execução remota
doc default = ''
Uma descrição da regra do repositório que pode ser extraída por ferramentas de geração de documentação.

repr

string repr(x)

Converte qualquer objeto em uma representação de string. Isso é útil para depuração.
repr("ab") == '"ab"'

Parâmetros

Parâmetro Descrição
x obrigatório
O objeto a ser convertido.

anulou

list reversed(sequence)

Retorna uma nova lista não congelada que contém os elementos da sequência iterável original em ordem invertida.
reversed([3, 5, 4]) == [4, 5, 3]

Parâmetros

Parâmetro Descrição
sequence required
A sequência iterável (por exemplo, lista) a ser invertida.

regra

callable rule(implementation, test=False, attrs=None, outputs=None, executable=False, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, compile_one_filetype=None, name=None)

Cria uma regra que pode ser chamada de um arquivo BUILD ou uma macro para criar destinos.

As regras precisam ser atribuídas a variáveis globais em um arquivo .bzl. O nome da variável global é o nome da regra.

As regras de teste precisam ter um nome que termine em _test, enquanto todas as outras regras não podem ter esse sufixo. Essa restrição se aplica apenas a regras, não aos destinos delas.

Parâmetros

Parâmetro Descrição
implementation required
a função Starlark que implementa essa regra precisa ter exatamente um parâmetro: ctx. A função é chamada durante a fase de análise para cada instância da regra. Ele pode acessar os atributos fornecidos pelo usuário. Ele precisa criar ações para gerar todas as saídas declaradas.
test default = False
Indica se a regra é de teste, ou seja, se ela pode ser o assunto de um comando blaze test. Todas as regras de teste são consideradas executáveis automaticamente. Não é necessário (e não é recomendado) definir explicitamente executable = True para uma regra de teste. Consulte a página "Regras" para mais informações.
attrs dict; or None; default = None
dicionário para declarar todos os atributos da regra. Ele mapeia de um nome de atributo para um objeto de atributo (consulte o módulo attr). Atributos que começam com _ são particulares e podem ser usados para adicionar uma dependência implícita a um rótulo. O atributo name é adicionado implicitamente e não pode ser especificado. Os atributos visibility, deprecation, tags, testonly e features são adicionados implicitamente e não podem ser substituídos. A maioria das regras precisa apenas de alguns atributos. Para limitar o uso de memória, a função de regra impõe um limite no tamanho de attrs.
outputs dict; or None; or function; default = None
Descontinuado. Esse parâmetro foi descontinuado e será removido em breve. Não dependa dela. Ela fica desativada com ---incompatible_no_rule_outputs_param. Use essa flag para verificar se seu código é compatível com a remoção iminente.
Este parâmetro foi descontinuado. Migre as regras para usar OutputGroupInfo ou attr.output.

Um esquema para definir saídas pré-declaradas. Ao contrário dos atributos output e output_list, o usuário não especifica os rótulos desses arquivos. Consulte a página "Regras" para mais informações sobre saídas pré-declaradas.

O valor desse argumento é um dicionário ou uma função de callback que produz um dicionário. O callback funciona de maneira semelhante aos atributos de dependência calculados: os nomes dos parâmetros da função são correspondidos aos atributos da regra. Por exemplo, se você transmitir outputs = _my_func com a definição def _my_func(srcs, deps): ..., a função terá acesso aos atributos srcs e deps. Seja especificado diretamente ou por uma função, o dicionário é interpretado da seguinte maneira.

Cada entrada no dicionário cria uma saída pré-declarada em que a chave é um identificador e o valor é um modelo de string que determina o rótulo da saída. Na função de implementação da regra, o identificador se torna o nome do campo usado para acessar o File da saída em ctx.outputs. O rótulo da saída tem o mesmo pacote da regra, e a parte depois do pacote é produzida substituindo cada marcador de posição da forma "%{ATTR}" por uma string formada pelo valor do atributo ATTR:

  • Os atributos do tipo string são substituídos literalmente.
  • Os atributos do tipo rótulo se tornam parte do rótulo após o pacote, menos a extensão do arquivo. Por exemplo, o marcador "//pkg:a/b.c" se torna "a/b".
  • Os atributos com tipo de saída se tornam parte do rótulo após o pacote, incluindo a extensão do arquivo (no exemplo acima, "a/b.c").
  • Todos os atributos do tipo lista (por exemplo, attr.label_list) usados em marcadores de posição precisam ter exatamente um elemento. A conversão é igual à versão não listada (attr.label).
  • Outros tipos de atributos podem não aparecer em marcadores de posição.
  • Os marcadores de posição especiais sem atributo %{dirname} e %{basename} são expandidos para essas partes do rótulo da regra, excluindo o pacote. Por exemplo, em "//pkg:a/b.c", o dirname é a e o basename é b.c.

Na prática, o marcador de posição de substituição mais comum é "%{name}". Por exemplo, para um destino chamado "foo", o dicionário de saídas {"bin": "%{name}.exe"} pré-declara uma saída chamada foo.exe, que pode ser acessada na função de implementação como ctx.outputs.bin.

executable default = False
Indica se essa regra é considerada executável, ou seja, se ela pode ser o assunto de um comando blaze run. Consulte a página "Regras" para mais informações.
output_to_genfiles default = False
Se for "true", os arquivos serão gerados no diretório "genfiles" em vez de "bin". A menos que você precise dela para compatibilidade com regras atuais (por exemplo, ao gerar arquivos de cabeçalho para C++), não defina essa flag.
fragments sequence of strings; default = []
Lista de nomes de fragmentos de configuração que a regra exige na configuração de destino.
host_fragments sequence of strings; default = []
Lista de nomes de fragmentos de configuração que a regra exige na configuração do host.
_skylark_testable default = False
(Experimental)

Se for "true", essa regra vai expor as ações dela para inspeção por regras que dependem dela usando um provedor Actions. O provedor também está disponível para a própria regra chamando ctx.created_actions().

Isso só deve ser usado para testar o comportamento no momento da análise das regras do Starlark. Essa flag pode ser removida no futuro.
toolchains sequence; default = []
Se definido, o conjunto de toolchains exigido por essa regra. A lista pode conter objetos String, Label ou StarlarkToolchainTypeApi, em qualquer combinação. Para encontrar as toolchains, verifique a plataforma atual e forneça-as à implementação da regra usando ctx.toolchain.
incompatible_use_toolchain_transition default = False
Descontinuado. Não está mais em uso e precisa ser removido.
doc default = ''
Uma descrição da regra que pode ser extraída por ferramentas de geração de documentação.
provides default = []
Uma lista de provedores que a função de implementação precisa retornar.

É um erro se a função de implementação omitir qualquer um dos tipos de provedores listados aqui do valor de retorno. No entanto, a função de implementação pode retornar outros provedores não listados aqui.

Cada elemento da lista é um objeto *Info retornado por provider(), exceto que um provedor legado é representado pelo nome da string.

exec_compatible_with sequence of strings; default = []
Uma lista de restrições na plataforma de execução que se aplicam a todos os destinos desse tipo de regra.
analysis_test default = False
Se for "true", essa regra será tratada como um teste de análise.

Observação: as regras de teste de análise são definidas principalmente usando a infraestrutura fornecida nas bibliotecas principais do Starlark. Consulte Testes para orientações.

Se uma regra for definida como uma regra de teste de análise, ela poderá usar transições de configuração definidas com analysis_test_transition nos atributos, mas terá algumas restrições:

  • Os destinos dessa regra são limitados no número de dependências transitivas que podem ter.
  • A regra é considerada uma regra de teste (como se test=True estivesse definido). Isso substitui o valor de test
  • A função de implementação da regra pode não registrar ações. Em vez disso, ele precisa registrar um resultado de aprovação/reprovação fornecendo AnalysisTestResultInfo.
build_setting BuildSetting; or None; default = None
Se definido, descreve que tipo de build setting essa regra é. Consulte o módulo config. Se essa opção estiver definida, um atributo obrigatório chamado "build_setting_default" será adicionado automaticamente a essa regra, com um tipo correspondente ao valor transmitido aqui.
cfg default = None
Se definido, aponta para a transição de configuração que a regra vai aplicar à própria configuração antes da análise.
exec_groups dict; or None; default = None
Dicionário do nome do grupo de execução (string) para exec_groups. Se definido, permite que as regras executem ações em várias plataformas de execução em um único destino. Consulte a documentação sobre grupos de execução para mais informações.
compile_one_filetype sequence of strings; or None; default = None
Usado por --compile_one_dependency: se várias regras consumirem o arquivo especificado, devemos escolher esta regra em vez de outras.
name string; or None; default = None
Descontinuado. Esse parâmetro foi descontinuado e será removido em breve. Não dependa dela. Ela fica desativada com --+incompatible_remove_rule_name_parameter. Use essa flag para verificar se seu código é compatível com a remoção iminente.
Descontinuado: não use.

O nome dessa regra, conforme entendido pelo Bazel e informado em contextos como geração de registros, native.existing_rule(...)[kind] e bazel query. Normalmente, é o mesmo que o identificador Starlark vinculado a essa regra. Por exemplo, uma regra chamada foo_library normalmente seria declarada como foo_library = rule(...) e instanciada em um arquivo BUILD como foo_library(...).

Se esse parâmetro for omitido, o nome da regra será definido como o nome da primeira variável global do Starlark a ser vinculada a essa regra no módulo .bzl de declaração. Assim, foo_library = rule(...) não precisa especificar esse parâmetro se o nome for foo_library.

Especificar um nome explícito para uma regra não muda onde você pode instanciar a regra.

selecionar

unknown select(x, no_match_error='')

select() é a função auxiliar que torna um atributo de regra configurável. Consulte a enciclopédia de builds para mais detalhes.

Parâmetros

Parâmetro Descrição
x required
Um dicionário que mapeia condições de configuração para valores. Cada chave é um rótulo ou uma string de rótulo que identifica uma instância de config_setting ou constraint_value. Consulte a documentação sobre macros para saber quando usar um rótulo em vez de uma string.
no_match_error default = ''
Erro personalizado opcional a ser informado se nenhuma condição corresponder.

single_version_override

None single_version_override(module_name, version='', registry='', patches=[], patch_cmds=[], patch_strip=0)

Especifica que uma dependência ainda deve vir de um registro, mas a versão precisa ser fixada, o registro substituído ou uma lista de patches aplicada. Essa diretiva só entra em vigor no módulo raiz. Em outras palavras, se um módulo for usado como dependência por outros, as substituições dele serão ignoradas.

Parâmetros

Parâmetro Descrição
module_name required
O nome da dependência do módulo do Bazel a que essa substituição será aplicada.
version default = ''
Substitui a versão declarada deste módulo no gráfico de dependência. Em outras palavras, esse módulo será "fixado" nessa versão de substituição. Esse atributo pode ser omitido se tudo o que se quer substituir é o registro ou os patches.
registry default = ''
Substitui o registro deste módulo. Em vez de encontrar este módulo na lista padrão de registros, o registro fornecido deve ser usado.
patches Iterable of strings; default = []
Uma lista de rótulos que apontam para arquivos de patch a serem aplicados a este módulo. Os arquivos de patch precisam estar na árvore de origem do projeto de nível superior. Elas são aplicadas na ordem da lista.
patch_cmds Iterable of strings; default = []
Sequência de comandos Bash a serem aplicados no Linux/MacOS depois que os patches forem aplicados.
patch_strip default = 0
Igual ao argumento --strip do patch do Unix.

ordenada

list sorted(iterable, *, key=None, reverse=False)

Retorna uma nova lista classificada contendo todos os elementos da sequência iterável fornecida. Um erro pode ocorrer se um par de elementos x, y não puder ser comparado usando x < y. Os elementos são classificados em ordem crescente, a menos que o argumento "reverse" seja "True", nesse caso, a ordem é decrescente. A classificação é estável: elementos que são iguais mantêm a ordem relativa original.
sorted([3, 5, 4]) == [3, 4, 5]

Parâmetros

Parâmetro Descrição
iterable obrigatório
A sequência iterável a ser classificada.
key default = None
Uma função opcional aplicada a cada elemento antes da comparação.
reverse default = False
Retorna resultados em ordem decrescente.

str

string str(x)

Converte qualquer objeto em string. Isso é útil para depuração.
str("ab") == "ab"
str(8) == "8"

Parâmetros

Parâmetro Descrição
x obrigatório
O objeto a ser convertido.

tag_class

tag_class tag_class(attrs={}, *, doc='')

Cria um objeto tag_class, que define um esquema de atributo para uma classe de tags, que são objetos de dados utilizáveis por uma extensão de módulo.

Parâmetros

Parâmetro Descrição
attrs default = {}
Um dicionário para declarar todos os atributos dessa classe de tag. Ele mapeia de um nome de atributo para um objeto de atributo (consulte o módulo attr).
doc default = ''
Uma descrição da classe de tag que pode ser extraída por ferramentas de geração de documentação.

tuple

tuple tuple(x=())

Retorna uma tupla com os mesmos elementos do valor iterável especificado.
tuple([1, 2]) == (1, 2)
tuple((2, 3, 2)) == (2, 3, 2)
tuple({5: "a", 2: "b", 4: "c"}) == (5, 2, 4)

Parâmetros

Parâmetro Descrição
x default = ()
O objeto a ser convertido.

tipo

string type(x)

Retorna o nome do tipo do argumento. Isso é útil para depuração e verificação de tipos. Exemplos:
type(2) == "int"
type([1]) == "list"
type(struct(a = 2)) == "struct"
Essa função pode mudar no futuro. Para escrever um código compatível com Python e evitar problemas futuros, use-o apenas para comparar valores de retorno:
if type(x) == type([]):  # if x is a list

Parâmetros

Parâmetro Descrição
x required
O objeto para verificar o tipo.

use_extension

module_extension_proxy use_extension(extension_bzl_file, extension_name, *, dev_dependency=False, isolate=False)

Retorna um objeto proxy que representa uma extensão de módulo. Os métodos dele podem ser invocados para criar tags de extensão de módulo.

Parâmetros

Parâmetro Descrição
extension_bzl_file obrigatório
Um rótulo para o arquivo Starlark que define a extensão do módulo.
extension_name obrigatório
O nome da extensão de módulo a ser usada. Um símbolo com esse nome precisa ser exportado pelo arquivo Starlark.
dev_dependency default = False
Se for "true", esse uso da extensão do módulo será ignorado se o módulo atual não for o módulo raiz ou se `--ignore_dev_dependency` estiver ativado.
isolate default = False
Experimental. Esse parâmetro é experimental e pode mudar a qualquer momento. Não dependa dela. Ele pode ser ativado experimentalmente definindo ---experimental_isolated_extension_usages
Se for "true", esse uso da extensão do módulo será isolado de todos os outros usos, tanto neste quanto em outros módulos. As tags criadas para esse uso não afetam outros usos, e os repositórios gerados pela extensão para esse uso são diferentes de todos os outros repositórios gerados pela extensão.

No momento, esse parâmetro é experimental e está disponível apenas com a flag --experimental_isolated_extension_usages.

use_repo

None use_repo(extension_proxy, *args, **kwargs)

Importa um ou mais repositórios gerados pela extensão de módulo especificada para o escopo do módulo atual.

Parâmetros

Parâmetro Descrição
extension_proxy required
Um objeto proxy de extensão de módulo retornado por uma chamada use_extension.
args obrigatório
Os nomes dos repositórios a serem importados.
kwargs required
Especifica determinados repositórios para importar para o escopo do módulo atual com nomes diferentes. As chaves precisam ser o nome a ser usado no escopo atual, enquanto os valores precisam ser os nomes originais exportados pela extensão do módulo.

visibilidade

None visibility(value)

Define a visibilidade de carga do módulo .bzl que está sendo inicializado.

A visibilidade de carga de um módulo determina se outros arquivos BUILD e .bzl podem carregá-lo. Isso é diferente da visibilidade de destino do arquivo de origem .bzl subjacente, que determina se o arquivo pode aparecer como uma dependência de outros destinos. A visibilidade de carregamento funciona no nível dos pacotes: para carregar um módulo, o arquivo que faz o carregamento precisa estar em um pacote que tenha recebido visibilidade para o módulo. Um módulo sempre pode ser carregado no próprio pacote, independente da visibilidade.

visibility() só pode ser chamado uma vez por arquivo .bzl e apenas no nível superior, não dentro de uma função. O estilo preferido é colocar essa chamada imediatamente abaixo das instruções load() e de qualquer lógica breve necessária para determinar o argumento.

Se a flag --check_bzl_visibility estiver definida como "false", as violações de visibilidade de carregamento vão emitir avisos, mas não vão falhar na build.

Parâmetros

Parâmetro Descrição
value obrigatório
Uma lista de strings de especificação de pacote ou uma única string de especificação de pacote.

As especificações de pacote seguem o mesmo formato do package_group, exceto que especificações negativas não são permitidas. Ou seja, uma especificação pode ter as formas:

  • "//foo": o pacote //foo
  • "//foo/...": o pacote //foo e todos os subpacotes dele.
  • "public" ou "private": todos os pacotes ou nenhum pacote, respectivamente

A sintaxe "@" não é permitida. Todas as especificações são interpretadas em relação ao repositório do módulo atual.

Se value for uma lista de strings, o conjunto de pacotes com visibilidade concedida a esse módulo será a união dos pacotes representados por cada especificação. Uma lista vazia tem o mesmo efeito que private. Se value for uma única string, ela será tratada como se fosse a lista singleton [value].

As flags --incompatible_package_group_has_public_syntax e --incompatible_fix_package_group_reporoot_syntax não têm efeito nesse argumento. Os valores "public" e "private" estão sempre disponíveis, e "//..." é sempre interpretado como "todos os pacotes no repositório atual".

espaço de trabalho

None workspace(name)

Essa função só pode ser usada em um arquivo WORKSPACE e precisa ser declarada antes de todas as outras funções nesse arquivo.WORKSPACE Cada arquivo WORKSPACE precisa ter uma função workspace.

Define o nome do espaço de trabalho. Os nomes dos espaços de trabalho precisam ser uma descrição do projeto no estilo de pacote Java, usando sublinhados como separadores. Por exemplo, github.com/bazelbuild/bazel deve usar com_github_bazelbuild_bazel.

Esse nome é usado para o diretório em que os runfiles do repositório são armazenados. Por exemplo, se houver um arquivo de execução foo/bar no repositório local e o arquivo WORKSPACE contiver workspace(name = 'baz'), o arquivo de execução estará disponível em mytarget.runfiles/baz/foo/bar. Se nenhum nome de espaço de trabalho for especificado, o arquivo de execução será vinculado por um link simbólico a bar.runfiles/foo/bar.

Os nomes das regras de repositório remoto precisam ser nomes de espaços de trabalho válidos. Por exemplo, você pode ter maven_jar(name = 'foo'), mas não maven_jar(name = 'foo%bar'), porque o Bazel tentaria gravar um arquivo WORKSPACE para o maven_jar que contém workspace(name = 'foo%bar').

Parâmetros

Parâmetro Descrição
name obrigatório
o nome do espaço de trabalho. Os nomes precisam começar com uma letra e só podem conter letras, números, sublinhados, traços e pontos.

zip

list zip(*args)

Retorna um list de tuples, em que a tupla i-ésima contém o elemento i-ésimo de cada uma das sequências ou iteráveis de argumentos. A lista tem o tamanho da entrada mais curta. Com um único argumento iterável, ele retorna uma lista de tuplas de um elemento. Sem argumentos, ele retorna uma lista vazia. Exemplos:
zip()  # == []
zip([1, 2])  # == [(1,), (2,)]
zip([1, 2], [3, 4])  # == [(1, 3), (2, 4)]
zip([1, 2], [3, 4, 5])  # == [(1, 3), (2, 4)]

Parâmetros

Parâmetro Descrição
args obrigatório
para compactar.