Строки документации Sphinx и vscode

У меня есть следующая строка документации:

def test(foo):
    """this is my function
    
    .. code-block:: python
        cool function
    
    now I should be outside the codeblock. 
    But I'm not?
    
    .. code-block:: python
        next function
        
    I'm still inside the original codeblock?

    :param foo: _description_
    :type foo: _type_
    """

Что отображается в VScode следующим образом:

Я неправильно пишу синтаксис или VScode просто не справляется с рендерингом формата сфинкса?

1) Какой стиль строк документации вы собираетесь использовать? 2) Я думаю, после директивы блока кода должна быть пустая строка.

s3dev 11.04.2024 09:45

1) Я использую стиль reStructuredText (Sphinx), чтобы в дальнейшем создавать документацию в Sphinx. 2) Я попробовал добавить пустую строку, не помогло.

Martin 11.04.2024 09:55

Понятно. Существует два основных стиля документации; reST — это общий подъязык, который приложение Sphinx использует для создания документов. Стиль Google и стиль numpy. Выбирайте одно, не смешивайте. По ссылкам есть хорошие примеры строк документации. Кроме того, вам, возможно, придется указать VSC, какой стиль ожидать. (Я использую Spyder, и есть опция для стиля документации.)

s3dev 11.04.2024 09:59

И, как вы, возможно, знаете, существует PEP-257, который описывает стили документации на уровне Python.

s3dev 11.04.2024 10:18

Насколько я понимаю, я не смешиваю стили, а придерживаюсь того стиля, который предписывает сфинкс? sphinx-rtd-tutorial.readthedocs.io/en/latest/docsrings.html Кроме того, я, кажется, сообщил VSC, что использую стиль Sphinx: i.imgur.com/ak1cxCR.png

Martin 11.04.2024 10:37

Каков желаемый эффект? Как вы думаете, где это искажение?

JialeDu 12.04.2024 09:01

Теперь мне удалось составить правильную документацию по сфинксу, и вывод сфинкса в формате HTML выглядит хорошо. Однако VScode по-прежнему отображает его неправильно. Пожалуйста, посмотрите это изображение для дальнейшего объяснения: imgur.com/a/4uiMYTk Я считаю, что после удаления отступов из кодовых блоков следует выйти.

Martin 14.04.2024 09:48

AFAIK Visual Studio Code не может сделать это без дополнительного плагина, или, по крайней мере, я никогда не видел, чтобы он мог это сделать. PyCharm, альтернативная IDE, здесь справляется несколько лучше.

Mikko Ohtamaa 16.04.2024 09:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
8
180
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть два способа добиться правильного отображения.

1. Добавьте уровень отступов для блоков кода.

def test(foo):
    """this is my function
    
        .. code-block:: python
        cool function
    
    now I should be outside the codeblock. 
    But I'm not?
    
        .. code-block:: python
        next function
        
    I'm still inside the original codeblock?

    :param foo: _description_
    :type foo: _type_
    """

2. Удалить один уровень отступов для некодовых блоков.

def test(foo):
    """this is my function
    
    .. code-block:: python
        cool function
    
now I should be outside the codeblock. 
But I'm not?
    
    .. code-block:: python
        next function
        
I'm still inside the original codeblock?

    :param foo: _description_
    :type foo: _type_
    """

Я не уверен, правильный ли это синтаксис или это ошибка vscode. Если кто-то считает, что это ошибка, вы можете сообщить об этом на GitHub и поделиться ссылкой здесь.

Это неверный синтаксис реструктурированного текста. Я думаю, что код Visual Studio здесь предполагает Markdown.

Mikko Ohtamaa 16.04.2024 09:52

Я не уверен, есть ли здесь в языке синтаксическая ошибка, но ваше 2. предложение работает просто великолепно! Я получаю красивый рендеринг vscode, а sphinx также создает HTML с правильными блоками кода и отступами. Большое спасибо

Martin 23.04.2024 10:55

Другие вопросы по теме