Мой код имеет следующую структуру каталогов:

apkg/
  __init__.py
  amod.py
  bmod.py
  cmod.py

Где apkg/__init__.py содержит:

"""
effusive top-level documentation
"""
from apkg.amod import foo
from apkg.bmod import bar
from apkg.cmod import baz

И из python repl я могу успешно вызывать foo, bar и baz, не зная, в каком подмодуле они определены:

>>> import apkg
>>> apkg.foo()
"foo"

И получите их документацию:

>>> help(apkg.foo)
Help on function foo in module apkg.amod:

foo()
    Returns "foo"

Но они не рекламируются в документации apkg:

>>> help(apkg)
Help on package apkg:

NAME
    apkg - effusive top-level documentation

PACKAGE CONTENTS
    amod
    bmod
    cmod

FILE
    /path/to/apkg/__init__.py

Это имеет смысл по умолчанию, поскольку я вряд ли захочу включать документацию defaultdict, просто выполнив from collections import defaultdict в apkg/__init__.py.

Есть ли способ изменить это значение по умолчанию, чтобы я мог указать синтаксическому анализатору документации перечислить foo, bar и baz в разделе FUNCTIONS для help(apkg)?

0
rampion 16 Дек 2016 в 23:16

1 ответ

Лучший ответ

Согласно этому ответу:

Инструменты документации

Инструменты документирования и автозаполнения кода могут (на самом деле, должны) также проверять __all__, чтобы определить, какие имена показывать как доступные из модуля.

Это так же просто, как добавить одну строку к apkg/__init__.py

__all__ = ['foo', 'bar', 'baz']
0
Community 23 Май 2017 в 15:24