V Qc@sdZddlZddlZddlZddlZddlZddlmZmZdZdddYZ dddYZ d e e fd YZ d e fd YZ d e e fdYZ ddZejejdgffZejejejejejejejejejejejejejejej ej!ej"ej#ej$dgfffffffffffffffffej%dfffZ&dS(sSimple code to extract class & function docstrings from a module. This code is used as an example in the library reference manual in the section on using the parser module. Refer to the manual for a thorough discussion of the operation of this code. iN(tListTypet TupleTypecCsVt|j}tjjtjj|d}tj|}t|j |S(sRetrieve information from the parse tree of a source file. fileName Name of the file to read Python source code from. i( topentreadtostpathtbasenametsplitexttparsertsuitet ModuleInfottotuple(tfileNametsourceRtast((s+/usr/lib64/python2.7/Demo/parser/example.pytget_docss"t SuiteInfoBasecBsVeZdZdZddZdZdZdZdZ dZ dZ RS( tcCs,i|_i|_|r(|j|ndS(N(t _class_infot_function_infot _extract_info(tselfttree((s+/usr/lib64/python2.7/Demo/parser/example.pyt__init__!s  cCst|dkr2ttd|d\}}ntt|d\}}|rgt|d|_nx|dD]}tt|\}}|rr|d}|dtjkr|dd}t||j |scCs |jjS(N(Rtkeys(R((s+/usr/lib64/python2.7/Demo/parser/example.pytget_class_namesAscCs |j|S(N(R(RR)((s+/usr/lib64/python2.7/Demo/parser/example.pytget_class_infoDscCs/y|j|SWntk r*|j|SXdS(N(RtKeyErrorR(RR)((s+/usr/lib64/python2.7/Demo/parser/example.pyt __getitem__Gs N( t__name__t __module__RR+tNoneRRR*R,R.R/R1(((s+/usr/lib64/python2.7/Demo/parser/example.pyRs      t SuiteFuncInfocBseZdZdZRS(cCs |jjS(N(RR-(R((s+/usr/lib64/python2.7/Demo/parser/example.pytget_function_namesQscCs |j|S(N(R(RR)((s+/usr/lib64/python2.7/Demo/parser/example.pytget_function_infoTs(R2R3R6R7(((s+/usr/lib64/python2.7/Demo/parser/example.pyR5Ns R"cBseZddZRS(cCs5|dd|_tj||r*|dp-ddS(Niii(R+RRR4(RR((s+/usr/lib64/python2.7/Demo/parser/example.pyRYsN(R2R3R4R(((s+/usr/lib64/python2.7/Demo/parser/example.pyR"XsR$cBs&eZddZdZdZRS(cCs5|dd|_tj||r*|dp-ddS(Niii(R+RRR4(RR((s+/usr/lib64/python2.7/Demo/parser/example.pyR_scCs |jjS(N(RR-(R((s+/usr/lib64/python2.7/Demo/parser/example.pytget_method_namescscCs |j|S(N(R(RR)((s+/usr/lib64/python2.7/Demo/parser/example.pytget_method_infofsN(R2R3R4RR8R9(((s+/usr/lib64/python2.7/Demo/parser/example.pyR$^s  R cBseZdddZRS(scCsU||_tj|||rQtt|d\}}|rQ|d|_qQndS(NiR(R+RRRRR(RRR)R%R&((s+/usr/lib64/python2.7/Demo/parser/example.pyRks  N(R2R3R4R(((s+/usr/lib64/python2.7/Demo/parser/example.pyR jscCs|dkri}nt|tkr?|||dsF      1   + ?