o f_t@sddlZddlZddlZddlmZmZddlmZddlm Z m Z m Z m Z ddl mZmZmZddlmZmZedZgZdd lmZeed dd lmZdd lmZeZejZejZejZejZd dZ ddZ!ddZ"de_#de_$ejj%e_%e!e_&e'e"e_(egd7ZGddde)Z*ddddddddd d!d"d"d"d# Z+Gd$d%d%ej,Z,d&d"Z-e.e,d"e-ed%dld(d)Z/ed)d*D]Z0d+e0Z1ede1d,e0e2ej3d-e0e4e1<ee1qd.D]Z0e2ej5e0e4d/e0<ed/e0qd0D]Z0d1e0Z1ede1d2e0e2ej6e0e4e1<ee1qej6j7Z8edd3d4ed3d5D]Z0d6e0Z1e2ej9e0e4e1<ede1d7e0ee1q,d8D]Z0d9e0Z1e2ej:e0e4e1<ede1d:e0ee1qLd;D]Z0dD]Z0d?e0Z1ede1d@e0e2ejdBdCd'Z1e2ee=e4e1<ee1qGdDdEdEej?Z?ee?Z?edEGdFdGdGej@Z@ee@Z@edGGdHdIdIejAZAeeAZAedIGdJdKdKeAZBedKGdLdMdMeAZCedMdNdOZDedOdPdQZEedQdRdSZFedSdTdUZGedUdVdWZHedWGdXdYdYejIZIeeIZIedYGdZd[d[ejJZJeeJZJed[d\d]ZKed]d^d_ZLed_d`daZMeeMdbZMedadldcddZNeddeOederejPZQedfeddfdgejRejSejTfZUedheddhdieZVedjeddjdkdS)mN)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 rr3/usr/lib/python3/dist-packages/gi/overrides/GLib.py threads_init5s rcCs2t|jtr t|j}n|j}||jf||fkSN) isinstancedomainstrrquark_from_stringcode)selfrrself_domain_quarkrrrgerror_matches;s r"cCst|}t|||Sr)rquark_to_stringr)rmessager domain_quarkrrrgerror_new_literalEs  r&Errorzgi.repository.GLib)rr' OptionContext OptionGroupPid spawn_asyncrc@sneZdZejjejjejjejjejj ejj ejj ejj ejj ejjejjejjejjejjdZddZdS)_VariantCreator)bynqiuxthdsogvc Csvt|}||jvr|j||Stj|}|dur|S|r4||| ||Szt |Wnt yIt d||fw| r^|t|kr^t d||f|rpt|dkrpt d||f|r| }t|tr|}|D] }||||q|S|dd}|D]}t| }|||||t|d}q|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_CONSTRUCTORSVariantBuildernewendis_maybe add_value_createelement dup_stringiter TypeErroris_tuplen_itemslen is_dict_entryis_arrayrdictitemsr) r formatvaluegvtypebuilder element_typer1remainer_formatduprrrrCisB        z_VariantCreator._createN)__name__ __module__ __qualname__rVariant new_booleannew_byte new_int16 new_uint16 new_int32 new_uint32 new_int64 new_uint64 new_handle new_double new_stringnew_object_path new_signature new_variantr=rCrrrrr,Vs" r, get_booleanget_byte get_int16 get_uint16 get_int32 get_uint32 get_int64 get_uint64 get_handle get_double get_string) r-r.r/r0r1r2r3r4r5r6r7r8r9c@seZdZddZeddZddZddZd d Zd d Z d dZ ddZ ddZ e ddZddZddZddZddZddZdS) rYcCs2tj|s td|t}|||}||_|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')rr<string_is_validrGr,rC format_string)clsrtrPcreatorr:rrr__new__s  zVariant.__new__cGs tj|Sr)rrY new_tuple)elementsrrrrxs zVariant.new_tuplecCs$z|WdStyYdSwr)unref ImportErrorr rrr__del__s  zVariant.__del__cCs |dSNT)print_r|rrr__str__ zVariant.__str__cCs,t|dr |j}n|}d||dfS)NrtzGLib.Variant('%s', %s)F)hasattrrtget_type_stringr)r frrr__repr__s zVariant.__repr__cCs"z||WStyYdSwNFequalrGr otherrrr__eq__s   zVariant.__eq__cCs$z|| WStyYdSwr~rrrrr__ne__s  zVariant.__ne__cCst||fSr)hashrunpackr|rrr__hash__szVariant.__hash__cs}t|}|rt|S|dr%tfddtDS|drJi}tD]}|}|d ||d <q2|S|dr\fdd tDS|d rg S|d rysrd Sd St d |)z1Decompose a GVariant into a native Python object.(c3s|] }|VqdSrget_child_valuer.0r1r|rr sz!Variant.unpack..a{r;racsg|] }|qSrrrr|rr sz"Variant.unpack..r:mNzunsupported GVariant type ) rLEAF_ACCESSORSgetgetattr startswithtuplerange n_childrenrr get_variantNotImplementedError)r type_stringlaresr1r:rr|rrs2              zVariant.unpackc Cs|dkrgS|ds|gSg}d}|dd}|rn|d}||7}|dd}|dvr-q|d vred}|}|dkrr get_real_timer|rrrget_current_time zSource.get_current_timez.GLib.Source.get_time() or GLib.get_real_time()cCrr) get_priorityr|rrr__get_priority'rzSource.__get_prioritycC||dSr) set_priorityr rPrrr__set_priority*rzSource.__set_prioritycCrr)get_can_recurser|rrr__get_can_recurse/rzSource.__get_can_recursecCr9r)set_can_recurser;rrr__set_can_recurse2rzSource.__set_can_recurser)rVrWrXrwrr}r.r5r _Source__get_priority_Source__set_prioritypropertypriority_Source__get_can_recurse_Source__set_can_recurse can_recurserrrrrr#s   r#cs0eZdZejfddZejffdd ZZS)IdlecCst}||_|Sr)ridle_source_newr)rurDr(rrrrw=z Idle.__new__cs*tt||tjkr||dSdSr)rr#rrPRIORITY_DEFAULTr:)r rDrrrrBs z Idle.__init__)rVrWrXrrKrwrrrrrrrH<srHc@s,eZdZdejfddZdejfddZdS)TimeoutrcCst|}||_|Sr)rtimeout_source_newr)ruintervalrDr(rrrrwLs zTimeout.__new__cCs|tjkr ||dSdSr)rrKr:)r rNrDrrrrQs zTimeout.__init__N)rVrWrXrrKrwrrrrrrLKsrLcOs"|dtj}tj||g|RSNrD)rrPRIORITY_DEFAULT_IDLEidle_add)functionr0r'rDrrrrQZsrQcO$|dtj}tj|||g|RSrO)rrrK timeout_addrNrRr0r'rDrrrrTbrTcOrSrO)rrrKtimeout_add_secondsrUrrrrWjrVrWcsDt|tr t|tjr2tdt|}||}tstdd|vr.tdt|d}ntj }nt |dks>t|dsBtd|d|dd}ttr_fdd }tj }nz(_io_add_watch_get_args..win32crXrrrYr\rrr_r`filenocrXrrrYr\rrr_r`)rrr IOConditionrrr callablerGrKrJ IOChannelunix_newsocketsysplatformwin32_new_socketrbr)r^ priority_ conditioncb_and_user_datar'r0func_fdtransform real_channelrr\r_io_add_watch_get_args~s@    rpcOs0t|i|\}}}}}tj||||g|RS)zOio_add_watch(channel, priority, condition, func, *user_data) -> event_source_id)rpr io_add_watch)r&r'r^rDrlfuncr0rrrrqsrqcseZdZdddZfddZdddZdd d Zdd d Zdd dZddZ e j j e j j e j jdZdddZddZeedZddZddZeZZS)reNcCsJ|dur tj|S|durtj||pdS|dur!tj|Std)NrzLeither a valid file descriptor, file name, or window handle must be supplied)rrerfnew_file win32_new_fdrG)rufiledesfilenamemodehwndrrrrws  zIOChannel.__new__cr)r)rrerr*rrrrrzIOChannel.__init__rcCs t||Sr)r )r max_countrrrreadrzIOChannel.readcCs |\}}}}|durdS|SNr) read_line)r size_hintstatusbufrterminator_posrrrreadlineszIOChannel.readlinecCsNg}tjj}|tjjkr%|\}}}}|durd}|||tjjks |Sr|)rIOStatusrr}r)r r~linesrrrrrrr readliness   zIOChannel.readlinescCs8t|ts |d}|dkrt|}|||\}}|S)Nrr)rrencoderJ write_chars)r rbuflenrwrittenrrrwrites  zIOChannel.writecCs|D]}||qdSr)r)r rlinerrr writeliness zIOChannel.writelines)rr;rrcCs2z|j|}Wn tytdw|||S)Nzinvalid 'whence' value) _whence_mapr ValueError seek_position)r offsetwhencewrrrseeks   zIOChannel.seekcOs$|dtj}t||||g|RSrO)rrrKrq)r rlr]r0r'rDrrr add_watchrVzIOChannel.add_watchzGLib.io_add_watch()cCs|Srrr|rrr__iter__rzIOChannel.__iter__cCs$|\}}}}|tjjkr|Str)r}rrr StopIteration)r rrrrrrr__next__s zIOChannel.__next__)NNNNr)r)rVrWrXrwrr{rrrrrSeekTypeSETCURENDrrrr rrnextrrrrrres        rec@seZdZddZddZdS)PollFDcCst}||_|Sr)rrr)rufdeventspollfdrrrrw rJzPollFD.__new__cCs||_||_dSr)rr)r rrrrrrs zPollFD.__init__N)rVrWrXrwrrrrrrs rcOsg}t|rBtdt|}|}t|dkr|dtj}nNt|dkr.|}|dtj}n>t|dkr>|dg}|d}n.td|}|}d|vrQ|d}|}nt|dkrht|drh|d}|dd}ntdd |vr{|rvtd |d f}||||fS) NzHCalling child_watch_add without priority as first argument is deprecatedrrDr;rz'expected at most 4 positional argumentsrRz#expected callback as third argumentr[z'got multiple values for "data" argument) rdrrr rJrrrKrG)priority_or_pidpid_or_callbackr&r'r0pidr]rDrrr_child_watch_add_get_argss<       rcOs,t|i|\}}}}tj|||g|RS)z/child_watch_add(priority, pid, function, *data))rrchild_watch_add)r&r'rDrrRr[rrrrGsrcCr1r2r3rrrrr5Pr6r5zGLib.get_real_time()cCst||dS)Nr)rfilename_from_utf8) utf8stringrJrrrr[r"runix_signal_addunix_signal_add_fullzGLib.unix_signal_add glib_versionz<(GLib.MAJOR_VERSION, GLib.MINOR_VERSION, GLib.MICRO_VERSION)pyglib_versionzgi.version_infor)Wrrhrg _ossighelperrrmodulerrrrrr overridesr r r gir rr__all__rrr gi._errorrr'r(r)r*r+rr"r&rVrW __gtype__matchesr new_literalobjectr,rrYrrr%rr/attrr UserDirectoryglobalsrcIOFlags IS_WRITABLErr SpawnFlags OptionFlags OptionErrornamesplitrrr#rHrLrQrTrWrprqrerrrr5rrrr MAJOR_VERSION MINOR_VERSION MICRO_VERSIONrrrrrrs         Gg          6       + N   '