簡體   English   中英

如何記錄f2py的fortran函數?

[英]How to document fortran function for f2py?

我想使用docstring或類似的東西來記錄我的fortran例程,這些例程可以與python help命令一起使用。 f2py生成的自動生成的docstring遠遠不夠,我需要以與python函數docstring相同的方式添加更多詳細信息。

以我的想法,它應該看起來像:

mymod.f:

subroutine foo()
! This is my function
end subroutine

並在python會話中:

>>> import mymod
>>> help(mymod.foo)

一種較臟的解決方案是將文檔保存在ascii文件中,並在運行時加載它們。 f2py doc在編譯時進行了硬編碼,到目前為止,我認為尚無法在包裝器中對其進行修改(這很好!)。

例如,您可以編寫一個__init__.py文件,該文件加載f2py編譯模塊_mymodule.so並覆蓋或附加到f2py __doc__字符串。 “ >> mymodule.function?” 然后在ipython中工作,但令人驚訝的是“ >> help(mymodule.function)”不能! (不知道為什么...)

以下__init__.py片段摘錄了存儲在文件夾doc /中的文檔以及與每個功能相關聯的文件doc /“ function name” .doc。 在這種情況下,文檔始終會加載,但您也可以手動加載。

def load_documentation():
    """
    Fills the modules __doc__ strings
    """

    import os
    from . import _mymodule
    print('loading documentation')
    docfolder = os.path.abspath(os.path.join(os.path.dirname(__file__), 'doc'))
    for name,func in _mymodule.__dict__.items():
        if callable(func):
            try:
                path = os.path.join(docfolder,name.lower()+'.doc')

                docfile = open(path)
                doc = docfile.read()
                docfile.close()

                func.__doc__ = doc 
            except IOError as msg:
                print(msg)

load_documentation()

from _mymodule import *

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM