dado una lista de clases que heredan de esta base:¿Algún algoritmo de limpieza para clasificar objetos según las dependencias definidas?
class Plugin(object):
run_after_plugins =()
run_before_plugins =()
... y las siguientes reglas:
- Los complementos pueden proporcionar una lista de plugins que deben ejecutarse después.
- Los complementos pueden proporcionar una lista de complementos que deben ejecutarse antes.
- La lista de complementos puede contener o no todos los complementos que se han especificado para ordenar restricciones.
¿Alguien puede proporcionar un buen algoritmo de limpieza para ordenar una lista de complementos? Será necesario para detectar dependencias circulares, así ....
def order_plugins(plugins):
pass
que he llegado con algunas versiones, pero nada particuarlly ordenada: Estoy seguro de que algunos de ustedes Art of Computer Programming tipos disfrutarán el reto :)
[nota: pregunta dada en Python, pero es evidente que no es sólo una cuestión de Python: pseudocódigo en cualquier idioma haría]
@Eli: Encontré esta pregunta (http://stackoverflow.com/questions/952302/how-to-sort-based-on-dependencies) que mencionaba ese tipo de ordenamiento ahora pero el ejemplo dado no tener dos tipos separados de dependencias para ser ordenadas: ¿puede eso algo tratar también con este caso? – jkp
@jkp: se puede convertir a esa representación. es decir, A dice que B debe ejecutarse antes que él, pero C después de él. Entonces, con solo restricciones "después", decimos que A está detrás de B, y C está detrás de A. –
@Eli: ¡jaja! Sí, supongo que cuando lo enciendes, su cabeza se aplica limpiamente. Una restricción anterior en un complemento es solo una restricción posterior para otro :) – jkp