Nieco brudny rozwiązaniem jest, aby zapisać w dokumentacji w plikach ASCII i załaduj je w czasie wykonywania. Dokument f2py jest zakodowany w czasie kompilacji, a opcja modyfikacji go w opakowaniu nie jest do tej pory dostępna (to byłoby miłe!).
Można na przykład napisać plik __init__.py, który ładuje skompilowany moduł f2py _mymodule.so i nadpisuje lub dołącza do ciągów f2py __doc__. ">> mymodule.function?" w ipython działa wtedy, ale zaskakująco ">> help (mymodule.function)" nie działa! (nie mam pojęcia, dlaczego ...)
Poniższy fragment __init__.py pobiera dokumentację przechowywaną w folderze doc/i pliki doc/"nazwa funkcji" .doc, które są powiązane z każdą funkcją. W takim przypadku dokumentacja jest zawsze ładowana, ale można ją również załadować ręcznie.
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 *
Nie widzę powodu, dla którego to pytanie powoduje spadek głosów i głosów do zamknięcia. Jak dostosować docstring funkcji generowanej przez f2py brzmi jak dobre pytanie do mnie. –
Nie widzę też, dlaczego chcą zamknąć to pytanie. Czy następny może napisać komentarz do wyjaśnienia? – Sigmun