
    e                         d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZ i ZdZ eh d      Zd	 Zd
 ZdefdZd ZdeddfdZy)zAstroid hooks for the Python 2 GObject introspection bindings.

Helps with understanding everything imported from 'gi.repository'
    N)nodes)AstroidBuilder)AstroidBuildingError)AstroidManagerz^[A-Za-z_]\w*$>   __eq____ge____gt____le____lt____ne____del____len____str____bool____exit____hash____iter____next____repr__	__enter____delattr____delitem____getattr____getitem____nonzero____setattr____setitem____contains__c                 "   i }i }i }i }t        |       D ]^  }|j                  d      r	|t        vrt        j                  t
        |      s9	 t        | |      }t        j                  |      r|||<   at        j                  |      st        j                  |      r|||<   t        j                  |      st        j                  |      r|||<   t        |      j                  d      sIt        |      j                  d      s/t        |      j                  d      st        j                  |      rd||<   +t!        |t"        t        f      r|||<   Ht%        |      r|||<   Zd||<   a d}|r|d| j&                   dz  }t)        |      D ]_  }|d   j+                         r||   }t        |      }	t!        |t              rd	t        |      j-                  d
d      z  }	|| d|	 dz  }a |r|dz  }|r|d| j&                   dz  }t)        |      D ]  }|d| dz  }|dz  } |r|dz  }|r|d| j&                   dz  }t)        |      D ]  }|d| dz  }|dz  } |r|dz  }|r|d| j&                   dz  }t)        |j/                               D ]Y  \  }}d}
t1        |t              rd}
|d| d|
 dz  }t3        |      }|sd}|j5                         D ]  }|d|z   dz   z  } |dz  }[ |S # t        $ r Y w xY w)z`
    Inspect the passed module recursively and build stubs for functions,
    classes, etc.
    __z<flagsz<enum z<GType r    z# z constants

z"%s"\z\\z = 
z

z functions

zdef z(*args, **kwargs):
z	    pass
z
 methods

z(self, *args, **kwargs):
z
 classes

object	Exceptionzclass (z):
zpass
z    )dir
startswith_special_methodsrematch_identifier_regetattrr%   inspectisclass
isfunction	isbuiltinismethodismethoddescriptorstrisdatadescriptor
isinstanceintcallable__name__sortedisdigitreplaceitems
issubclass_gi_build_stub
splitlines)parentclasses	functions	constantsmethodsnameobjretvalstrvalbaseclassretlines                8/usr/lib/python3/dist-packages/astroid/brain/brain_gi.pyr?   r?   9   sj   
 GIIGF # ??4 T1A%A xx-	&$'C ??3GDM$(9(9#(>!IdOc"g&@&@&EGDMH)3x""8,3x""9-'',IdOc3Z(!IdOc]!IdO  IdOG# J CFOO$N33y! &7?? oSc3c#h..tV<<F$s6("%%& vFOO$N33y! dV/00| vFOO$L11w dV566| vFOO$L11GMMO, 	cc9%DvQtfD))!#&H'') 	(D6D=4''C	(t J]  	 	s   L	LLc                    | j                  d      st        |       | t        vr| g}g }| dk(  r|j                  d       n| dk(  r|j                  d       	 d}t	        j
                  ||      D ]  }	 t        j                         5  	 dd	lm	}m
} t        j                  d
|       t        j                  d
|       t        |       |t        t        j                   |         z  }d d d         	 t%        t'                     j)                  ||       }|t        | <   n	t        |    }|t        |       |S # t        $ r Y w xY w# 1 sw Y   axY w# t"        $ r ||vr Y w xY w# t"        $ r d x}t        | <   Y Uw xY w)Nzgi.repository.)modnamezgi.repository.GLibzgi._glibzgi.repository.GObjectzgi._gobjectr!   r   )PyGIDeprecationWarningPyGIWarningignore)r(   r   _inspected_modulesappend	itertoolschainwarningscatch_warningsgirQ   rR   simplefilterr%   
__import__r?   sysmodulesImportErrorr   r   string_build)rP   modnamesoptional_modnamesmodcodemrQ   rR   astngs           rN   _import_gi_modulerf      s   ./"733((9 **$$Z0//$$]3	0G__X/@A !002 B	!
 %11(<RS$11(KH #1>#++a.#AAB0 #>#34AA'7SE*/w'"7+}"733L#  ) ! !B B  #  11 2  	7266E&w/	7sr   E) 5E	E	4D:?*E	)E1E) :	EE	EE		E	EE&#E) %E&&E) )F ?F returnc                    t        | j                        dk7  ryt        d | j                  D              sy| j                  }t	        |t
        j                        rO|j                  dk7  ryt	        |j                  t
        j                        r|j                  j                  dk(  ryyt	        |t
        j                        r|j                  dk(  S y)N   Fc              3   P   K   | ]  }t        |t        j                           y wN)r6   r   Const).0args     rN   	<genexpr>z._looks_like_require_version.<locals>.<genexpr>   s     Az#u{{+As   $&require_versionrZ   T)lenargsallfuncr6   r   	AttributeattrnameexprNamerF   )nodert   s     rN   _looks_like_require_versionrz      s     499~AtyyAA99D$(==--dii,41G$

#yy---    c                     	 dd l }|j                  | j                  d   j                  | j                  d   j                         | S # t        $ r Y | S w xY w)Nr      )rZ   rp   rr   valuer%   )ry   rZ   s     rN   _register_require_versionr      sV    
499Q<--tyy|/A/AB K  Ks   AA 	AAmanagerc                     | j                  t               | j                  t        j                  t
        t               y rk   )register_failed_import_hookrf   register_transformr   Callr   rz   )r   s    rN   registerr      s,    ''(9:

-/Jr{   )__doc__r.   rV   r*   r]   rX   astroidr   astroid.builderr   astroid.exceptionsr   astroid.managerr   rT   r,   	frozensetr)   r?   rf   boolrz   r   r    r{   rN   <module>r      ss   
   	 
   * 3 * " <aH2j 0	n  r{   