Membros
- analysis_test_transition
- aspect
- configuration_field
- depset
- exec_group
- exec_transition
- macro
- module_extension
- provedor
- repository_rule
- regra
- selecione
- subrule
- tag_class
- visibility
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 a 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 projetada principalmente para facilitar a biblioteca principal do Analysis Test Framework. Consulte a documentação ou a implementação dele para conferir as práticas recomendadas.
Parâmetros
| Parâmetro | Descrição | 
|---|---|
| settings | dict;
                                     required Um dicionário que contém informações sobre as configurações que devem 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. | 
aspecto
Aspect aspect(implementation, attr_aspects=[], toolchains_aspects=[], attrs={}, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc=None, *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None, subrules=[])
Parâmetros
| Parâmetro | Descrição | 
|---|---|
| implementation | function;
                                     required Uma função do Starlark que implementa esse aspecto, com exatamente dois parâmetros: Target (o destino a que o aspecto é aplicado) e ctx (o contexto da regra em 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 de strings;
                                     o padrão é []Lista de nomes de atributos. O aspecto se propaga pelas dependências especificadas nos atributos de um destino com esses nomes. Os valores comuns incluem depseexports. A lista também pode conter uma única string"*"para propagação em todas as dependências de um destino. | 
| toolchains_aspects | sequence;
                                     o padrão é []Lista de tipos de cadeia de ferramentas. O aspecto é propagado para conjuntos de ferramentas de destino que correspondem a esses tipos. | 
| attrs | dict;
                                     o padrão é {}Um dicionário que declara todos os atributos do aspecto. Ele mapeia de um nome de atributo para um objeto de atributo, como attr.labelouattr.string(consulte o móduloattr). Os atributos de aspecto estão disponíveis para a função de implementação como campos do parâmetroctx.Os atributos implícitos que começam com  Os atributos explícitos precisam ser do tipo  Os atributos declarados vão converter  | 
| required_providers | sequence;
                                     o padrão é []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,  Para tornar algumas regras (por exemplo,  | 
| required_aspect_providers | sequence;
                                     o padrão é []Esse atributo permite que o 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,  Para tornar outro aspecto (por exemplo,  | 
| provides | sequence;
                                     o padrão é []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  | 
| requires | sequence de Aspects;
                                     o padrão é []Lista de aspectos que precisam ser propagados antes deste aspecto. | 
| fragments | sequence de strings;
                                     o padrão é []Lista de nomes de fragmentos de configuração que o aspecto exige na configuração de destino. | 
| host_fragments | sequence de strings;
                                     o padrão é []Lista de nomes de fragmentos de configuração que o aspecto exige na configuração do host. | 
| toolchains | sequence;
                                     o padrão é []Se definido, o conjunto de toolchains exigido por esse aspecto. A lista pode conter objetos String, Label ou StarlarkToolchainTypeApi, em qualquer combinação. As toolchains são encontradas verificando a plataforma atual e fornecidas à implementação do aspecto via ctx.toolchain. | 
| incompatible_use_toolchain_transition | bool;
                                     o padrão é FalseDescontinuado. Não está mais em uso e deve ser removido. | 
| doc | string ou None;
                                     o padrão éNoneUma descrição do aspecto que pode ser extraído por ferramentas de geração de documentação. | 
| apply_to_generating_rules | bool;
                                     o padrão é FalseSe 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 de strings;
                                     o padrão é []Uma lista de restrições na plataforma de execução que se aplicam a todas as instâncias desse aspecto. | 
| exec_groups | dict ou None. O padrão é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. | 
| subrules | sequência de Subrules;
                                     o padrão é []Experimental: lista de subregras usadas por esse aspecto. | 
configuration_field
LateBoundDefault configuration_field(fragment, name)
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 | string;
                                     required O nome de um fragmento de configuração que contém o valor de vinculação tardia. | 
| name | string;
                                     required O nome do valor a ser obtido do fragmento de configuração. | 
depset
depset depset(direct=None, order="default", *, transitive=None)
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 dos depsets 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.
          
      
Parâmetros
| Parâmetro | Descrição | 
|---|---|
| direct | sequence ou None; o padrão éNone. Uma lista de elementos diretos de um conjunto de dependências. | 
| order | string;
                                     o padrão é "default"A estratégia de travessia para o novo conjunto de dependências. Consulte aqui os valores possíveis. | 
| transitive | sequência de depsets ou None; o padrão éNone. Uma lista de depsets cujos elementos se tornarão elementos indiretos do depset. | 
exec_group
exec_group exec_group(toolchains=[], exec_compatible_with=[])
Parâmetros
| Parâmetro | Descrição | 
|---|---|
| toolchains | sequence;
                                     o padrão é []O conjunto de cadeias de ferramentas que esse grupo de execução exige. A lista pode conter objetos String, Label ou StarlarkToolchainTypeApi, em qualquer combinação. | 
| exec_compatible_with | sequence de strings;
                                     o padrão é []Uma lista de restrições na plataforma de execução. | 
exec_transition
transition exec_transition(implementation, inputs, outputs)
transition() usada para definir a transição de execução. Consulte a documentação ou a implementação dele para conferir as práticas recomendadas. Só pode ser usado nos builtins do Bazel.
          
      Parâmetros
| Parâmetro | Descrição | 
|---|---|
| implementation | callable;
                                     required | 
| inputs | sequência de strings; obrigatório | 
| outputs | sequência de strings; obrigatório | 
macro
macro macro(implementation, attrs={}, inherit_attrs=None, finalizer=False, doc=None)
BUILD (legados ou
simbólicos) para definir destinos, possivelmente vários.
O valor retornado por macro(...) precisa ser atribuído a uma variável global em um arquivo .bzl. O nome da variável global será o nome do símbolo da macro.
Consulte Macros para um guia completo sobre como usar macros simbólicas.
Parâmetros
| Parâmetro | Descrição | 
|---|---|
| implementation | function;
                                     required A função do Starlark que implementa essa macro. Os valores dos atributos da macro são transmitidos para a função de implementação como argumentos de palavra-chave. A função de implementação precisa ter pelo menos dois parâmetros nomeados, nameevisibility, e, se a macro herdar atributos (consulteinherit_attrsabaixo), ela precisará ter um parâmetro de palavra-chave residual**kwargs.Por convenção, a função de implementação precisa ter um parâmetro nomeado para qualquer atributo que
a macro precise examinar, modificar ou transmitir para destinos que não sejam "principais". Já os atributos "em massa" herdados
que serão transmitidos ao destino "principal" sem alterações são transmitidos como  A função de implementação não pode retornar um valor. Em vez disso, a função de implementação declara destinos chamando símbolos de regra ou macro. O nome de qualquer macro simbólica de destino ou interna declarada por uma macro simbólica (incluindo qualquer função do Starlark que a função de implementação da macro chame de forma transitiva) precisa ser igual a  Por padrão, os destinos declarados por uma macro simbólica (incluindo qualquer função do Starlark que a
função de implementação da macro chame de forma transitiva) ficam visíveis apenas no pacote que contém o
arquivo .bzl que define a macro. Para declarar destinos visíveis externamente, inclusive para o chamador da macro simbólica, a função de implementação precisa definir  As APIs a seguir não estão disponíveis em uma função de implementação de macro e em qualquer função do Starlark que ela chama de maneira transitiva: 
 | 
| attrs | dict;
                                     o padrão é {}Um dicionário dos atributos compatíveis com essa macro, análogo a rule.attrs. As chaves são nomes de atributos, e os valores são objetos de atributos, como attr.label_list(...)(consulte o módulo attr), ouNone. Uma entradaNonesignifica que a macro não tem um atributo com esse nome, mesmo que ele tenha sido herdado porinherit_attrs(veja abaixo).O atributo especial  Atributos com nomes que começam com  Para limitar o uso de memória, há um limite no número de atributos que podem ser declarados. | 
| inherit_attrs | rule; ou macro; ou string; ou None;
                                     o padrão éNoneUm símbolo de regra, um símbolo de macro ou o nome de uma lista de atributos comuns integrada (veja abaixo) de que a macro deve herdar atributos. Se  Se o valor de retorno de  O mecanismo de herança funciona da seguinte maneira: 
 Quando um atributo não obrigatório é herdado, o valor padrão dele é substituído por  Por exemplo, a macro a seguir herda todos os atributos de  
def _my_cc_library_impl(name, visibility, tags, **kwargs):
    # Append a tag; tags attr was inherited from native.cc_library, and
    # therefore is None unless explicitly set by the caller of my_cc_library()
    my_tags = (tags or []) + ["my_custom_tag"]
    native.cc_library(
        name = name,
        visibility = visibility,
        tags = my_tags,
        **kwargs
    )
my_cc_library = macro(
    implementation = _my_cc_library_impl,
    inherit_attrs = native.cc_library,
    attrs = {
        "cxxopts": None,
        "copts": attr.string_list(default = ["-D_FOO"]),
    },
)
Se  Por convenção, uma macro precisa transmitir atributos herdados e não substituídos sem alterações para o símbolo de regra ou macro "principal" que ela está encapsulando. Normalmente, a maioria dos atributos herdados não tem um parâmetro na lista de parâmetros da função de implementação e é transmitida simplesmente por  | 
| finalizer | bool;
                                     o padrão é FalseIndica se essa macro é um finalizador de regra, ou seja, uma macro que, independente da posição em um arquivo BUILD, é avaliada no final do carregamento do pacote, depois que todos os destinos não finalizadores
são definidos.Ao contrário das macros simbólicas comuns, os finalizadores de regras podem chamar
 | 
| doc | string ou None;
                                     o padrão éNoneUma descrição da macro que pode ser extraída por ferramentas de geração de documentação. | 
module_extension
unknown module_extension(implementation, *, tag_classes={}, doc=None, environ=[], os_dependent=False, arch_dependent=False)use_extension.
          
      Parâmetros
| Parâmetro | Descrição | 
|---|---|
| implementation | callable;
                                     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 | dict;
                                     o padrão é {}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 | string ou None;
                                     o padrão éNoneUma descrição da extensão do módulo que pode ser extraída por ferramentas de geração de documentação. | 
| environ | sequence de strings;
                                     o padrão é []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 | bool;
                                     o padrão é FalseIndica se a extensão depende do SO ou não. | 
| arch_dependent | bool;
                                     o padrão é FalseIndica se a extensão depende da arquitetura ou não. | 
provedor
unknown provider(doc=None, *, fields=None, init=None)
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 | string ou None;
                                     o padrão éNoneUma descrição do provedor que pode ser extraída por ferramentas de geração de documentação. | 
| fields | sequência de strings, dicionário ou None. O padrão éNone. Se especificado, restringe o conjunto de campos permitidos. Os valores possíveis são: 
 | 
| init | chamável ou None; o padrão éNone. Um callback opcional para pré-processar e validar os valores de campo do provedor durante a instanciação. Se initfor 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  
 initnão é fornecido, uma chamada ao símboloPem si atua como uma chamada à função construtora padrãoc. Em outras palavras,P(*args, **kwargs)retornac(*args, **kwargs). Por exemplo,MyInfo = provider() m = MyInfo(foo = 1) mseja uma instânciaMyInfocomm.foo == 1.Mas, no caso em que  
 Observação: as etapas acima implicam que um erro ocorre se  Dessa forma, o callback  Quando  MyInfo, _new_myinfo = provider(init = ...) | 
repository_rule
callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc=None)
module_extension() ou usado por use_repo_rule().
          
      Parâmetros
| Parâmetro | Descrição | 
|---|---|
| implementation | callable;
                                     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 ou None. O padrão éNone. Um dicionário para declarar todos os atributos da regra do repositório. 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 de um rótulo a um arquivo. Uma regra de repositório não pode depender de um artefato gerado. O atributonameé adicionado implicitamente e não pode ser especificado.Os atributos declarados vão converter  | 
| local | bool;
                                     o padrão é FalseIndica que essa regra busca tudo do sistema local e precisa ser reavaliada a cada busca. | 
| environ | sequência de strings. O padrão é []. Suspenso. Este parâmetro foi suspenso. Migre para repository_ctx.getenv.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 | bool;
                                     o padrão é FalseIndica que o repositório inspeciona o sistema para fins de configuração. | 
| remotable | bool;
                                     o padrão é FalseExperimental. Esse parâmetro é experimental e pode mudar a qualquer momento. Não dependa dele. Ele pode ser ativado experimentalmente definindo --experimental_repo_remote_execCompatível com execução remota | 
| doc | string ou None; o padrão éNone. Uma descrição da regra do repositório que pode ser extraída por ferramentas de geração de documentação. | 
regra
callable rule(implementation, *, test=unbound, attrs={}, outputs=None, executable=unbound, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc=None, provides=[], dependency_resolution_rule=False, exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, initializer=None, parent=None, extendable=None, subrules=[])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 | function;
                                     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 | bool;
                                     o padrão é unboundIndica 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 nem recomendado) definir explicitamenteexecutable = Truepara uma regra de teste. O valor padrão éFalse. Consulte a  página "Regras" para mais informações. | 
| attrs | dict;
                                     o padrão é {}Um 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 atributonameé adicionado implicitamente e não pode ser especificado. Os atributosvisibility,deprecation,tags,testonlyefeaturessã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, há um limite no número de atributos que podem ser declarados.Os atributos declarados vão converter  | 
| outputs | dict; ou None; ou function;
                                     o padrão éNoneDescontinuado. Esse parâmetro foi descontinuado e será removido em breve. Não dependa dele. Ele fica desativado 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 OutputGroupInfoouattr.output.Um esquema para definir saídas pré-declaradas. Ao contrário dos atributos  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  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  
 Na prática, o marcador de posição de substituição mais comum é  | 
| executable | bool;
                                     o padrão é unboundIndica se essa regra é considerada executável, ou seja, se ela pode ser o assunto de um comando blaze run. O padrão éFalse. Consulte a  página "Regras" para mais informações. | 
| output_to_genfiles | bool;
                                     o padrão é FalseSe 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 de strings;
                                     o padrão é []Lista de nomes de fragmentos de configuração que a regra exige na configuração de destino. | 
| host_fragments | sequência de strings; o padrão é []. Lista de nomes de fragmentos de configuração que a regra exige na configuração do host. | 
| _skylark_testable | bool;
                                     o padrão é 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;
                                     o padrão é []Se definido, o conjunto de cadeias de ferramentas exigido por essa regra. A lista pode conter objetos String, Label ou StarlarkToolchainTypeApi, em qualquer combinação. Para encontrar toolchains, verifique a plataforma atual e forneça-as à implementação da regra usando ctx.toolchain. | 
| incompatible_use_toolchain_transition | bool;
                                     o padrão é FalseDescontinuado. Não está mais em uso e deve ser removido. | 
| doc | string ou None; o padrão éNoneUma descrição da regra que pode ser extraída por ferramentas de geração de documentação. | 
| provides | sequence;
                                     o padrão é []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  | 
| dependency_resolution_rule | bool;
                                     o padrão é FalseSe definido, a regra poderá ser uma dependência por atributos também marcados como disponíveis em materializadores. Todos os atributos de regras com essa flag definida também precisam ser marcados como disponíveis em materializadores. Assim, as regras marcadas não podem depender de regras que não foram marcadas. | 
| exec_compatible_with | sequence de strings;
                                     o padrão é []Uma lista de restrições na plataforma de execução que se aplicam a todos os destinos desse tipo de regra. | 
| analysis_test | bool;
                                     o padrão é FalseSe 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: 
 | 
| build_setting | BuildSetting ou None. O padrão éNone. Se definido, descreve que tipo de build settingessa regra é. Consulte o móduloconfig. 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 | O padrão é 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 ou None. O padrão é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. | 
| initializer | O padrão é None. Experimental: a função Stalark que inicializa os atributos da regra. A função é chamada no momento do carregamento para cada instância da regra. Ele é chamado com  Ele precisa retornar um dicionário dos nomes de atributos para os valores desejados. Os atributos que não são retornados não são afetados. Retornar  Os inicializadores são avaliados antes dos valores padrão especificados em uma definição de atributo. Consequentemente, se um parâmetro na assinatura do inicializador tiver um valor padrão, ele vai substituir o padrão da definição do atributo, exceto se retornar  Da mesma forma, se um parâmetro na assinatura do inicializador não tiver um padrão, ele se tornará obrigatório. É recomendável omitir configurações padrão/obrigatórias em uma definição de atributo nesses casos. É recomendável usar  No caso de regras estendidas, todos os inicializadores são chamados do filho para os ancestrais. Cada inicializador recebe apenas os atributos públicos que conhece. | 
| parent | O padrão é NoneExperimental: a regra do Stalark que é estendida. Quando definido, os atributos públicos e os provedores anunciados são mesclados. A regra corresponde a executableetestdo elemento principal. Os valores defragments,toolchains,exec_compatible_witheexec_groupssão mesclados. Parâmetros legados ou obsoletos não podem ser definidos. A transição de configuração de entradacfgdo elemento pai é aplicada depois da configuração de entrada desta regra. | 
| extendable | bool; ou Label; ou string; ou None;
                                     o padrão éNoneExperimental: um rótulo de uma lista de permissão que define quais regras podem estender essa regra. Também pode ser definido como True/False para sempre permitir/não permitir a extensão. Por padrão, o Bazel sempre permite extensões. | 
| subrules | sequência de Subrules;
                                     o padrão é []Experimental: List of subrules used by this rule. | 
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 | dict;
                                     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 | string;
                                     o padrão é ''Erro personalizado opcional a ser informado se nenhuma condição corresponder. | 
subrule
Subrule subrule(implementation, attrs={}, toolchains=[], fragments=[], subrules=[])
Parâmetros
| Parâmetro | Descrição | 
|---|---|
| implementation | function;
                                     required A função Starlark que implementa essa subregra. | 
| attrs | dict;
                                     o padrão é {}Um dicionário para declarar todos os atributos (particulares) da subregra. As subregras só podem ter atributos particulares do tipo marcador (ou seja, marcador ou lista de marcadores). Os valores resolvidos correspondentes a esses rótulos são transmitidos automaticamente pelo Bazel para a função de implementação da subregra como argumentos nomeados. Portanto, a função de implementação precisa aceitar parâmetros nomeados que correspondam aos nomes dos atributos. Os tipos desses valores serão: 
 | 
| toolchains | sequence;
                                     o padrão é []Se definido, o conjunto de toolchains exigido por essa subregra. A lista pode conter objetos String, Label ou StarlarkToolchainTypeApi, em qualquer combinação. Para encontrar as toolchains, basta verificar a plataforma atual e fornecer à implementação da subregra usando ctx.toolchains. As AEGs precisam ser ativadas nas regras de consumo se esse parâmetro estiver definido. Se você ainda não migrou para AEGs, consulte https://bazel.build/extending/auto-exec-groups#migration-aegs. | 
| fragments | sequence de strings;
                                     o padrão é []Lista de nomes de fragmentos de configuração que a subregra exige na configuração de destino. | 
| subrules | sequence de Subrules;
                                     o padrão é []Lista de outras subregras necessárias para esta subregra. | 
tag_class
tag_class tag_class(attrs={}, *, doc=None)
Parâmetros
| Parâmetro | Descrição | 
|---|---|
| attrs | dict;
                                     o padrão é {}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). Ao contrário de  | 
| doc | string ou None;
                                     o padrão éNoneUma descrição da classe de tag que pode ser extraída por ferramentas de geração de documentação. | 
visibilidade
None visibility(value)Define a visibilidade de carregamento 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 recebeu 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 de  
 A sintaxe "@" não é permitida. Todas as especificações são interpretadas em relação ao repositório do módulo atual. Se  As flags  |