@@ -79,56 +79,90 @@ def _str_returns(self, name='Returns'):
79
79
out += ['' ]
80
80
return out
81
81
82
+ def _process_param (self , param , desc , autosum ):
83
+ """Determine how to display a parameter
84
+
85
+ Emulates autosummary behavior if autosum is not None.
86
+
87
+ Parameters
88
+ ----------
89
+ param : str
90
+ The name of the parameter
91
+ desc : list of str
92
+ The parameter description as given in the docstring
93
+ autosum : list or None
94
+ If a list, autosummary-style behaviour will apply for params
95
+ that are attributes of the class and have a docstring.
96
+ Names for autosummary generation will be appended to this list.
97
+
98
+ If None, autosummary is disabled.
99
+
100
+ Returns
101
+ -------
102
+ display_param : str
103
+ The marked up parameter name for display. This may include a link
104
+ to the corresponding attribute's own documentation.
105
+ desc : list of str
106
+ A list of description lines. This may be identical to the input
107
+ ``desc``, if ``autosum is None`` or ``param`` is not a class
108
+ attribute, or it will be a summary of the class attribute's
109
+ docstring.
110
+ """
111
+ param = param .strip ()
112
+ display_param = '**%s**' % param
113
+
114
+ if autosum is None :
115
+ return display_param , desc
116
+
117
+ param_obj = getattr (self ._obj , param , None )
118
+ if not (callable (param_obj )
119
+ or isinstance (param_obj , property )
120
+ or inspect .isgetsetdescriptor (param_obj )):
121
+ param_obj = None
122
+ obj_doc = pydoc .getdoc (param_obj )
123
+
124
+ if not (param_obj and obj_doc ):
125
+ return display_param , desc
126
+
127
+ prefix = getattr (self , '_name' , '' )
128
+ if prefix :
129
+ autosum_prefix = '~%s.' % prefix
130
+ link_prefix = '%s.' % prefix
131
+ else :
132
+ autosum_prefix = ''
133
+ link_prefix = ''
134
+
135
+ # Referenced object has a docstring
136
+ autosum .append (" %s%s" % (autosum_prefix , param ))
137
+ display_param = ':obj:`%s <%s%s>`' % (param ,
138
+ link_prefix ,
139
+ param )
140
+ if obj_doc :
141
+ # Overwrite desc. Take summary logic of autosummary
142
+ desc = re .split ('\n \s*\n ' , obj_doc .strip (), 1 )[0 ]
143
+ # XXX: Should this have DOTALL?
144
+ # It does not in autosummary
145
+ m = re .search (r"^([A-Z].*?\.)(?:\s|$)" ,
146
+ ' ' .join (desc .split ()))
147
+ if m :
148
+ desc = m .group (1 ).strip ()
149
+ else :
150
+ desc = desc .partition ('\n ' )[0 ]
151
+ desc = desc .split ('\n ' )
152
+ return display_param , desc
153
+
82
154
def _str_param_list (self , name , fake_autosummary = False ):
83
155
out = []
84
156
if self [name ]:
85
157
if fake_autosummary :
86
- prefix = getattr (self , '_name' , '' )
87
- if prefix :
88
- autosum_prefix = '~%s.' % prefix
89
- link_prefix = '%s.' % prefix
90
- else :
91
- autosum_prefix = ''
92
- link_prefix = ''
93
158
autosum = []
159
+ else :
160
+ autosum = None
94
161
95
162
out += self ._str_field_list (name )
96
163
out += ['' ]
97
164
for param , param_type , desc in self [name ]:
98
- param = param .strip ()
99
-
100
- display_param = '**%s**' % param
101
-
102
- if fake_autosummary :
103
- param_obj = getattr (self ._obj , param , None )
104
- if not (callable (param_obj )
105
- or isinstance (param_obj , property )
106
- or inspect .isgetsetdescriptor (param_obj )):
107
- param_obj = None
108
- obj_doc = pydoc .getdoc (param_obj )
109
-
110
- if param_obj and obj_doc :
111
- # Referenced object has a docstring
112
- autosum += [" %s%s" % (autosum_prefix , param )]
113
- # TODO: add signature to display as in autosummary
114
- # Difficult because autosummary's processing
115
- # involves sphinx's plugin mechanism, for
116
- # directives only
117
- display_param = ':obj:`%s <%s%s>`' % (param ,
118
- link_prefix ,
119
- param )
120
- if obj_doc :
121
- # Overwrite desc. Take summary logic of autosummary
122
- desc = re .split ('\n \s*\n ' , obj_doc .strip (), 1 )[0 ]
123
- # XXX: Should this have DOTALL?
124
- # It does not in autosummary
125
- m = re .search (r"^([A-Z].*?\.)(?:\s|$)" ,
126
- ' ' .join (desc .split ()))
127
- if m :
128
- desc = m .group (1 ).strip ()
129
- else :
130
- desc = desc .partition ('\n ' )[0 ]
131
- desc = desc .split ('\n ' )
165
+ display_param , desc = self ._process_param (param , desc , autosum )
132
166
133
167
if param_type :
134
168
out += self ._str_indent (['%s : %s' % (display_param ,
0 commit comments