Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sphinx-doc/sphinx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2020-11-10 17:21:51 +0300
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2020-11-10 17:21:51 +0300
commit1254b8011347b309af122dbe91a9439cc56f4381 (patch)
tree241b3f47ed71c3500330690118de5a7c7e55e2d4 /sphinx/pycode
parent7299d589c61d3558efb9777d03454f8e2a3dafd1 (diff)
parent229e11c488fc1fbd15b0a209782aa94dc6abdf58 (diff)
Merge branch '3.x'
Diffstat (limited to 'sphinx/pycode')
-rw-r--r--sphinx/pycode/__init__.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/sphinx/pycode/__init__.py b/sphinx/pycode/__init__.py
index 943c77244..8bc1ba6c1 100644
--- a/sphinx/pycode/__init__.py
+++ b/sphinx/pycode/__init__.py
@@ -139,9 +139,13 @@ class ModuleAnalyzer:
self.overloads = None # type: Dict[str, List[Signature]]
self.tagorder = None # type: Dict[str, int]
self.tags = None # type: Dict[str, Tuple[str, int, int]]
+ self._parsed = False
def parse(self) -> None:
"""Parse the source code."""
+ if self._parsed:
+ return None
+
try:
parser = Parser(self.code)
parser.parse()
@@ -158,19 +162,16 @@ class ModuleAnalyzer:
self.overloads = parser.overloads
self.tags = parser.definitions
self.tagorder = parser.deforders
+ self._parsed = True
except Exception as exc:
raise PycodeError('parsing %r failed: %r' % (self.srcname, exc)) from exc
def find_attr_docs(self) -> Dict[Tuple[str, str], List[str]]:
"""Find class and module-level attributes and their documentation."""
- if self.attr_docs is None:
- self.parse()
-
+ self.parse()
return self.attr_docs
def find_tags(self) -> Dict[str, Tuple[str, int, int]]:
"""Find class, function and method definitions and their location."""
- if self.tags is None:
- self.parse()
-
+ self.parse()
return self.tags