首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ignore_invalid_triggers不工作

ignore_invalid_triggers不工作
EN

Stack Overflow用户
提问于 2018-03-27 22:53:55
回答 1查看 115关注 0票数 0

我正在使用记录在这里来实现一个有限状态机。概述的功能之一是能够忽略无效触发器。下面是文档中的示例:

代码语言:javascript
复制
 # Globally suppress invalid trigger exceptions
 m = Machine(lump, states, initial='solid', ignore_invalid_triggers=True)

如果触发器设置为true,则对于无效的触发器,不应引发错误。

下面是我试图构建的代码示例:

代码语言:javascript
复制
from transitions import Machine

states = ['changes ongoing', 'changes complete', 'changes pushed', 'code reviewed', 'merged']
triggers = ['git commit', 'git push', 'got plus2', 'merged']

# Initialize the state machine
git_user = Machine(states=states, initial=states[0], ignore_invalid_triggers=True, ordered_transitions=True)
# Create the FSM using the data provided
for i in range(len(triggers)):
    git_user.add_transition(trigger=triggers[i], source=states[i], dest=states[i+1])

print(git_user.state)
git_user.trigger('git commit')
print(git_user.state)
git_user.trigger('invalid') # This line will throw an AttributeError

产生的错误:

代码语言:javascript
复制
changes ongoing
changes complete
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/transitions/core.py", line 58, in _get_trigger
    raise AttributeError("Model has no trigger named '%s'" % trigger_name)
AttributeError: Model has no trigger named 'invalid'

Process finished with exit code 1

我不知道为什么在ignore_invalid_triggers=True时抛出一个错误。除了官方github页面上的文档外,该图书馆的信息有限。如果有人对此有任何洞察力,我将感谢您的帮助。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-29 00:37:40

若要在文档中规定的规则下成为无效触发器,触发器名称必须在模型的某个位置有效。例如,尝试从状态“进行中的更改”触发“合并”。您会得到一个属性错误,因为“无效”根本不是一个触发器:您有一个包含四个的列表,而这不是其中之一。

要查看将“无效”设置为触发器的效果,请在漂亮的线性循环之后添加一个结束到开始的转换(下面的最后一行):

代码语言:javascript
复制
# Create the FSM using the data provided
for i in range(len(triggers)):
    git_user.add_transition(trigger=triggers[i], source=states[i], dest=states[i+1])
git_user.add_transition(trigger="invalid", source=states[-1], dest=states[0])

现在,您的代码应该按预期运行,忽略无效的转换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49523655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档