更高层次的拓扑排序。
whatwhen的Python项目详细描述
whatwhen是一种高级拓扑排序,是 解析依赖项并计算 功能和其他东西。
基本拓扑排序:
tasks = [ { 'name: 'drive', 'dependencies': ['car'], }, { 'name': 'car', 'dependencies': ['wheels', 'gas'], }, { 'name': 'wheels', 'dependencies': 'rubber', }, { 'name': 'gas', }, { 'name': 'rubber', }, ] whatwhen.sort(items)
使用合同(需求和规定)进行拓扑排序:
tasks = [ { 'name': 'drive', 'needs': ['car', 'gas'], }, { 'name': 'fill tank', 'provides': ['gas'], }, { 'name': 'rent a car', 'provides': ['car'], 'dependencies': ['money'], }, { 'name': 'money' } ] whatwhen.sort(items)
当你不知道具体是什么的时候,需求和供给是有用的 功能(或系统或模块或其他)将提供 必要的数据或前提条件,但你知道这些数据 先决条件是。这可能发生在大型系统或 你不能完全控制。
除了词典之外,任务的元数据还可以添加到 功能:
def one(): pass def two(): pass one.dependencies = ['two'] whatwhen.sort([one, two])
什么时候返回已排序的原始函数(或字典) 顺序,而不仅仅是节点名的排序列表,所以 比原始拓扑排序更容易使用。
什么时候让tarjan 模块完成了大部分的重负载,所以实际上只有大约40个 此模块的包装代码行。由你决定是否 你宁愿建在什么地方或平原上。