Пользовательский лексер Pygments с подсказкой-инструментарий вызывает ошибку

#python #pygments #prompt-toolkit

Вопрос:

Я пытался использовать инструментарий подсказок, используя следующий пример:

 from pygments.lexer import RegexLexer
from pygments.token import *

class CalculatorLexer(RegexLexer):
    name = 'Calculator'

    tokens = {
        'root': [
            (r"[ -/*()%^]", Operator),  # All the single character operators
            (r"d*.d*", Number.Float),  # A Decimal
            (r"d*", Number.Integer),  # A Integer
            (r".*", Text)  # Any Other Thing
        ]
    }

from prompt_toolkit.shortcuts import prompt
from prompt_toolkit.lexers import PygmentsLexer

text = prompt('Enter HTML: ', lexer=PygmentsLexer(CalculatorLexer()))
print('You said: %s' % text)
 

но это всегда вызывает эту ошибку:

 Traceback (most recent call last):
  File "test.py", line 21, in <module>
    text = prompt('Enter HTML: ', lexer=PygmentsLexer(CalculatorLexer()))
  File "/home/xcodz/.local/lib/python3.8/site-packages/prompt_toolkit/lexers/pygments.py", line 197, in __init__
    self.pygments_lexer = pygments_lexer_cls(
TypeError: 'CalculatorLexer' object is not callable
 

Сначала я подумал, что я не должен вызывать пользовательский класс лексера, который я создал. но если я не инициализирую свой пользовательский класс, программа ничего не делает, и мгновенно начинает расти использование оперативной памяти. Мой компьютер выходил из строя 2 раза из-за такого поведения.

Вот что происходит после того, как я запускаю и завершаю процесс программы:

Изображение Системного Монитора