o b]  @sddlmZmZmZmZmZmZmZdaddZ ddZ ddZ iej e ejeejeejeejeejeejeejeejeejeejeejeejeejeejeej e!ej"e!ej#e!ej$dej%dej&dej'diZ(d d Z)d d Z*d dZ+ddZ,e e,dS)) VFuncInfo FunctionInfo CallableInfo ObjectInfo StructInfo DirectionTypeTagNcCs|adS)zSet doc string generator function :param callable func: Callable which takes a GIInfoStruct and returns documentation for it. N_generate_doc_string_func)funcr ./usr/lib/python3/dist-packages/gi/docstring.pyset_doc_string_generator%srcCstS)z6Returns the currently registered doc string generator.r r r r r get_doc_string_generator/srcCst|S)aEGenerate a doc string given a GIInfoStruct. :param gi.types.BaseInfo info: GI info instance to generate documentation for. :returns: Generated documentation as a string. :rtype: str This passes the info struct to the currently registered doc string generator and returns the result. r infor r r generate_doc_string4s rcCsf|}t|d}|rt|dr|jS|tjkr/|}|}|s'| Sd| |fS| S)N__name__z%s.%s) get_tag_type_tag_to_py_typegethasattrrr INTERFACE get_interfaceget_nameget_tag_as_string get_namespace)gi_typetype_tagpy_typeiface info_namer r r _get_pytype_hint\s  r"c Csg}t|tr dg}n t|tr|rdg}|}d}t}t}|D]}|||| || q%t |D]?\}}| t jkrOqC||vrTqC|}t|} | |vrh|d| 7}|sp||vru|d7}n|r}|d7}||qCd|} g} t|} |s| r| |vr| }|r|d7}| |t |D]*\}}| t jkrq||vrq|}t|} | |vr|d| 7}| |q| rd|j| d| fSd |j| fS) Nself)void:z=Nonez =z, z or Nonez %s(%s) -> %sz%s(%s)) isinstancerr is_method get_argumentssetadd get_destroyget_typeget_array_length get_closure enumerate get_directionrOUTrr" may_be_null is_optionalappendjoinget_return_type skip_returnmay_return_nullINr) r in_args_strsargshint_blacklistignore_indicesuser_data_indicesargiargstrhint in_args_str out_args_strs return_hintr r r _generate_callable_info_docnsb            rFcCsd}d}t|tr|dkr|d|d7}n |d|d7}|D]}|r8|dt|d7}q(|r?||SdS)Nz :Constructors: :: z z() z(**properties)  )r&rget_sizer get_methodsis_constructorrF)rheaderdoc method_infor r r _generate_class_info_docs   rPcCs,t|ttfr t|St|trt|SdS)NrG)r&rrrPrrFrr r r _generate_doc_dispatchs  rQ)-_girrrrrrrr rrrBOOLEANboolINT8intUINT8INT16UINT16INT32UINT32INT64UINT64FLOATfloatDOUBLEGLISTlistGSLISTARRAYGHASHdictUTF8strFILENAMEUNICHARrGTYPEERRORVOIDrr"rFrPrQr r r r sb$        @