U ^.1@sddlZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z ddlmZeeeZiZGdddejZGd d d eZd d Zd dZeZddZddZeiiedfddZdddZdS)N) get_loader)PyGIDeprecationWarning) CallableInfo) TYPE_NONE TYPE_INVALID) extend_pathcs8eZdZdZfddZddZddZdd ZZS) OverridesProxyModulez7Wraps a introspection module and contains all overridescstt||j||_dSN)superr__init____name___introspection_module)selfintrospection_module __class__7/usr/lib/python3/dist-packages/gi/overrides/__init__.pyr s zOverridesProxyModule.__init__cCs t|j|Sr )getattrr )rnamerrr __getattr__sz OverridesProxyModule.__getattr__cCs6tt|j}||j|t|jt|Sr )setdirrupdate__dict__keysr sorted)rresultrrr__dir__"szOverridesProxyModule.__dir__cCsdt|j|jfS)Nz<%s %r>)typer r )rrrr__repr__(szOverridesProxyModule.__repr__) r __module__ __qualname____doc__r rrr __classcell__rrrrrs  rc@s0eZdZdZddZddZddZdd Zd S) _DeprecatedAttributezA deprecation descriptor for OverridesProxyModule subclasses. Emits a PyGIDeprecationWarning on every access and tries to act as a normal instance attribute (can be replaced and deleted). cCs$||_||_td|||f|_dS)Nz#%s.%s is deprecated; use %s instead)_attr_valuer_warning)r namespaceattrvalue replacementrrrr 3sz_DeprecatedAttribute.__init__cCs(|dkrt|jtj|jdd|jS)N stacklevel)AttributeErrorr&warningswarnr(r')rinstanceownerrrr__get__:s z_DeprecatedAttribute.__get__cCs$|j}tt||t|||dSr )r&delattrrsetattr)rr3r+r*rrr__set__@sz_DeprecatedAttribute.__set__cCstt||jdSr )r6rr&)rr3rrr __delete__Fsz_DeprecatedAttribute.__delete__N)r r!r"r#r r5r8r9rrrrr%,s r%c Cs|jddd}d|}|tjk}tj|}t|dtfi}||}|tj|<ddlm}t|dsnt |||<zLd |}z t |} Wnt k rd } YnX| d kr|WSt |} W5||=tj|=|r|tj|<X||_g} t| d r| j} | D]B} zt| | } Wn t tfk r2YqYnXt|| | qt|gD]`\}}zt||}Wn"t k rt d |YnXt||t||||}t|||qP|S) zLoads overrides for an introspection module. Either returns the same module again in case there are no overrides or a proxy module including overrides. Doesn't cache the result. .gi.repository.Z ProxyModuler-)modulesr z gi.overrides.N__all__z1%s was set deprecated but wasn't added to __all__)r rsplitsysr>getrrimporterhasattrAssertionErrorrr0 importlib import_moduleZ_overrides_moduler?r TypeErrorr7_deprecated_attrspopr6r%)rr)Z module_keyZhas_oldZ old_moduleZ proxy_typeproxyr>Zoverride_package_nameZoverride_loaderZ override_modZ override_allvaritemr*r,r+deprecated_attrrrrload_overridesKsb           rOcst|tr>|}|jddd}tjd|fdd}|St|tjrXtd|nzt |d}Wn"t k rtd |j YnX|j d st d ||jf|}|tkst|tkr||_|jddd}tjd|t|j ||Sd S) aDecorator for registering an override. Other than objects added to __all__, these can get referenced in the same override module via the gi.repository module (get_parent_for_object() does for example), so they have to be added to the module immediately. r:r;r<r=cst|j||Sr )r7r )funcmodulerrwrapperszoverride..wrapperz"func must be a gi function, got %sZ__info__zKCan not override a type %s, which is not in a gobject introspection typelibz gi.overrideszUYou have tried override outside of the overrides module. This is not allowed (%s, %s)N) isinstancerr!r@rAr>types FunctionTyperHrr0r startswithKeyErrorZ get_g_typerrErZpytyper7)Ztype_rPr)rSinfoZg_typerrQroverrides<      rZcstfdd}|S)z7Decorator for marking methods and classes as deprecatedcs$tjdjftdd||S)Nz %s is deprecated; use %s insteadr-r.)r1r2r r)argskwargsfnr,rrwrappeds zdeprecated..wrapped functoolswraps)r^r,r_rr]r deprecatedsrccCst|g||fdS)a:Marks a module level attribute as deprecated. Accessing it will emit a PyGIDeprecationWarning warning. e.g. for ``deprecated_attr("GObject", "STATUS_FOO", "GLib.Status.FOO")`` accessing GObject.STATUS_FOO will emit: "GObject.STATUS_FOO is deprecated; use GLib.Status.FOO instead" :param str namespace: The namespace of the override this is called in. :param str namespace: The attribute name (which gets added to __all__). :param str replacement: The replacement text which will be included in the warning. N)rI setdefaultappend)r)r*r,rrrrNsrNr-csfdd}|S)aWrapper for deprecating GObject based __init__ methods which specify defaults already available or non-standard defaults. :param callable super_init_func: Initializer to wrap. :param list arg_names: Ordered argument name list. :param list ignore: List of argument names to ignore when calling the wrapped function. This is useful for function which take a non-standard keyword that is munged elsewhere. :param dict deprecated_aliases: Dictionary mapping a keyword alias to the actual g_object_newv keyword. :param dict deprecated_defaults: Dictionary of non-standard defaults that will be used when the keyword is not explicitly passed. :param Exception category: Exception category of the error. :param int stacklevel: Stack level for the deprecation passed on to warnings.warn :returns: Wrapped version of ``super_init_func`` which gives a deprecation warning when non-keyword args or aliases are used. :rtype: callable c sN|r:tjdddt|dtt|}ni}||g}D](\}}||krT||||<| |qT|rtjddfddt |Ddt |fdg}D]&\}}||krȈ|||<| |q|r"tjddfd dt |DdD]}||kr&||q&|f|S) zInitializer for a GObject based classes with support for property sets through the use of explicit keyword arguments. zUsing positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "%s" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecationsz, Nr.zThe keyword(s) "%s" have been deprecated in favor of "%s" respectively. See: https://wiki.gnome.org/PyGObject/InitializerDeprecationsc3s|]}|VqdSr r.0k)deprecated_aliasesrr (sz4deprecated_init..new_init..zInitializer is relying on deprecated non-standard defaults. Please update to explicitly use: %s See: https://wiki.gnome.org/PyGObject/InitializerDeprecationsc3s|]}d||fVqdS)z%s=%sNrrf)deprecated_defaultsrrrj7s) r1r2joinlendictzipritemsrJrer) rr[r\Z new_kwargsZ aliases_usedkeyaliasZ defaults_usedr+ arg_namescategoryrirkignorer/super_init_funcrrnew_initsP      z!deprecated_init..new_initr)rwrtrvrirkrur/rxrrsrdeprecated_inits3rycs tfdd}|S)aTranslate method's return value for stripping off success flag. There are a lot of methods which return a "success" boolean and have several out arguments. Translate such a method to return the out arguments on success and None on failure. csL||}|dr4t|dkr&|dS|ddSnrDp@dSdS)Nrr-r;z call failed)rm)r[r\Zretexc_strexc_typefail_retmethodrrr_Ks   z%strip_boolean_result..wrappedr`)r~r|r{r}r_rrzrstrip_boolean_resultDs r)NNN)rarUr1rFrApkgutilrZgirZgi._girZ gi._constantsrrr__path__r rI ModuleTyperobjectr%rOrZZ overridefuncrcrNtupleryrrrrrs2     V-  T