weixin_39605414 2020-11-21 16:47
浏览 0

RST syntax errors in the Assistant

Original report by Joe Paris (Bitbucket: joeparislb ).

Hello,

I was following this tutorial to see if I wanted to assign it to my students as a way of introducing them to Thonny. I entered their example code that purposely has a syntax error in it (a missing double-quote to close a string) as shown below:


def factorial(num):
    if num == 1:
        return 1
    else:
        return num * factorial(num - 1)

print("The factorial of 3 is:)
print(factorial(3))

Hitting the degub button generates the following error:


Traceback (most recent call last):
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\thonny\workbench.py", line 1432, in event_generate
    handler(event)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\thonny\assistance.py", line 138, in handle_toplevel_response
    self._explain_exception(msg["user_exception"])
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\thonny\assistance.py", line 225, in _explain_exception
    self.text.append_rst(rst)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\thonny\rst_utils.py", line 113, in append_rst
    doc = docutils.core.publish_doctree(rst_source)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\core.py", line 481, in publish_doctree
    output = pub.publish(enable_exit_status=enable_exit_status)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\core.py", line 217, in publish
    self.settings)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\readers\__init__.py", line 72, in read
    self.parse()
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\readers\__init__.py", line 78, in parse
    self.parser.parse(self.input, document)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\__init__.py", line 191, in parse
    self.statemachine.run(inputlines, document, inliner=self.inliner)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 171, in run
    input_source=document['source'])
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\statemachine.py", line 239, in run
    context, state, transitions)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\statemachine.py", line 460, in check_line
    return method(match, context, next_state)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 2753, in underline
    self.section(title, source, style, lineno - 1, messages)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 327, in section
    self.new_subsection(title, lineno, messages)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 395, in new_subsection
    node=section_node, match_titles=True)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 282, in nested_parse
    node=node, match_titles=match_titles)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\statemachine.py", line 239, in run
    context, state, transitions)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\statemachine.py", line 460, in check_line
    return method(match, context, next_state)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 2328, in explicit_markup
    self.explicit_list(blank_finish)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 2361, in explicit_list
    self.parent += self.unindent_warning('Explicit markup')
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 434, in unindent_warning
    line=lineno)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\utils\__init__.py", line 221, in warning
    return self.system_message(self.WARNING_LEVEL, *args, **kwargs)
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\utils\__init__.py", line 192, in system_message
    self.stream.write(msg.astext() + '\n')
  File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\utils\error_reporting.py", line 199, in write
    self.stream.write(data)
AttributeError: 'NoneType' object has no attribute 'write'

In addition to the error dialog appearing the Assistant window (which this example was also trying to illustrate) is blank. This is happening on Windows 10 using Thonny 3.0.8.

该提问来源于开源项目:thonny/thonny

  • 写回答

5条回答 默认 最新

  • weixin_39605414 2020-11-21 16:47
    关注

    Thank you for the report!

    I can replicate this in 3.0.8, but it seems to be fixed in master. Please test it again when 3.1 gets released in January.

    评论

报告相同问题?