diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2020-11-10 17:21:51 +0300 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2020-11-10 17:21:51 +0300 |
commit | 1254b8011347b309af122dbe91a9439cc56f4381 (patch) | |
tree | 241b3f47ed71c3500330690118de5a7c7e55e2d4 /sphinx/pycode | |
parent | 7299d589c61d3558efb9777d03454f8e2a3dafd1 (diff) | |
parent | 229e11c488fc1fbd15b0a209782aa94dc6abdf58 (diff) |
Merge branch '3.x'
Diffstat (limited to 'sphinx/pycode')
-rw-r--r-- | sphinx/pycode/__init__.py | 13 |
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 |