dependência

Uma estrutura de dados especializada que oferece suporte a operações de mesclagem eficientes e tem uma ordem de travessia definida. Usado com frequência para acumular dados de dependências transitivas em regras e aspectos. Para mais informações, consulte aqui.

Os elementos de um conjunto de dependências precisam ser hashable e todos do mesmo tipo (conforme definido pela função integrada type(x)), mas os conjuntos de dependências não são simplesmente conjuntos de hash e não oferecem suporte a testes rápidos de associação. Se você precisar de um tipo de dados de conjunto geral, use o tipo conjunto do Starlark principal (disponível desde o Bazel 8.1). Se o arquivo .bzl precisar ser compatível com versões mais antigas do Bazel, simule um conjunto usando um dicionário em que todas as chaves são mapeadas para True.

Quando testado para veracidade (ou seja, quando usado em um contexto booleano como if d: em que d é um conjunto de dependências), um conjunto de dependências é verdadeiro se e somente se não estiver vazio. Essa verificação é uma operação O(1).

Os depsets são imutáveis. Eles precisam ser criados usando a função de construtor e mesclados ou aumentados com outros conjuntos de dependências usando o argumento transitive.

O parâmetro order determina o tipo de travessia feita para converter o depset em um iterável. Há quatro valores possíveis:

  • "default" (antigo "stable"): a ordem não é especificada (mas é determinista).
  • "postorder" (antigo "compile"): uma ordenação de postagem da esquerda para a direita. Especificamente, isso percorre recursivamente todos os filhos da esquerda para a direita e, em seguida, os elementos diretos da esquerda para a direita.
  • "preorder" (antigo "naive_link"): uma pré-ordem da esquerda para a direita. Especificamente, isso percorre os elementos diretos da esquerda para a direita e, em seguida, percorre recursivamente os filhos da esquerda para a direita.
  • "topological" (antigo "link"): uma ordenação topológica da raiz até as folhas. Não há garantia da esquerda para a direita.

Dois conjuntos de dependências só podem ser mesclados se ambos tiverem a mesma ordem ou se um deles tiver a ordem "default". No último caso, a ordem do conjunto de dependências resultante será a mesma da outra.

Os depsets podem conter valores duplicados, mas eles serão suprimidos ao iterar (usando to_list()). Os duplicados podem interferir na semântica de ordenação.

Membros

to_list

list depset.to_list()

Retorna uma lista dos elementos, sem duplicatas, na ordem de travessia do conjunto de dependências. A ordem não é especificada (mas é determinística) para elementos adicionados mais de uma vez ao conjunto de dependências. A ordem também não é especificada para depsets ordenados por "default" e para elementos de depsets filhos cuja ordem difere da do depset pai. A lista é uma cópia. Modificá-la não afeta o conjunto de dependências e vice-versa.