Выделите исходный код проверенных функций в лаборатории / блокноте Juptyer. - PullRequest
0 голосов
/ 01 мая 2019

Я использовал следующую функцию для проверки исходного кода функции при работе с Jupyter lab / notebook:

def source(function):
    print(inspect.getsource(function))

Для более коротких кодов это хорошо, но в какой-то момент подсветка кода будет удобной.Таким образом, я рассмотрел использование Pygments:

def source2(function):
    from IPython.core.display import HTML, display
    from pygments import highlight
    from pygments.lexers import PythonLexer
    from pygments.formatters import HtmlFormatter
    code = inspect.getsource(function)
    html = highlight(code, PythonLexer(), HtmlFormatter(style='colorful'))
    display(HTML(html))

Хотя это, кажется, создает промежуточный HTML-код и отображает его правильно, код остается простым (без выделения).Промежуточная строковая переменная "html" имеет следующее содержимое:

<code>'<div class="highlight">
 <pre><span>
 </span><span class="k">def</span>
 <span class="nf">source</span>
 <span class="p">(</span>
 <span class="n">function</span>
 <span class="p">):</span>\n
 <span class="k">print</span>
 <span class="p">(</span>
 <span class="n">inspect</span>
 <span class="o">.</span>
 <span class="n">getsource</span>
 <span class="p">(</span>
 <span class="n">function</span>
 <span class="p">))</span>\n
 
\ n '

Я полагаю, что мне просто не хватает файла CSS?

Дополнительный вопрос (возможно, позже это будет разделено): есть ли способ использовать это для функции через контекстное меню, вызываемое правой кнопкой мыши, или ярлык / горячую клавишу в лаборатории / блокноте Jupyter?

1 Ответ

0 голосов
/ 21 мая 2019

Этот ответ на на этот вопрос предлагает добавить следующий display вызов для вставки стилей:

display(HTML("""
<style>
{pygments_css}
</style>
""".format(pygments_css=HtmlFormatter().get_style_defs('.highlight'))))
...