== edit ==更新
したがって、あなたが遭遇する問題は、CLIベースのヘルプのために、ドキュメントの文字列幅は本当に元のドキュメントのNewLinesによってのみ制限されるということです。つまり、あなたが 'helpを実行したとき(将来) '、それはドキュメント文字列を印刷してページするだけです。派手なものも、その場で行われたフォーマットもありません。これが、ドキュメントをHTMLにレンダリングすれば、ブラウザの幅を変更できるため、ラップが異なる理由です。
この動作を変更する唯一の方法は、実際にドックストリング自体を変更する場合です。
ドキュメントの文字列をモンキーパッチする方法の簡単な例を次に示します。本質的にドックストリングで、ニューラインはラインの終わりまでハードコードされているため、
a = """
one
two
three
"""
にエンコードします
'\none\ntwo\n\nthree\n'
自動的に「ラップ」ラインが必要な場合は、 n [^ n](Newline + Charatureではない新しいライン +文字)をキャプチャされた文字を置き換えるだけです。
re.sub('\n([^\n])', ' \g<1>', a)
それから
' one two\n three\n'
これは非常にハッキーなことをする方法ですが、物事を包むように再フォーマットするために私が考えることができる唯一の方法です。
より良い例は次のとおりです。
#!/usr/bin/python
import pydoc
import re
t = re.sub('\n([^\n])', ' \g<1>', pydoc.__doc__)
pydoc.__doc__ = t
help(pydoc)
== edit ==
これはあなたのニーズに合っているかもしれないし、そうでないかもしれませんが、私は少し異なって解決したという同様の不満がありました。バックグラウンドのブラウザにstdlibドキュメントをロードする「ヘルプ」ラッパーを書きました。それはあなたを助けるかもしれないし、そうでないかもしれません - 良いことの1つは、PydocのHTML出力がパラグラフのさまざまな幅を可能にすることです。
添付のスクリプトを使用して、site.pyからインポートしてから、stdlibのものでCLIからhelp()を実行すると、対応するWebページを自動的に開きます。これはあなた自身の地元のものに対して何もしません(私はそれはしばらく経っていないと思います)が、そうするために変更することができます。
あなたが筋金入りのCLIの男なら、お詫びします。しかし、物の出力に関して同様の不満に直面したとき、これは私が最初に試したことです。
#!/usr/bin/python
import inspect
import os
import sys
import webbrowser
from pydoc import Helper
__all__ = ['MyHelper', 'old_help', 'help']
class MyHelper(Helper):
def __init__(self):
Helper.__init__(self)
def getdocloc(self, object):
global old_help
"""Return the location of module docs or None"""
try:
file = inspect.getabsfile(object)
except TypeError:
file = '(built-in)'
docloc = os.environ.get("PYTHONDOCS", "http://docs.python.org/library")
basedir = os.path.join(sys.exec_prefix, "lib", "python"+sys.version[0:3])
BUILTINS_LIST = ( 'errno', 'exceptions', 'gc', 'imp', 'marshal', 'posix', 'signal', 'sys', 'thread', 'zipimport')
if (isinstance(object, type(os)) and (object.__name__ in BUILTINS_LIST or file.startswith(basedir)) and object.__name__ not in ('xml.etree', 'test.pydoc_mod')):
if docloc.startswith("http://"):
docloc = "%s/%s" % (docloc.rstrip("/"), object.__name__)
else:
docloc = os.path.join(docloc, object.__name__ + ".html")
else:
docloc = None
return docloc
def __repr__(self):
global old_help
if inspect.stack()[1][3] == '?':
return self()
return ''
else:
return '<HHhelp instance>'
def help(self, *args):
print args
global old_help
if isinstance(args[0], object):
docloc = self.getdocloc(args[0])
print '********',docloc,type(docloc)
if isinstance(docloc, str):
if docloc.find('http://') == 0:
webbrowser.open(docloc)
else:
old_help(args)
global old_help, help
old_help = help
help = MyHelper()
きれいなPythonドキュメントを入手するために使用する2番目のソリューションは、Sphinxを使用することです Sphinx-Apidoc PythonモジュールのAPIドキュメントを自動的に生成します。標準のPython Doc Output Stuffは本当に制限されています(あなたが経験しているように)。
しかし、そうは言っても、ドキュメントの幅は何らかの形で構成可能であるが、サルのパッチをかける必要があると確信しています。