Es una estructura de datos especializada que admite operaciones de combinación eficientes y tiene un orden de recorrido definido. Se usa comúnmente para acumular datos de dependencias transitivas en reglas y aspectos. Para obtener más información, haga clic aquí.
Los elementos de un depset deben ser hashable y todos del mismo tipo (según lo define la función integrada type(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 con un diccionario en el que todas las claves se asignen a True.
Los depsets son inmutables. Deben crearse con su función de constructor y combinarse o aumentarse con otros depsets a través del transitive argumento.
El parámetro order determina el tipo de recorrido que se realiza para convertir el depset en un objeto iterable. Hay cuatro valores posibles:
"default"(antes"stable"): El orden no está especificado (pero es determinista)."postorder"(antes"compile"): Un orden posterior de izquierda a derecha. En concreto, esto recorre de forma recursiva todos los elementos secundarios de izquierda a derecha y, luego, los elementos directos de izquierda a derecha."preorder"(antes"naive_link"): Un orden previo de izquierda a derecha. En concreto, esto recorre los elementos directos de izquierda a derecha y, luego, recorre de forma recursiva los elementos secundarios de izquierda a derecha."topological"(antes"link"): Un orden topológico desde la raíz hasta las hojas. No hay garantía de izquierda a derecha.
Solo se pueden combinar dos depsets si ambos tienen el mismo orden o si uno de ellos tiene el orden "default". En este último caso, el orden del depset resultante será el mismo que el del otro.
Los depsets pueden contener valores duplicados, pero se suprimirán cuando se itere (con to_list()). Los duplicados pueden interferir con la semántica de ordenamiento.
Miembros
to_list
list depset.to_list()
"default" ni para los elementos de los depsets secundarios cuyo orden difiere del de los depsets superiores. La lista es una copia. Si la modificas, no tendrá ningún efecto en el depset y viceversa.