2010-09-21 18 views
27

Tôi muốn sử dụng sự kiện sphinx's autodoc-skip-member để chọn một phần của các thành viên trong một lớp trăn nhất định cho tài liệu.Kết nối Sphinx autodoc-skip-member với chức năng của tôi

Nhưng nó không phải là rõ ràng từ các tài liệu nhân sư, và tôi không thể tìm thấy bất kỳ ví dụ minh họa: nơi nào tôi đặt mã để kết nối này? Tôi thấy Sphinx.connect và tôi nghi ngờ nó đi trong conf.py của tôi, nhưng khi tôi cố gắng biến thể trên mã này trong conf.py tôi không thể tìm thấy đối tượng ứng dụng mà tôi nên kết nối():

def maybe_skip_member(app, what, name, obj, skip, 
            options): 
    print app, what, name, obj, skip, options 
    return False 

# This is not even close to correct: 
#from sphinx.application import Sphinx 
#Sphinx().connect('autodoc-skip-member', maybe_skip_member) 

Một con trỏ một ví dụ đơn giản sẽ là lý tưởng.

Trả lời

39

Aha, nỗ lực mương cuối cùng trên một chút googling bật lên this example, cuộn xuống dưới cùng. Rõ ràng một hàm setup() trong conf.py sẽ được gọi với ứng dụng. Tôi đã có thể xác định những điều sau ở cuối phần conf.py của mình:

def maybe_skip_member(app, what, name, obj, skip, options): 
    print app, what, name, obj, skip, options 
    return True 

def setup(app): 
    app.connect('autodoc-skip-member', maybe_skip_member) 

Rõ ràng là vô ích (bỏ qua mọi thứ), nhưng đó là ví dụ tối thiểu mà tôi đang tìm kiếm và không thể tìm thấy ...

11

Câu trả lời này mở rộng theo số answer by bstpierre. Bên dưới là phần có liên quan từ số conf.py:

autodoc_default_flags = ['members', 'private-members', 'special-members', 
         #'undoc-members', 
         'show-inheritance'] 

def autodoc_skip_member(app, what, name, obj, skip, options): 
    exclusions = ('__weakref__', # special-members 
        '__doc__', '__module__', '__dict__', # undoc-members 
       ) 
    exclude = name in exclusions 
    return skip or exclude 

def setup(app): 
    app.connect('autodoc-skip-member', autodoc_skip_member) 
của chúng tôi
Các vấn đề liên quan