dependência

Reportar um problema Ver código-fonte Nightly · 7.4 . 7,3 · 7.2 · 7,1 · 7,0 · 6,5

Uma estrutura de dados especializada que oferece suporte a operações de mesclagem eficientes e tem uma ordem de travessia definida. É comumente usado para acumular dados de dependências transitivas em regras e aspectos. Clique aqui para mais informações.

Os elementos de um depset precisam ser hasháveis e todos do mesmo tipo (conforme definido pela função type(x) integrada), mas os depsets não são apenas conjuntos de hash e não oferecem suporte a testes de associação rápidos. Se você precisar de um tipo de dados de conjunto geral, simule um usando um dicionário em que todas as chaves são mapeadas para True.

Os conjuntos de dependências são imutáveis. Elas precisam ser criadas usando a função de construtor e mescladas ou aumentadas com outras dependências pelo argumento transitive.

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

  • "default" (anteriormente "stable"): a ordem não é especificada, mas é determinista.
  • "postorder" (antigo "compile"): uma pós-ordem da esquerda para a direita. Exatamente, isso transferirá de forma recursiva todos os filhos mais à esquerda primeiro e, em seguida, os elementos diretos mais à esquerda primeiro.
  • "preorder" (anteriormente "naive_link"): uma ordenação prévia da esquerda para a direita. Mais precisamente, ele percorre os elementos diretos da esquerda para a direita e, em seguida, percorre recursivamente os filhos da esquerda para a direita.
  • "topological" (anteriormente "link"): uma ordenação topológica da raiz até as folhas. Não há garantias da esquerda para a direita.

Dois depssets só poderão ser mesclados se ambos tiverem a mesma ordem ou se um deles tiver a ordem "default". No último caso, a ordem do dispositivo resultante será a mesma que a do outro.

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

Membros

to_list

list depset.to_list()

Retorna uma lista dos elementos, sem duplicações, na ordem de travessia do depset. Observe que a ordem não é especificada (mas determinista) para os elementos que foram adicionados mais de uma vez ao conjunto. A ordem também não é especificada para depsets ordenados por "default" e para elementos de depsets filhos com ordem diferente da depset pai. A lista é uma cópia. Modificar a lista não afeta o depset e vice-versa.