3
KP\               ,   @   s   d dl mZmZmZmZmZmZmZ dadd Z	dd Z
dd Zejeejeejeejeejeejeejeejeejeejeejeejeejeejeejeej e!ej"e!ej#e!ej$dej%dej&dej'diZ(d	d
 Z)dd Z*dd Z+dd Z,e	e, dS )   )	VFuncInfoFunctionInfoCallableInfo
ObjectInfo
StructInfo	DirectionTypeTagNc             C   s   | a dS )zSet doc string generator function

    :param callable func:
        Callable which takes a GIInfoStruct and returns documentation for it.
    N)_generate_doc_string_func)func r   ./usr/lib/python3/dist-packages/gi/docstring.pyset_doc_string_generator%   s    r   c               C   s   t S )z6Returns the currently registered doc string generator.)r	   r   r   r   r   get_doc_string_generator/   s    r   c             C   s   t | S )aE  Generate 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_string4   s    r   c             C   sf   | j  }tj|d }|r(t|dr(|jS |tjkr^| j }|j }|sN| j	 S d|j
 |f S | j	 S )N__name__z%s.%s)Zget_tag_type_tag_to_py_typegethasattrr   r   	INTERFACEZget_interfaceget_nameZget_tag_as_stringZget_namespace)Zgi_typeZtype_tagZpy_typeZifaceZ	info_namer   r   r   _get_pytype_hint\   s    
r   c             C   s  g }t | trdg}nt | tr.| j r.dg}| j }d
}t }t }x:|D ]2}|j|j  |j|j j	  |j|j
  qLW xt|D ]\}}|j tjkrq||krq|j }t|j }	|	|kr|d|	 7 }|j s||kr|d7 }n|j r|d7 }|j| qW dj|}
g }t| j }| j  rf|rf||krf|}| j r\|d7 }|j| xlt|D ]`\}}|j tjkrqp||krqp|j }t|j }	|	|kr|d|	 7 }|j| qpW |rd| j|
dj|f S d	| j|
f S d S )Nselfvoid:z=Nonez=<optional>z, z or Nonez%s(%s) -> %sz%s(%s))r   )
isinstancer   r   Z	is_methodZget_argumentssetaddZget_destroyZget_typeZget_array_lengthZget_closure	enumerateZget_directionr   ZOUTr   r   Zmay_be_nullZis_optionalappendjoinZget_return_typeZskip_returnZmay_return_nullINr   )r   Zin_args_strsargsZhint_blacklistZignore_indicesZuser_data_indicesargiZargstrZhintZin_args_strZout_args_strsZreturn_hintr   r   r   _generate_callable_info_docn   sb    









r%   c             C   s   d}d}t | tr4| j dkrH|d| j  d 7 }n|d| j  d 7 }x,| j D ] }|j rR|dt| d 7 }qRW |r|| S dS d S )Nz
:Constructors:

::

     z    z()
z(**properties)

)r   r   Zget_sizer   Zget_methodsZis_constructorr%   )r   headerdocZmethod_infor   r   r   _generate_class_info_doc   s    
r+   c             C   s,   t | ttfrt| S t | tr(t| S dS )Nr&   )r   r   r   r+   r   r%   )r   r   r   r   _generate_doc_dispatch   s
    
r,   )-Z_gir   r   r   r   r   r   r   r	   r   r   r   ZBOOLEANboolZINT8intZUINT8ZINT16ZUINT16ZINT32ZUINT32ZINT64ZUINT64ZFLOATfloatZDOUBLEZGLISTlistZGSLISTZARRAYZGHASHdictZUTF8strZFILENAMEZUNICHARr   ZGTYPEZERRORZVOIDr   r   r%   r+   r,   r   r   r   r   <module>   s>   $

@
