3 ��<_�u�@s�ddlZddlZddlZddlmZmZddlmZddlm Z m Z m Z m Z ddl mZmZmZddlmZmZed�ZgZdd lmZeejd �dd lmZdd lmZeZejZejZejZejZd d�Z dd�Z!dd�Z"de_#de_$ejj%e_%e!e_&e'e"�e_(edddddddg7ZGdd�de)�Z*Gdd�dej+�Z+dd�Z,e-e+de,�ejd�d�d d!�Z.ejd!�xFd�D]>Z/d*e/Z0ede0d+e/�e1ej2d,e/�e3�e0<eje0��qxWx2d�D]*Z/e1ej4e/�e3�d3e/<ejd3e/��q�WxBd�D]:Z/d;e/Z0ede0d�ejd=�xBd�D]:Z/dCe/Z0e1ej8e/�e3�e0<ede0dDe/�eje0��qVWxBd�D]:Z/dLe/Z0e1ej9e/�e3�e0<ede0dMe/�eje0��q�WxBd�D]:Z/dUe/Z0e1ej:e/�e3�e0<ede0dVe/�eje0��q�WxBd�D]:Z/dZe/Z0ede0d[e/�e1ej;e/�e3�e0<eje0��q"Wx8d�D]0Z�Z>ee>�Z>ejdp�Gdqdr�drej?�Z?ee?�Z?ejdr�Gdsdt�dtej@�Z@ee@�Z@ejdt�Gdudv�dve@�ZAejdv�Gdwdx�dxe@�ZBejdx�dydz�ZCejdz�d{d|�ZDejd|�d}d~�ZEejd~�dd��ZFejd��d�d��ZGejd��Gd�d��d�ejH�ZHeeH�ZHejd��Gd�d��d�ejI�ZIeeI�ZIejd��d�d��ZJejd��d�d��ZKejd��d�d��ZLeeLd��ZLejd��d�d�d��ZMejd��eNed���sJd�d��ZOeOe_PejQejRejSfZTejd��edd�d��eZUejd��edd�d��dS)��N�)�wakeup_on_signal�register_sigint_fallback)�get_introspection_module)�variant_type_from_string� source_new�source_set_callback�io_channel_read)�override� deprecated�deprecated_attr)�PyGIDeprecationWarning� version_info�GLib)�_option�option)�_gi)�GErrorcCstjdtdd�dS)NzmSince version 3.11, calling threads_init is no longer needed. See: https://wiki.gnome.org/PyGObject/Threadingr)� stacklevel)�warnings�warnr �rr�/usr/lib64/python3.6/GLib.py� threads_init5srcCs2t|jt�rtj|j�}n|j}||jf||fkS)N)� isinstance�domain�strrZquark_from_string�code)�selfrrZself_domain_quarkrrr�gerror_matches;s rcCstj|�}t|||�S)N)rZquark_to_stringr)r�messagerZ domain_quarkrrr�gerror_new_literalEs r!�Errorr� OptionContext� OptionGroup�Pid� spawn_asyncc@sneZdZejjejjejjejjejj ejj ejj ejj ejj ejjejjejjejjejjd�Zdd�ZdS)�_VariantCreator)�b�y�n�q�i�u�x�t�h�d�s�o�g�vc Cs�tj|�}||jkr"|j||�Stjj|�}|dkr>|j�S|j�rh|j|j|j �j �|��|j�Sy t |�Wn$t k r�t d||f��YnX|j �r�|j�t|�kr�t d||f��|j�r�t|�dkr�t d||f��|j��r4|j �j �}t|t��r|j�}xl|D]}|j|j||���qWnJ|dd�}x<|D]4}t|�j �}|j|j||��|t|�d�}�qFW|j�S)aBCreate a GVariant object from given format and a value that matches the format. This method recursively calls itself for complex structures (arrays, dictionaries, boxed). Returns the generated GVariant. If value is None it will generate an empty GVariant container type. NzOCould not create array, tuple or dictionary entry from non iterable value %s %sz1Tuple mismatches value's number of elements %s %srz/Dictionary entries must have two elements %s %s�)r� VariantType�_LEAF_CONSTRUCTORSZVariantBuilder�new�endZis_maybeZ add_value�_create�elementZ dup_string�iter� TypeErrorZis_tupleZn_items�lenZ is_dict_entryZis_arrayr�dict�itemsr) r�format�valueZgvtypeZbuilderZ element_typer,Zremainer_format�duprrrr;is<           z_VariantCreator._createN)�__name__� __module__� __qualname__r�VariantZ new_booleanZnew_byteZ new_int16Z new_uint16Z new_int32Z new_uint32Z new_int64Z new_uint64Z new_handleZ new_doubleZ new_stringZnew_object_pathZ new_signatureZ new_variantr8r;rrrrr'Vs r'c@s�eZdZdd�Zedd��Zdd�Zdd�Zd d �Zd d �Z d d�Z dd�Z dd�Z e dd��Zdd�Zdd�Zdd�Zdd�Zdd�ZdS) rHcCs2tjj|�std|��t�}|j||�}||_|S)a�Create a GVariant from a native Python object. format_string is a standard GVariant type signature, value is a Python object whose structure has to match the signature. Examples: GLib.Variant('i', 1) GLib.Variant('(is)', (1, 'hello')) GLib.Variant('(asa{sv})', ([], {'foo': GLib.Variant('b', True), 'bar': GLib.Variant('i', 2)})) z#Invalid GVariant format string '%s')rr7Zstring_is_validr>r'r;� format_string)�clsrIrCZcreatorr5rrr�__new__�s   zVariant.__new__cGs tjj|�S)N)rrH� new_tuple)�elementsrrrrL�szVariant.new_tuplec Cs&y |j�Wntk r YnXdS)N)�unref� ImportError)rrrr�__del__�s zVariant.__del__cCs |jd�S)NT)�print_)rrrr�__str__�szVariant.__str__cCs,t|d�r|j}n|j�}d||jd�fS)NrIzGLib.Variant('%s', %s)F)�hasattrrI�get_type_stringrQ)r�frrr�__repr__�s zVariant.__repr__c Cs$y |j|�Stk rdSXdS)NF)�equalr>)r�otherrrr�__eq__�s zVariant.__eq__c Cs&y |j|� Stk r dSXdS)NT)rWr>)rrXrrr�__ne__�s zVariant.__ne__cCst|j�|j�f�S)N)�hashrT�unpack)rrrr�__hash__�szVariant.__hash__csX�j�j�j�j�j�j�j�j�j�j �j �j �j d� }|j �j ��}|rR|�S�j �j d�r��fdd�t�j��D�}t|�S�j �j d�r�i}x:t�j��D]*}�j|�}|jd�j�||jd�j�<q�W|S�j �j d�r��fd d�t�j��D�S�j �j d ��r�j�j�S�j �j d ��rD�j��s6d S�jd�j�Std �j ���d S)z1Decompose a GVariant into a native Python object.) r(r)r*r+r,r-r.r/r0r1r2r3r4�(csg|]}�j|�j��qSr)�get_child_valuer\)�.0r,)rrr� �sz"Variant.unpack..za{r6r�acsg|]}�j|�j��qSr)r_r\)r`r,)rrrrasr5�mNzunsupported GVariant type )� get_booleanZget_byteZ get_int16Z get_uint16Z get_int32Z get_uint32Z get_int64Z get_uint64Z get_handleZ get_double� get_string�getrT� startswith�range� n_children�tupler_r\Z get_variant�NotImplementedError)rZLEAF_ACCESSORSZla�resr,r5r)rrr\�sH       zVariant.unpackc Cs�|dkr gS|jd�s|gSg}d}|dd �}x�|r�|d}||7}|dd�}|d kr\q2|dkr�d}|}|dkrzd }nd }xJ|dkr�|d}||7}|dd�}||kr�|d7}q�||kr�|d8}q�W|j|�d}q2W|S)a[Return a list of the element signatures of the topmost signature tuple. If the signature is not a tuple, it returns one element with the entire signature. If the signature is an empty tuple, the result is []. This is useful for e. g. iterating over method parameters which are passed as a single Variant. z()r^�r6rNrcrb�{�)�}�����)rcrb)r^rn)rg�append) �klassZ signature�result�head�tail�c�levelZupZdownrrr�split_signatures<         zVariant.split_signaturecCsP|j�dkrt|j��S|j�jd�s4|j�jd�r<|j�Std|j���dS)Nr2r3r4rbr^z'GVariant type %s does not have a length)r2r3r4)rTr?rergrir>)rrrr�__len__Is   zVariant.__len__c Cs&|j�jd�r�y(|j|td��}|dkr0t|��|j�Stk r�x>t|j��D].}|j |�}|j d�j�|krT|j d�j�SqTWt|��YnX|j�jd�s�|j�jd�r�t |�}|dkr�|j�|}|dks�||j�kr�t d��|j |�j�S|j�d k�r|j �j |�Std |j���dS) Nza{�*rr6rbr^zlist index out of ranger2r3r4z#GVariant type %s is not a container)r2r3r4)rTrgZ lookup_valuer�KeyErrorr\r>rhrir_�int� IndexErrorre� __getitem__)r�key�valr,r5rrrrQs,  zVariant.__getitem__cCs|j�S)N)�__bool__)rrrr� __nonzero__vszVariant.__nonzero__c Cs�|j�dkr|j�d kS|j�dkr,|j�S|j�dkrHt|j��d kS|j�jd�sd|j�jd�rp|j�d kS|j�dkr�t|j��SdS)Nr)r*r+r,r-r.r/r0r1rr(r2r3r4rbr^r5T) r)r*r+r,r-r.r/r0r1)r()r2r3r4)r5)rTr\rdr?rergri�bool)rrrrr�ys       zVariant.__bool__cCsZ|j�jd�std|j�fSg}x2t|j��D]"}|j|�}|j|jd�j��q0W|S)Nza{z$GVariant type %s is not a dictionaryr)rTrgr>rhrir_rrr\)rrlr,r5rrr�keys�s z Variant.keysN)rErFrGrK� staticmethodrLrPrRrVrYrZr]r\� classmethodryrzrr�r�r�rrrrrH�s  7 6%rHcCstjj|�\}}|S)N)rrHre)rrC�lengthrrrre�srer6cCs,t|t�rtj|jd�|�Stj||�SdS)NzUTF-8)r�bytesr�markup_escape_text�decode)�textr�rrrr��s r��DESKTOP� DOCUMENTS�DOWNLOAD�MUSIC�PICTURES� PUBLIC_SHARE� TEMPLATES�VIDEOSZUSER_DIRECTORY_zGLib.UserDirectory.DIRECTORY_Z DIRECTORY_�ERR�HUP�IN�NVAL�OUT�PRIZIO_�APPEND�GET_MASK� IS_READABLE� IS_SEEKABLE�MASK�NONBLOCK�SET_MASKZIO_FLAG_z GLib.IOFlags.�IO_FLAG_IS_WRITEABLEzGLib.IOFlags.IS_WRITABLE�AGAIN�EOF�ERROR�NORMALZ IO_STATUS_zGLib.IOStatus.�CHILD_INHERITS_STDIN�DO_NOT_REAP_CHILD�FILE_AND_ARGV_ZERO�LEAVE_DESCRIPTORS_OPEN� SEARCH_PATH�STDERR_TO_DEV_NULL�STDOUT_TO_DEV_NULLZSPAWN_zGLib.SpawnFlags.�HIDDEN�IN_MAIN�REVERSE�NO_ARG�FILENAME� OPTIONAL_ARG�NOALIASZ OPTION_FLAG_zGLib.OptionFlags.�UNKNOWN_OPTION� BAD_VALUE�FAILEDZ OPTION_ERROR_zGLib.OptionError.� G_MINFLOAT� G_MAXFLOAT� G_MINDOUBLE� G_MAXDOUBLE� G_MINSHORT� G_MAXSHORT� G_MAXUSHORT�G_MININT�G_MAXINT� G_MAXUINT� G_MINLONG� G_MAXLONG� G_MAXULONG� G_MAXSIZE� G_MINSSIZE� G_MAXSSIZE� G_MINOFFSET� G_MAXOFFSET�_cs0eZdZddd�Zd dd�Z�fdd�Z�ZS) �MainLoopNcCstjj|d�S)NF)rr�r9)rJ�contextrrrrK�szMainLoop.__new__cCsdS)Nr)rr�rrr�__init__�szMainLoop.__init__cs:t|j��&t��tt|�j�WdQRXWdQRXdS)N)r�quitr�superr��run)r)� __class__rrr��s z MainLoop.run)N)N)rErFrGrKr�r�� __classcell__rr)r�rr��s  r�cseZdZd�fdd� Z�ZS)� MainContextTcstt|�j|�S)N)r�r�� iteration)rZ may_block)r�rrr��szMainContext.iteration)T)rErFrGr�r�rr)r�rr��sr�cs�eZdZdd�Z�fdd�Zdd�Zd�fdd � Zd d �Zeed �Zd d�Z dd�Z e e e �Z dd�Z dd�Ze e e�Z�ZS)�SourcecOst�}||_t|dd�|S)N�__pygi_custom_sourceT)rr��setattr)rJ�args�kwargs�sourcerrrrKs zSource.__new__cstt|�j�S)N)r�r�r�)rr�r�)r�rrr� szSource.__init__cCst|d�r|j�dS)Nr�)rSrN)rrrrrPs zSource.__del__Ncs.t|d�rt|||�ntt|�j||�dS)Nr�)rSrr�r�� set_callback)r�fn� user_data)r�rrr�s zSource.set_callbackcCs tj�dS)Ng�����ư>)r� get_real_time)rrrr�get_current_timeszSource.get_current_timez.GLib.Source.get_time() or GLib.get_real_time()cCs|j�S)N)Z get_priority)rrrrZ__get_priority$szSource.__get_prioritycCs|j|�dS)N)� set_priority)rrCrrrZ__set_priority'szSource.__set_prioritycCs|j�S)N)Zget_can_recurse)rrrrZ__get_can_recurse,szSource.__get_can_recursecCs|j|�dS)N)Zset_can_recurse)rrCrrrZ__set_can_recurse/szSource.__set_can_recurse)N)rErFrGrKr�rPr�r�r Z_Source__get_priorityZ_Source__set_priority�property�priorityZ_Source__get_can_recurseZ_Source__set_can_recurseZ can_recurser�rr)r�rr�s   r�cs0eZdZejfdd�Zejf�fdd� Z�ZS)�IdlecCstj�}||_|S)N)rZidle_source_newr�)rJr�r�rrrrK:sz Idle.__new__cs&tt|�j�|tjkr"|j|�dS)N)r�r�r�r�PRIORITY_DEFAULTr�)rr�)r�rrr�?s z Idle.__init__)rErFrGrr�rKr�r�rr)r�rr�9sr�c@s,eZdZdejfdd�Zdejfdd�ZdS)�TimeoutrcCstj|�}||_|S)N)rZtimeout_source_newr�)rJ�intervalr�r�rrrrKIs zTimeout.__new__cCs|tjkr|j|�dS)N)rr�r�)rr�r�rrrr�Ns zTimeout.__init__N)rErFrGrr�rKr�rrrrr�Hsr�cOs |jdtj�}tj||f|��S)Nr�)rfrZPRIORITY_DEFAULT_IDLE�idle_add)�functionr�r�r�rrrr�Wsr�cOs"|jdtj�}tj|||f|��S)Nr�)rfrr�� timeout_add)r�r�r�r�r�rrrr�_sr�cOs"|jdtj�}tj|||f|��S)Nr�)rfrr��timeout_add_seconds)r�r�r�r�r�rrrr�gsr�cs:t|t� st|tj�rftjdt�|}|�|}t��s@td��d|kr^tjdt�|d}q�tj }n6t |�dks�t|d� r�td��|d�|dd�}t�t�r‡�fdd �}tj j ��}njt�t j �r�tjd kr���fd d �}tj j�j��}n4t�d ��r$��fd d �}tj j �j��}n�}�}|||||fS)NzFCalling io_add_watch without priority as second argument is deprecatedzthird argument must be callabler�zgCalling io_add_watch with priority keyword argument is deprecated, put it as second positional argumentr6rz%expecting callback as fourth argumentcs��|f|��S)Nr)r��cond�data)�callback�channelrr��sz(_io_add_watch_get_args..Zwin32cs��|f|��S)Nr)r�r�r�)r�r�rrr��s�filenocs��|f|��S)Nr)r�r�r�)r�r�rrr��s)rr}r� IOConditionrrr �callabler>r�r?� IOChannel�unix_new�socket�sys�platformZwin32_new_socketr�rS)r�Z priority_� conditionZcb_and_user_datar�r�Zfunc_fdtransformZ real_channelr)r�r�r�_io_add_watch_get_args{s:    r�cOs*t||�\}}}}}tj||||f|��S)zOio_add_watch(channel, priority, condition, func, *user_data) -> event_source_id)r�r� io_add_watch)r�r�r�r�r��funcr�rrrr��sr�cs�eZdZddd�Z�fdd�Zddd�Zd d d �Zd"d d �Zd$d d�Zdd�Z e j j e j j e j jd�Zd%dd�Zdd�Zeed�Zdd�Zdd�ZeZ�ZS)&r�NcCsN|dk rtjj|�S|dk r.tjj||p*d�S|dk rBtjj|�Std��dS)N�rzLeither a valid file descriptor, file name, or window handle must be supplied)rr�r�Znew_fileZ win32_new_fdr>)rJZfiledes�filename�modeZhwndrrrrK�s  zIOChannel.__new__cstt|�j�S)N)r�r�r�)rr�r�)r�rrr��szIOChannel.__init__r6cCs t||�S)N)r )rZ max_countrrr�read�szIOChannel.readcCs |j�\}}}}|dkrdS|S)Nrm)� read_line)r� size_hint�status�bufr��terminator_posrrr�readline�szIOChannel.readlinecCsHg}tjj}x6|tjjkrB|j�\}}}}|dkr6d}|j|�qW|S)Nrm)r�IOStatusr�rrr)rr�linesrrr�rrrr� readlines�szIOChannel.readlinescCs8t|t�s|jd�}|dkr$t|�}|j||�\}}|S)NzUTF-8r6rq)rr��encoder?Z write_chars)rrZbuflenrZwrittenrrr�write�s   zIOChannel.writecCsx|D]}|j|�qWdS)N)r )rr�linerrr� writelines�s zIOChannel.writelines)rr6rrc Cs8y|j|}Wntk r*td��YnX|j||�S)Nzinvalid 'whence' value)� _whence_mapr|� ValueErrorZ seek_position)r�offset�whence�wrrr�seek�s zIOChannel.seekcOs"|jdtj�}t||||f|��S)Nr�)rfrr�r�)rr�r�r�r�r�rrr� add_watch�szIOChannel.add_watchzGLib.io_add_watch()cCs|S)Nr)rrrr�__iter__�szIOChannel.__iter__cCs(|j�\}}}}|tjjkr |St�dS)N)rrrr�� StopIteration)rrrr�rrrr�__next__�s zIOChannel.__next__)NNNNrq)rqrq)rqrq)rqrq)rq)r)rErFrGrKr�r�rrr r rZSeekTypeZSETZCURZENDr rrr rr�nextr�rr)r�rr��s       r�c@seZdZdd�Zdd�ZdS)�PollFDcCstj�}||_|S)N)rrr�)rJ�fd�eventsZpollfdrrrrKszPollFD.__new__cCs||_||_dS)N)rr)rrrrrrr� szPollFD.__init__N)rErFrGrKr�rrrrrsrcOsg}t|�r�tjdt�|}|}t|�dkr<|jdtj�}q�t|�dkr\|}|jdtj�}q�t|�dkr||dg}|d}q�td��nT|}|}d|kr�|d}|}n6t|�dkr�t|d�r�|d}|dd�}ntd��d |kr�|r�td ��|d g}||||fS) NzHCalling child_watch_add without priority as first argument is deprecatedrr�r6rz'expected at most 4 positional argumentsr�z#expected callback as third argumentr�z'got multiple values for "data" argument) r�rrr r?rfrr�r>)Zpriority_or_pidZpid_or_callbackr�r�r��pidr�r�rrr�_child_watch_add_get_argss:       rcOs&t||�\}}}}tj|||f|��S)z/child_watch_add(priority, pid, function, *data))rr�child_watch_add)r�r�r�rr�r�rrrrDsrcCs tj�dS)Ng�����ư>)rr�rrrrr�Msr�zGLib.get_real_time()cCstj||�dS)Nr)r�filename_from_utf8)Z utf8stringr?rrrrXsr�unix_signal_add_fullcGstjdt�tj|�S)NzAGLib.unix_signal_add_full() was renamed to GLib.unix_signal_add())rrr rZunix_signal_add)r�rrr�add_full_compatasr � glib_versionz<(GLib.MAJOR_VERSION, GLib.MINOR_VERSION, GLib.MICRO_VERSION)�pyglib_versionzgi.version_inforq)rq)r�r�r�r�r�r�r�r�)r�r�r�r�r�r�)r�r�r�r�r�r�r�)r�r�r�r�)r�r�r�r�r�r�r�)r�r�r�r�r�r�r�)r�r�r�)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rqrq)rq)Vrr�r�Z _ossighelperrr�modulerrrrrr Z overridesr r r Zgir rr�__all__rrrrZ gi._errorrr"r#r$r%r&rrr!rErFZ __gtype__Zmatchesr�Z new_literal�objectr'rHrer�r�r*�attr�getattrZ UserDirectory�globalsr�ZIOFlagsZ IS_WRITABLEr�rZ SpawnFlagsZ OptionFlagsZ OptionError�name�splitr�r�r�r�r�r�r�r�r�r�r�rrrr�rrSr rZ MAJOR_VERSIONZ MINOR_VERSIONZ MICRO_VERSIONr!r"rrrr�s           Fy           2      +  N   '