o
    ƒÆb]   ã                   @   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i 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 )z�Set 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   |   ¡ }t |d ¡}|rt|dƒr|jS |tjkr/|  ¡ }| ¡ }|s'|  	¡ S d| 
¡ |f S |  	¡ S )NÚ__name__z%s.%s)Úget_tagÚ_type_tag_to_py_typeÚgetÚhasattrr   r   Ú	INTERFACEÚget_interfaceÚget_nameÚget_tag_as_stringÚget_namespace)Úgi_typeÚtype_tagÚpy_typeÚifaceÚ	info_namer   r   r   Ú_get_pytype_hint\   s   
r"   c                 C   sØ  g }t | tƒrdg}nt | tƒr|  ¡ rdg}|  ¡ }d}tƒ }tƒ }|D ]}| | ¡ ¡ | | ¡  	¡ ¡ | | 
¡ ¡ q%t|ƒD ]?\}}| ¡ tjkrOqC||v rTqC| ¡ }t| ¡ ƒ}	|	|vrh|d|	 7 }| ¡ sp||v ru|d7 }n| ¡ r}|d7 }| |¡ qCd |¡}
g }t|  ¡ ƒ}|  ¡ s©|r©||vr©|}|  ¡ r¤|d7 }| |¡ t|ƒD ]*\}}| ¡ tjkr¹q­||v r¾q­| ¡ }t| ¡ ƒ}	|	|vrÒ|d|	 7 }| |¡ q­|råd| j|
d |¡f S d	| j|
f S )
NÚself)Úvoidú:z=Nonez=<optional>z, z or Nonez%s(%s) -> %sz%s(%s))Ú
isinstancer   r   Ú	is_methodÚget_argumentsÚsetÚaddÚget_destroyÚget_typeÚget_array_lengthÚget_closureÚ	enumerateÚget_directionr   ÚOUTr   r"   Úmay_be_nullÚis_optionalÚappendÚjoinÚget_return_typeÚskip_returnÚmay_return_nullÚINr   )r   Úin_args_strsÚargsÚhint_blacklistÚignore_indicesÚuser_data_indicesÚargÚiÚargstrÚhintÚin_args_strÚout_args_strsÚreturn_hintr   r   r   Ú_generate_callable_info_docn   sb   




rF   c                 C   s‚   d}d}t | tƒr|  ¡ dkr|d|  ¡  d 7 }n
|d|  ¡  d 7 }|  ¡ D ]}| ¡ r8|dt|ƒ d 7 }q(|r?|| S dS )Nz
:Constructors:

::

Ú é    z    z()
z(**properties)
Ú
)r&   r   Úget_sizer   Úget_methodsÚis_constructorrF   )r   ÚheaderÚdocÚmethod_infor   r   r   Ú_generate_class_info_doc®   s   
€€rP   c                 C   s,   t | ttfƒrt| ƒS t | tƒrt| ƒS dS )NrG   )r&   r   r   rP   r   rF   r   r   r   r   Ú_generate_doc_dispatchÃ   s
   
rQ   )-Ú_gir   r   r   r   r   r   r   r
   r   r   r   ÚBOOLEANÚboolÚINT8ÚintÚUINT8ÚINT16ÚUINT16ÚINT32ÚUINT32ÚINT64ÚUINT64ÚFLOATÚfloatÚDOUBLEÚGLISTÚlistÚGSLISTÚARRAYÚGHASHÚdictÚUTF8ÚstrÚFILENAMEÚUNICHARr   ÚGTYPEÚERRORÚVOIDr   r"   rF   rP   rQ   r   r   r   r   Ú<module>   sb   $

ÿþýüûúùø	÷
öõôóòñðë@
