@@ -39,14 +39,17 @@ def isdataclass(s):
3939 "Check if `s` is a dataclass but not a dataclass' instance"
4040 return is_dataclass (s ) and isclass (s )
4141
42+ # %% ../nbs/06_docments.ipynb 19
4243def get_dataclass_source (s ):
4344 "Get source code for dataclass `s`"
4445 return getsource (s ) if not getattr (s , "__module__" ) == '__main__' else ""
4546
47+ # %% ../nbs/06_docments.ipynb 20
4648def get_source (s ):
4749 "Get source code for string, function object or dataclass `s`"
4850 return getsource (s ) if isfunction (s ) or ismethod (s ) else get_dataclass_source (s ) if isdataclass (s ) else s
4951
52+ # %% ../nbs/06_docments.ipynb 21
5053def _parses (s ):
5154 "Parse Python code in string, function object or dataclass `s`"
5255 return parse (dedent (get_source (s )))
@@ -75,10 +78,10 @@ def _param_locs(s, returns=True):
7578 return res
7679 return None
7780
78- # %% ../nbs/06_docments.ipynb 19
81+ # %% ../nbs/06_docments.ipynb 22
7982empty = Parameter .empty
8083
81- # %% ../nbs/06_docments.ipynb 20
84+ # %% ../nbs/06_docments.ipynb 23
8285def _get_comment (line , arg , comments , parms ):
8386 if line in comments : return comments [line ].strip ()
8487 line -= 1
@@ -92,7 +95,7 @@ def _get_full(anno, name, default, docs):
9295 if anno == empty and default != empty : anno = type (default )
9396 return AttrDict (docment = docs .get (name ), anno = anno , default = default )
9497
95- # %% ../nbs/06_docments.ipynb 21
98+ # %% ../nbs/06_docments.ipynb 24
9699def _merge_doc (dm , npdoc ):
97100 if not npdoc : return dm
98101 if not dm .anno or dm .anno == empty : dm .anno = npdoc .type
@@ -105,14 +108,14 @@ def _merge_docs(dms, npdocs):
105108 if 'return' in dms : params ['return' ] = _merge_doc (dms ['return' ], npdocs ['Returns' ])
106109 return params
107110
108- # %% ../nbs/06_docments.ipynb 22
111+ # %% ../nbs/06_docments.ipynb 25
109112def _get_property_name (p ):
110113 "Get the name of property `p`"
111114 if hasattr (p , 'fget' ):
112115 return p .fget .func .__qualname__ if hasattr (p .fget , 'func' ) else p .fget .__qualname__
113116 else : return next (iter (re .findall (r'\'(.*)\'' , str (p )))).split ('.' )[- 1 ]
114117
115- # %% ../nbs/06_docments.ipynb 23
118+ # %% ../nbs/06_docments.ipynb 26
116119def get_name (obj ):
117120 "Get the name of `obj`"
118121 if hasattr (obj , '__name__' ): return obj .__name__
@@ -121,14 +124,14 @@ def get_name(obj):
121124 elif type (obj )== property : return _get_property_name (obj )
122125 else : return str (obj ).split ('.' )[- 1 ]
123126
124- # %% ../nbs/06_docments.ipynb 25
127+ # %% ../nbs/06_docments.ipynb 28
125128def qual_name (obj ):
126129 "Get the qualified name of `obj`"
127130 if hasattr (obj ,'__qualname__' ): return obj .__qualname__
128131 if ismethod (obj ): return f"{ get_name (obj .__self__ )} .{ get_name (fn )} "
129132 return get_name (obj )
130133
131- # %% ../nbs/06_docments.ipynb 27
134+ # %% ../nbs/06_docments.ipynb 30
132135def _docments (s , returns = True , eval_str = False ):
133136 "`dict` of parameter names to 'docment-style' comments in function or string `s`"
134137 nps = parse_docstring (s )
@@ -148,12 +151,12 @@ def _docments(s, returns=True, eval_str=False):
148151 if k in hints : v ['anno' ] = hints .get (k )
149152 return res
150153
151- # %% ../nbs/06_docments.ipynb 28
154+ # %% ../nbs/06_docments.ipynb 31
152155@delegates (_docments )
153156def docments (elt , full = False , ** kwargs ):
154157 "Generates a `docment`"
155158 res = _docments (elt , ** kwargs )
156- if hasattr (elt , "__delwrap__" ): #for delegates
159+ if hasattr (elt , "__delwrap__" ): # for delegates
157160 delwrap_dict = _docments (elt .__delwrap__ , ** kwargs )
158161 verbose = getattr (elt ,'__delopts__' ,{}).get ('verbose' ,True )
159162 for k ,v in res .items ():
0 commit comments