# HG changeset patch # User Matt Mackall # Date 1305302691 18000 # Node ID 660b0c1b619623aa168ac81dae22698c5901656a # Parent d5b525697ddbff2f819d4f8095aaf6d5726c4741 extensions: move moduledoc to break import loop with help diff -r d5b525697ddb -r 660b0c1b6196 mercurial/extensions.py --- a/mercurial/extensions.py Fri May 13 11:04:51 2011 -0500 +++ b/mercurial/extensions.py Fri May 13 11:04:51 2011 -0500 @@ -6,7 +6,7 @@ # GNU General Public License version 2 or any later version. import imp, os -import util, cmdutil, help, error +import util, cmdutil, error from i18n import _, gettext _extensions = {} @@ -209,6 +209,38 @@ exts[name] = path return exts +def _moduledoc(file): + '''return the top-level python documentation for the given file + + Loosely inspired by pydoc.source_synopsis(), but rewritten to + handle triple quotes and to return the whole text instead of just + the synopsis''' + result = [] + + line = file.readline() + while line[:1] == '#' or not line.strip(): + line = file.readline() + if not line: + break + + start = line[:3] + if start == '"""' or start == "'''": + line = line[3:] + while line: + if line.rstrip().endswith(start): + line = line.split(start)[0] + if line: + result.append(line) + break + elif not line: + return None # unmatched delimiter + result.append(line) + line = file.readline() + else: + return None + + return ''.join(result) + def _disabledhelp(path): '''retrieve help synopsis of a disabled extension (without importing)''' try: @@ -216,7 +248,7 @@ except IOError: return else: - doc = help.moduledoc(file) + doc = moduledoc(file) file.close() if doc: # extracting localized synopsis diff -r d5b525697ddb -r 660b0c1b6196 mercurial/help.py --- a/mercurial/help.py Fri May 13 11:04:51 2011 -0500 +++ b/mercurial/help.py Fri May 13 11:04:51 2011 -0500 @@ -10,39 +10,6 @@ import extensions import util - -def moduledoc(file): - '''return the top-level python documentation for the given file - - Loosely inspired by pydoc.source_synopsis(), but rewritten to - handle triple quotes and to return the whole text instead of just - the synopsis''' - result = [] - - line = file.readline() - while line[:1] == '#' or not line.strip(): - line = file.readline() - if not line: - break - - start = line[:3] - if start == '"""' or start == "'''": - line = line[3:] - while line: - if line.rstrip().endswith(start): - line = line.split(start)[0] - if line: - result.append(line) - break - elif not line: - return None # unmatched delimiter - result.append(line) - line = file.readline() - else: - return None - - return ''.join(result) - def listexts(header, exts, indent=1): '''return a text listing of the given extensions''' if not exts: