depset

Informar un problema Ver código fuente

Una estructura de datos especializada que admite operaciones de combinación eficientes y tiene un orden de recorrido definido. Por lo general, se usa para acumular datos de dependencias transitivas en reglas y aspectos. Obtén más información aquí.

Los elementos de un depset deben tener un hash y todos del mismo tipo (como lo define la función integrada tipo(x)), pero los depsets no son simplemente conjuntos de hash y no admiten pruebas de membresía rápidas. Si necesitas un tipo de datos de conjunto general, puedes simular uno mediante un diccionario en el que todas las claves se asignan a True.

Los repositorios son inmutables. Deben crearse mediante su función constructora y combinarse o aumentarse con otros repositorios a través del argumento transitive.

El parámetro order determina el tipo de recorrido que se realiza para convertir el desplazamiento en un iterable. Hay cuatro valores posibles:

  • "default" (anteriormente "stable"): el orden no está especificado (pero es determinista).
  • "postorder" (anteriormente "compile"): un pedido de izquierda a derecha. De manera precisa, esto atraviesa de manera recursiva todos los elementos secundarios que se encuentran más a la izquierda en primer lugar y los elementos directos a la izquierda primero.
  • "preorder" (anteriormente "naive_link"): un pedido por adelantado de izquierda a derecha. Precisamente, desvía los elementos directos hacia la izquierda primero y después desvía de manera recursiva hacia la izquierda primero.
  • "topological" (anteriormente "link"): Un orden topológico desde la raíz hasta las hojas. No hay garantía de izquierda a derecha.

Dos grupos de objetos separados solo se pueden combinar si ambos tienen el mismo orden o uno de ellos tiene el orden "default". En este último caso, el orden del archivo resultante será el mismo que el del otro.

Los dependencias pueden contener valores duplicados, pero se suprimirán cuando se iteren (mediante to_list()). Los duplicados pueden interferir en la semántica de ordenamiento.

Miembros

lista_to

list depset.to_list()

Muestra una lista de los elementos, sin duplicados, en el orden de recorrido del repositorio. Ten en cuenta que el orden no se especifica (pero es determinista) para los elementos que se agregaron más de una vez a la dependencia. Además, no se especifica el orden de los conjuntos separados por "default" y los de los conjuntos secundarios, cuyo orden difiere del conjunto del conjunto superior. La lista es una copia; modificarla no tendrá efecto en la implementación y viceversa.