From 9a35301a29de65daf37b7b19a48bbcd20d3638ed Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Wed, 30 Jan 2013 21:03:48 +0100 Subject: [PATCH 1/3] Add doctests for search_param_in_docstr --- jedi/docstrings.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/jedi/docstrings.py b/jedi/docstrings.py index badb6348..a85d68f8 100644 --- a/jedi/docstrings.py +++ b/jedi/docstrings.py @@ -39,6 +39,17 @@ def follow_param(param): def search_param_in_docstr(docstr, param_str): + """ + Search `docstr` for a type of `param_str`. + + >>> search_param_in_docstr(':type param: int', 'param') + 'int' + >>> search_param_in_docstr('@type param: int', 'param') + 'int' + >>> search_param_in_docstr('no document', 'param') is None + True + + """ # look at #40 to see definitions of those params patterns = [ re.compile(p % re.escape(param_str)) for p in DOCSTRING_PARAM_PATTERNS ] for pattern in patterns: From ef1123a513c8d4ed286d83820af751e048f949e5 Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Wed, 30 Jan 2013 21:07:30 +0100 Subject: [PATCH 2/3] Add a failing doctest for :class:`ClassName` --- jedi/docstrings.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jedi/docstrings.py b/jedi/docstrings.py index a85d68f8..8e69d8d9 100644 --- a/jedi/docstrings.py +++ b/jedi/docstrings.py @@ -46,6 +46,9 @@ def search_param_in_docstr(docstr, param_str): 'int' >>> search_param_in_docstr('@type param: int', 'param') 'int' + >>> search_param_in_docstr( + ... ':type param: :class:`threading.Thread`', 'param') + 'threading.Thread' >>> search_param_in_docstr('no document', 'param') is None True From a7131fa949d6d1d52d0eadcec53f018f7135ce50 Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Wed, 30 Jan 2013 21:09:41 +0100 Subject: [PATCH 3/3] Make the failing doctest pass --- jedi/docstrings.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jedi/docstrings.py b/jedi/docstrings.py index 8e69d8d9..72d773b4 100644 --- a/jedi/docstrings.py +++ b/jedi/docstrings.py @@ -58,7 +58,10 @@ def search_param_in_docstr(docstr, param_str): for pattern in patterns: match = pattern.search(docstr) if match: - return match.group(1) + type_str = match.group(1) + if type_str.startswith(':class:'): + type_str = type_str[len(':class:'):].strip('`') + return type_str return None