У меня есть модуль, содержащий несколько глобальных функций и глобальную переменную. Переменная и некоторые из функций следуют за соглашением об именах 'private' для Python с лидирующим подчеркиванием для имени. Другие функции должны быть общедоступными и не иметь главного подчеркивания.
Я объявил __all__
со списком имен публичных функций в начале моего файла.
При попытке создать документацию для этого модуля с помощью epydoc epydoc рассматривает все в модуле как личное. И поскольку я использую флаг --no-private
, это означает, что на выходе отображается только документация самого модуля, а не элементы модуля или их отдельная документация.
Если я не использую флаг --no-private
с epydoc, все документируется. Но я не хочу, чтобы там были личные вещи. Здесь кикер: если я прокомментирую мой __all__
, epydoc правильно документирует только публичные элементы моего модуля.
Я относительный новичок Python, но, как я понимаю, __all__
предназначен для того, чтобы вы не попали в неприятности, когда импортируете другие модули, а затем импортируете другие модули и пытаетесь сохранить более плотную крышку на вещи когда все становится общедоступным, если вы знаете имя того, к чему вы пытаетесь получить доступ. Опускание __all__
может привести к Bad Things , или, как мне сказали. В то же время epydoc претендует на права и налево, что он чтит __all__
за то, что открыто, а что нет.
Я полагаю, что я неправильно использую epydoc, ошибочно предполагая использование __all__
в моем коде или ошибку в epydoc? (Я уже разрешил ошибку ошибки обработки в epydoc, которая, по-видимому, вызвана более новыми версиями docutils.)
Эта проблема исчезает при использовании epydoc для документирования нескольких файлов. Кажется, это ошибка в epydoc, но она легко работала, пока у вас есть реальный пакет для документирования, а не один модуль.