我使用pytransitions库(documented here)来实现一个有限状态机。概述的特性之一是能够获取特定状态的触发器列表。以下是文档中的示例:
transitions = [
{ 'trigger': 'melt', 'source': 'solid', 'dest': 'liquid' },
{ 'trigger': 'evaporate', 'source': 'liquid', 'dest': 'gas' },
{ 'trigger': 'sublimate', 'source': 'solid', 'dest': 'gas' },
{ 'trigger': 'ionize', 'source': 'gas', 'dest': 'plasma' }
]
machine = Machine(model=Matter(), states=states, tansitions=transitions)
m.get_triggers('solid')
>>> ['melt', 'sublimate']
下面是我尝试运行的代码示例:
^{pr2}$预期产量:
^{3}$获得的输出:
['to_code reviewed', 'to_changes ongoing', 'git commit', 'to_changes pushed', 'to_merged', 'to_changes complete', 'next_state']
查看文档中的给定示例,我应该只返回“git commit”。这就是我要找的功能。在
提前感谢您的帮助!在
{cd1>返回所有可能的转换。这还包括默认添加的自动过渡。另外,构造函数关键字
ordered_transitions=True
(相当于调用Machine.add_ordered_transitions()
)将添加从每个状态到触发器名为states
数组中传递的下一个状态的转换。 所以你最终得到了a)所有的自动转换加上b)一个next_state
和c)一个添加的转换。在要获得所需的结果,您应该禁用
auto_transitions
并省略ordered_transitions
关键字:如果您想使用转换的便利函数,而这些函数不适用于带空格的名称,那么您可能还需要重新考虑触发器和状态名。 例如,的模型上调用。在
'changes_ongoing'
将允许您使用git_user.is_changes_ongoing()
检查当前状态,其中名为'git_commit'
的触发器也可以直接在带有^{相关问题 更多 >
编程相关推荐