Я написал программу на Python 3 и использую Sphinx для ее документирования.Autodoc у Sphinx великолепен, однако он работает только с Python 2. Некоторые модули прекрасно работают в autodoc, однако модули не работают.Некоторые примеры: Python 2 жалуется на метаклассы стиля Python 3 и некоторые модули, которых больше нет в Python 2, такие как configparser .Это раздражает, так как не может импортировать строки документации из этого файла.
Я не хочу переписывать всю программу на Python 2, однако я хочу использовать autodoc.
У меня была одна идея - небольшая программа, которая считывала каждый файл Python и удаляла все функциональные возможности, а просто оставляла базовую функцию и классы с их строками документации (поскольку autodoc импортирует каждый модуль и читает строку документации определенной функции или класса).
import configparser
import os
class TestClass:
"""
I am a class docstring.
"""
def method(self, argument):
"""
I am a method docstring.
"""
#Some code here
print(os.getcwd())
def TestFunction():
"""
I am a function docstring.
"""
#Some more useless code here
return os.path.join("foo", "bar")
в ...
class TestClass:
"""
I am a class docstring.
"""
def method(self, argument):
"""
I am a method docstring.
"""
pass
def TestFunction():
"""
I am a function docstring.
"""
pass
Таким образом, обработанный код может быть прочитан autodoc, но при этом все еще есть строки документации, что мне действительно нужно.Это лучший способ сделать это, и есть ли у кого-нибудь какие-либо предложения относительно того, как написать небольшую программу, которая преобразует код.
Я могу очень легко устранить проблему метакласса с помощью некоторых регулярных выражений, но яя борюсь с остальными.
m = re.search("\(metaclass=.*\)", file_content)
if m:
file_content = "".join(file_content[:m.start()], file_content[m.end():])
Будет ли полезен модуль ast ?
Спасибо.