3 <_u@sddlZddlZddlZddlmZmZddlmZddlm Z m Z m Z m Z ddl mZmZmZddlmZmZedZgZdd lmZeejd dd lmZdd lmZeZejZejZejZejZd dZ ddZ!ddZ"de_#de_$ejj%e_%e!e_&e'e"e_(edddddddg7ZGddde)Z*Gdddej+Z+ddZ,e-e+de,ejddd d!Z.ejd!xFdD]>Z/d*e/Z0ede0d+e/e1ej2d,e/e3e0<eje0qxWx2dD]*Z/e1ej4e/e3d3e/<ejd3e/qWxBdD]:Z/d;e/Z0ede0dejd=xBdD]:Z/dCe/Z0e1ej8e/e3e0<ede0dDe/eje0qVWxBdD]:Z/dLe/Z0e1ej9e/e3e0<ede0dMe/eje0qWxBdD]:Z/dUe/Z0e1ej:e/e3e0<ede0dVe/eje0qWxBdD]:Z/dZe/Z0ede0d[e/e1ej;e/e3e0<eje0q"Wx8dD]0ZZ>ee>Z>ejdpGdqdrdrej?Z?ee?Z?ejdrGdsdtdtej@Z@ee@Z@ejdtGdudvdve@ZAejdvGdwdxdxe@ZBejdxdydzZCejdzd{d|ZDejd|d}d~ZEejd~ddZFejdddZGejdGdddejHZHeeHZHejdGdddejIZIeeIZIejdddZJejdddZKejdddZLeeLdZLejddddZMejdeNedsJddZOeOe_PejQejRejSfZTejdedddeZUejdeddddS)N)wakeup_on_signalregister_sigint_fallback)get_introspection_module)variant_type_from_string source_newsource_set_callbackio_channel_read)override deprecateddeprecated_attr)PyGIDeprecationWarning version_infoGLib)_optionoption)_gi)GErrorcCstjdtdddS)NzmSince version 3.11, calling threads_init is no longer needed. See: https://wiki.gnome.org/PyGObject/Threadingr) stacklevel)warningswarnr rr/usr/lib64/python3.6/GLib.py threads_init5srcCs2t|jtrtj|j}n|j}||jf||fkS)N) isinstancedomainstrrZquark_from_stringcode)selfrrZself_domain_quarkrrrgerror_matches;s rcCstj|}t|||S)N)rZquark_to_stringr)rmessagerZ domain_quarkrrrgerror_new_literalEs r!Errorr OptionContext OptionGroupPid spawn_asyncc@sneZdZejjejjejjejjejj ejj ejj ejj ejj ejjejjejjejjejjdZddZdS)_VariantCreator)bynqiuxthdsogvc Cstj|}||jkr"|j||Stjj|}|dkr>|jS|jrh|j|j|j j ||jSy t |Wn$t k rt d||fYnX|j r|jt|krt d||f|jrt|dkrt d||f|jr4|j j }t|tr|j}xl|D]}|j|j||qWnJ|dd}x<|D]4}t|j }|j|j|||t|d}qFW|jS)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_CONSTRUCTORSZVariantBuildernewendZis_maybeZ add_value_createelementZ dup_stringiter TypeErrorZis_tupleZn_itemslenZ is_dict_entryZis_arrayrdictitemsr) rformatvalueZgvtypeZbuilderZ element_typer,Zremainer_formatduprrrr;is<           z_VariantCreator._createN)__name__ __module__ __qualname__rVariantZ 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@seZdZddZeddZddZddZd d Zd d Z d dZ ddZ ddZ e ddZddZddZddZddZddZdS) rHcCs2tjj|std|t}|j||}||_|S)aCreate 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)elementsrrrrLszVariant.new_tuplec Cs&y |jWntk r YnXdS)N)unref ImportError)rrrr__del__s zVariant.__del__cCs |jdS)NT)print_)rrrr__str__szVariant.__str__cCs,t|dr|j}n|j}d||jdfS)NrIzGLib.Variant('%s', %s)F)hasattrrIget_type_stringrQ)rfrrr__repr__s zVariant.__repr__c Cs$y |j|Stk rdSXdS)NF)equalr>)rotherrrr__eq__s zVariant.__eq__c Cs&y |j| Stk r dSXdS)NT)rWr>)rrXrrr__ne__s zVariant.__ne__cCst|j|jfS)N)hashrTunpack)rrrr__hash__szVariant.__hash__csXjjjjjjjjjj j j j d }|j j }|rR|Sj j drfddtjD}t|Sj j dri}x:tjD]*}j|}|jdj||jdj<qW|Sj j drfd dtjDSj j d rjjSj j d rDjs6d SjdjStd j d S)z1Decompose a GVariant into a native Python object.) r(r)r*r+r,r-r.r/r0r1r2r3r4(csg|]}j|jqSr)get_child_valuer\).0r,)rrr sz"Variant.unpack..za{r6racsg|]}j|jqSr)r_r\)r`r,)rrrrasr5mNzunsupported GVariant type ) get_booleanZget_byteZ get_int16Z get_uint16Z get_int32Z get_uint32Z get_int64Z get_uint64Z get_handleZ get_double get_stringgetrT startswithrange n_childrentupler_r\Z get_variantNotImplementedError)rZLEAF_ACCESSORSZlaresr,r5r)rrr\sH       zVariant.unpackc Cs|dkr gS|jds|gSg}d}|dd }x|r|d}||7}|dd}|d kr\q2|dkrd}|}|dkrzd }nd }xJ|dkr|d}||7}|dd}||kr|d7}q||kr|d8}qW|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)rgappend) klassZ signatureresultheadtailclevelZupZdownrrrsplit_signatures<         zVariant.split_signaturecCsP|jdkrt|jS|jjds4|jjdr<|jStd|jdS)Nr2r3r4rbr^z'GVariant type %s does not have a length)r2r3r4)rTr?rergrir>)rrrr__len__Is   zVariant.__len__c Cs&|jjdry(|j|td}|dkr0t||jStk rx>t|jD].}|j |}|j dj|krT|j djSqTWt|YnX|jjds|jjdrt |}|dkr|j|}|dks||jkrt d|j |jS|jd kr|j j |Std |jdS) Nza{*rr6rbr^zlist index out of ranger2r3r4z#GVariant type %s is not a container)r2r3r4)rTrgZ lookup_valuerKeyErrorr\r>rhrir_int IndexErrorre __getitem__)rkeyvalr,r5rrrrQs,  zVariant.__getitem__cCs|jS)N)__bool__)rrrr __nonzero__vszVariant.__nonzero__c Cs|jdkr|jd kS|jdkr,|jS|jdkrHt|jd kS|jjdsd|jjdrp|jd kS|jdkrt|jSdS)Nr)r*r+r,r-r.r/r0r1rr(r2r3r4rbr^r5T) r)r*r+r,r-r.r/r0r1)r()r2r3r4)r5)rTr\rdr?rergribool)rrrrrys       zVariant.__bool__cCsZ|jjdstd|jfSg}x2t|jD]"}|j|}|j|jdjq0W|S)Nza{z$GVariant type %s is not a dictionaryr)rTrgr>rhrir_rrr\)rrlr,r5rrrkeyss z Variant.keysN)rErFrGrK staticmethodrLrPrRrVrYrZr]r\ classmethodryrzrrrrrrrrrHs  7 6%rHcCstjj|\}}|S)N)rrHre)rrClengthrrrresrer6cCs,t|trtj|jd|Stj||SdS)NzUTF-8)rbytesrmarkup_escape_textdecode)textrrrrrs rDESKTOP DOCUMENTSDOWNLOADMUSICPICTURES PUBLIC_SHARE TEMPLATESVIDEOSZUSER_DIRECTORY_zGLib.UserDirectory.DIRECTORY_Z DIRECTORY_ERRHUPINNVALOUTPRIZIO_APPENDGET_MASK IS_READABLE IS_SEEKABLEMASKNONBLOCKSET_MASKZIO_FLAG_z GLib.IOFlags.IO_FLAG_IS_WRITEABLEzGLib.IOFlags.IS_WRITABLEAGAINEOFERRORNORMALZ IO_STATUS_zGLib.IOStatus.CHILD_INHERITS_STDINDO_NOT_REAP_CHILDFILE_AND_ARGV_ZEROLEAVE_DESCRIPTORS_OPEN SEARCH_PATHSTDERR_TO_DEV_NULLSTDOUT_TO_DEV_NULLZSPAWN_zGLib.SpawnFlags.HIDDENIN_MAINREVERSENO_ARGFILENAME OPTIONAL_ARGNOALIASZ OPTION_FLAG_zGLib.OptionFlags.UNKNOWN_OPTION BAD_VALUEFAILEDZ OPTION_ERROR_zGLib.OptionError. G_MINFLOAT G_MAXFLOAT G_MINDOUBLE G_MAXDOUBLE G_MINSHORT G_MAXSHORT G_MAXUSHORTG_MININTG_MAXINT G_MAXUINT G_MINLONG G_MAXLONG G_MAXULONG G_MAXSIZE G_MINSSIZE G_MAXSSIZE G_MINOFFSET G_MAXOFFSET_cs0eZdZdddZd ddZfddZZS) MainLoopNcCstjj|dS)NF)rrr9)rJcontextrrrrKszMainLoop.__new__cCsdS)Nr)rrrrr__init__szMainLoop.__init__cs:t|j&ttt|jWdQRXWdQRXdS)N)rquitrsuperrrun)r) __class__rrrs z MainLoop.run)N)N)rErFrGrKrr __classcell__rr)rrrs  rcseZdZdfdd ZZS) MainContextTcstt|j|S)N)rr iteration)rZ may_block)rrrrszMainContext.iteration)T)rErFrGrrrr)rrrsrcseZdZddZfddZddZdfdd Zd d Zeed Zd dZ ddZ e e e Z ddZ ddZe e eZZS)SourcecOst}||_t|dd|S)N__pygi_custom_sourceT)rrsetattr)rJargskwargssourcerrrrKs zSource.__new__cstt|jS)N)rrr)rrr)rrrr szSource.__init__cCst|dr|jdS)Nr)rSrN)rrrrrPs zSource.__del__Ncs.t|drt|||ntt|j||dS)Nr)rSrrr set_callback)rfn user_data)rrrrs zSource.set_callbackcCs tjdS)Ngư>)r get_real_time)rrrrget_current_timeszSource.get_current_timez.GLib.Source.get_time() or GLib.get_real_time()cCs|jS)N)Z get_priority)rrrrZ__get_priority$szSource.__get_prioritycCs|j|dS)N) set_priority)rrCrrrZ__set_priority'szSource.__set_prioritycCs|jS)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)rErFrGrKrrPrrr Z_Source__get_priorityZ_Source__set_prioritypropertypriorityZ_Source__get_can_recurseZ_Source__set_can_recurseZ can_recurserrr)rrrs   rcs0eZdZejfddZejffdd ZZS)IdlecCstj}||_|S)N)rZidle_source_newr)rJrrrrrrK:sz Idle.__new__cs&tt|j|tjkr"|j|dS)N)rrrrPRIORITY_DEFAULTr)rr)rrrr?s z Idle.__init__)rErFrGrrrKrrrr)rrr9src@s,eZdZdejfddZdejfddZdS)TimeoutrcCstj|}||_|S)N)rZtimeout_source_newr)rJintervalrrrrrrKIs zTimeout.__new__cCs|tjkr|j|dS)N)rrr)rrrrrrrNs zTimeout.__init__N)rErFrGrrrKrrrrrrHsrcOs |jdtj}tj||f|S)Nr)rfrZPRIORITY_DEFAULT_IDLEidle_add)functionrrrrrrrWsrcOs"|jdtj}tj|||f|S)Nr)rfrr timeout_add)rrrrrrrrr_srcOs"|jdtj}tj|||f|S)Nr)rfrrtimeout_add_seconds)rrrrrrrrrgsrcs:t|t st|tjrftjdt|}||}ts@tdd|kr^tjdt|d}qtj }n6t |dkst|d rtd|d|dd}ttr‡fdd }tj j }njtt j rtjd krfd d }tj jj}n4td r$fd d }tj j j}n}}|||||fS)NzFCalling io_add_watch without priority as second argument is deprecatedzthird argument must be callablerzgCalling io_add_watch with priority keyword argument is deprecated, put it as second positional argumentr6rz%expecting callback as fourth argumentcs|f|S)Nr)rconddata)callbackchannelrrsz(_io_add_watch_get_args..Zwin32cs|f|S)Nr)rrr)rrrrrsfilenocs|f|S)Nr)rrr)rrrrrs)rr}r IOConditionrrr callabler>rr? IOChannelunix_newsocketsysplatformZwin32_new_socketrrS)rZ priority_ conditionZcb_and_user_datarrZfunc_fdtransformZ real_channelr)rrr_io_add_watch_get_args{s:    rcOs*t||\}}}}}tj||||f|S)zOio_add_watch(channel, priority, condition, func, *user_data) -> event_source_id)rr io_add_watch)rrrrrfuncrrrrrsrcseZdZdddZfddZdddZd d d Zd"d d Zd$d dZddZ e j j e j j e j jdZd%ddZddZeedZddZddZeZZS)&rNcCsN|dk rtjj|S|dk r.tjj||p*dS|dk rBtjj|StddS)NrzLeither a valid file descriptor, file name, or window handle must be supplied)rrrZnew_fileZ win32_new_fdr>)rJZfiledesfilenamemodeZhwndrrrrKs  zIOChannel.__new__cstt|jS)N)rrr)rrr)rrrrszIOChannel.__init__r6cCs t||S)N)r )rZ max_countrrrreadszIOChannel.readcCs |j\}}}}|dkrdS|S)Nrm) read_line)r size_hintstatusbufrterminator_posrrrreadlineszIOChannel.readlinecCsHg}tjj}x6|tjjkrB|j\}}}}|dkr6d}|j|qW|S)Nrm)rIOStatusrrrr)rrlinesrrrrrrr readlinesszIOChannel.readlinescCs8t|ts|jd}|dkr$t|}|j||\}}|S)NzUTF-8r6rq)rrencoder?Z write_chars)rrZbuflenrZwrittenrrrwrites   zIOChannel.writecCsx|D]}|j|qWdS)N)r )rrlinerrr writeliness zIOChannel.writelines)rr6rrc Cs8y|j|}Wntk r*tdYnX|j||S)Nzinvalid 'whence' value) _whence_mapr| ValueErrorZ seek_position)roffsetwhencewrrrseeks zIOChannel.seekcOs"|jdtj}t||||f|S)Nr)rfrrr)rrrrrrrrr add_watchszIOChannel.add_watchzGLib.io_add_watch()cCs|S)Nr)rrrr__iter__szIOChannel.__iter__cCs(|j\}}}}|tjjkr |StdS)N)rrrr StopIteration)rrrrrrrr__next__s zIOChannel.__next__)NNNNrq)rqrq)rqrq)rqrq)rq)r)rErFrGrKrrrrr r rZSeekTypeZSETZCURZENDr rrr rrnextrrr)rrrs       rc@seZdZddZddZdS)PollFDcCstj}||_|S)N)rrr)rJfdeventsZpollfdrrrrKszPollFD.__new__cCs||_||_dS)N)rr)rrrrrrr szPollFD.__init__N)rErFrGrKrrrrrrsrcOsg}t|rtjdt|}|}t|dkr<|jdtj}qt|dkr\|}|jdtj}qt|dkr||dg}|d}qtdnT|}|}d|kr|d}|}n6t|dkrt|dr|d}|dd}ntdd |kr|rtd |d g}||||fS) NzHCalling child_watch_add without priority as first argument is deprecatedrrr6rz'expected at most 4 positional argumentsrz#expected callback as third argumentrz'got multiple values for "data" argument) rrrr r?rfrrr>)Zpriority_or_pidZpid_or_callbackrrrpidrrrrr_child_watch_add_get_argss:       rcOs&t||\}}}}tj|||f|S)z/child_watch_add(priority, pid, function, *data))rrchild_watch_add)rrrrrrrrrrDsrcCs tjdS)Ngư>)rrrrrrrMsrzGLib.get_real_time()cCstj||dS)Nr)rfilename_from_utf8)Z utf8stringr?rrrrXsrunix_signal_add_fullcGstjdttj|S)NzAGLib.unix_signal_add_full() was renamed to GLib.unix_signal_add())rrr rZunix_signal_add)rrrradd_full_compatasr  glib_versionz<(GLib.MAJOR_VERSION, GLib.MINOR_VERSION, GLib.MICRO_VERSION)pyglib_versionzgi.version_inforq)rq)rrrrrrrr)rrrrrr)rrrrrrr)rrrr)rrrrrrr)rrrrrrr)rrr)rrrrrrrrrrrrrrrrrrrqrq)rq)VrrrZ _ossighelperrrmodulerrrrrr Z overridesr r r Zgir rr__all__rrrrZ gi._errorrr"r#r$r%r&rrr!rErFZ __gtype__ZmatchesrZ new_literalobjectr'rHrerrr*attrgetattrZ UserDirectoryglobalsrZIOFlagsZ IS_WRITABLErrZ SpawnFlagsZ OptionFlagsZ OptionErrornamesplitrrrrrrrrrrrrrrrrrSr rZ MAJOR_VERSIONZ MINOR_VERSIONZ MICRO_VERSIONr!r"rrrrs           Fy           2      +  N   '