KeyError: 'darkblue' when using trepan3k

KeyError: 'darkblue' when using trepan3k

我用 pip3 install trepan3k 安装了 trepan3k,我想用 trepan3k main.py 调试一个文件,但我收到了这个错误:

Traceback (most recent call last):
  File "/usr/local/bin/trepan3k", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/site-packages/trepan/cli.py", line 212, in main
    normal_termination = dbg.run_script(mainpyfile)
  File "/usr/local/lib/python3.7/site-packages/trepan/debugger.py", line 217, in run_script
    exec(compiled, globals_, locals_)
...
  File "/usr/local/lib/python3.7/site-packages/pygments/formatters/terminal.py", line 101, in format
    return Formatter.format(self, tokensource, outfile)
  File "/usr/local/lib/python3.7/site-packages/pygments/formatter.py", line 95, in format
    return self.format_unencoded(tokensource, outfile)
  File "/usr/local/lib/python3.7/site-packages/pygments/formatters/terminal.py", line 126, in format_unencoded
    outfile.write(ansiformat(color, line.rstrip('\n')))
  File "/usr/local/lib/python3.7/site-packages/pygments/console.py", line 68, in ansiformat
    result.append(codes[attr])
KeyError: 'darkblue'
Uncaught exception. Entering post-mortem debugger...
trepan3k: That's all, folks...

这发生在 macOS Mojave 以及 Ubuntu 18.04 上。这是怎么回事,我可以用 trepan 调试什么?

将trepan3k升级到我刚刚发布的version 0.8.9,我想你会没事的。

长话短说。很抱歉我没有早点看到这个。作为 trepan3k 的大用户,我不久前就注意到了这一点,并且一直在通过使用以前安装的 trepan3k 版本来解决这个问题。由于我不知道有其他人注意到这一点,所以我没有考虑进行调查,更不用说修复它了。

然后在某个时候我有一些空闲时间,并进行了调查。更长的答案是,2.2.0 之后的 Pygments 似乎有一个不兼容的更新,并且颜色名称不同。

我希望我能更详细地了解 Pygments 中发生的事情。我怀疑这与使用一组减少的颜色名称和处理深色和浅色背景有关,这样当您在深色和浅色之间切换时不会弄乱事情。

如果有人知道并愿意阐明,我将不胜感激。如果您确切知道如何将 Pygments 更改为 2.2.0 之后的版本,还有加分。

trepan 用于处理 Pygments 的相关代码是 https://github.com/rocky/python3-trepan/blob/master/trepan/lib/format.py

我不得不为 RsT 编写自定义格式化程序以进行控制台。我已经将它提供给 Pygments 社区,但他们认为这不应该出现在 Pygments 中,但在 trepan3k 中按原样使用它很好。

这是您在此调试器中发现的额外工作的一个小示例,而其他调试器则没有,以支持更好的用户体验。解析以显示确切位置是另一个例子。但这当然意味着当软件包进行不兼容的升级时,破损的可能性更大。

所以最后两个要点。

  1. 如果 trepan3k 中存在错误,请在其问题跟踪器中报告:https://github.com/rocky/python3-trepan/issues/new。我更有可能在那里看到这个而不是 Stack Overflow 问题。
  2. 如果您还没有,请为该项目投票。我使用 Github 评级来帮助指导我了解空闲时间的工作内容。