dependência

Informar um problema Ver código-fonte

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

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

Dependências são imutáveis. Eles precisam ser criados usando a função de construtor e mesclados ou aumentados com outros dependentes pelo argumento transitive.

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

  • "default" (anteriormente "stable"): a ordem não é especificada, mas determinística.
  • "postorder" (anteriormente "compile"): uma postagem da esquerda para a direita. De modo preciso, isso passa por todos os filhos recursivamente primeiro e depois pelos elementos diretos primeiro.
  • "preorder" (anteriormente "naive_link"): uma encomenda da esquerda para a direita. De modo preciso, isso passa pelos elementos diretos mais à esquerda e, em seguida, atravessa os filhos mais à esquerda primeiro.
  • "topological" (anteriormente "link"): uma ordem topológica da raiz até as folhas. Não há garantia da esquerda para a direita.

Dois depsets só poderão ser mesclados se ambos tiverem a mesma ordem ou se um deles tiver a ordem "default". No último caso, a ordem da dependência resultante será igual à ordem da outra.

As dependências podem conter valores duplicados, mas serão suprimidas durante a iteração (usando to_list()). Cópias podem interferir na semântica de ordenação.

Participantes

lista_de_tom

list depset.to_list()

Retorna uma lista dos elementos, sem duplicatas, na ordem de apresentação da depset. A ordem não é especificada (mas determinística) para elementos que foram adicionados mais de uma vez no depset. A ordem também não é especificada para dependências de "default" e para elementos de dependências filhas com uma ordem diferente daquela da dependência pai. A lista é uma cópia. A modificação não tem efeito no depset e vice-versa.