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. Confira mais informações.
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 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 depsets são imutáveis. Eles precisam ser criados usando a função de construtor e mesclados ou aumentados com outros depsets usando o argumento transitive
.
O parâmetro order
determina o tipo de travessia feita para converter o conjunto de dependências 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"
. Nesse caso, a ordem do conjunto de dependências resultante será a mesma do outro.
Os depsets podem conter valores duplicados, mas eles serão suprimidos durante a iteração (usando to_list()
). Os duplicados podem interferir na semântica de ordenação.
Membros
to_list
list depset.to_list()
"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.