o
    bê²^³  ã                   @   s„  d dl mZ eeeƒZd dlZd dlZd dlZd dlZdZdej	v r&e
eƒ‚ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ eZeZeZi Zej ej e¡d¡Ze d¡Zeej	ej< eje_eje_ejdd… ZdjeŽ Ze ¡  G dd„ dejƒZedeƒej	d< edeƒej	d< edeƒej	d< edeƒej	d< edeƒej	d< dd„ Z dd„ Z!dd„ Z"dd„ Z#ddd„Z$dS )é    )Úextend_pathNzÜWhen using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject". See: https://bugzilla.gnome.org/show_bug.cgi?id=709183Úgobjecté   )Ú_gi)Ú_API)Ú
Repository)ÚPyGIDeprecationWarning)ÚPyGIWarningÚ	overrideszgi._gobjectz{0}.{1}.{2}c                   @   s   e Zd ZdZdd„ ZdS )Ú_DummyStaticModuleNc                 C   s   t tƒ‚©N)ÚAttributeErrorÚ_static_binding_error)ÚselfÚname© r   ú-/usr/lib/python3/dist-packages/gi/__init__.pyÚ__getattr__D   s   z_DummyStaticModule.__getattr__)Ú__name__Ú
__module__Ú__qualname__Ú__path__r   r   r   r   r   r   A   s    r   ÚglibÚgioÚgtkzgtk.gdkc                 C   s@   t | tƒrttt|  d¡ƒƒ}n| }|tkrtd| tf ƒ‚d S )NÚ.zNpygobject's version %s required, and available version %s is not recent enough)	Ú
isinstanceÚstrÚtupleÚmapÚintÚsplitÚversion_infoÚ
ValueErrorÚ__version__)ÚversionÚversion_listr   r   r   Úcheck_versionO   s   
þÿr'   c                 C   s®   t  ¡ }t|tƒstdƒ‚| | ¡ v r$| | ¡}||kr$td| |f ƒ‚| tv r8t|  |kr8td| t|  f ƒ‚| | ¡}|sEtd|  ƒ‚||vrQtd| |f ƒ‚|t| < dS )a­   Ensures the correct versions are loaded when importing `gi` modules.

    :param namespace: The name of module to require.
    :type namespace: str
    :param version: The version of module to require.
    :type version: str
    :raises ValueError: If module/version is already loaded, already required, or unavailable.

    :Example:

    .. code-block:: python

        import gi
        gi.require_version('Gtk', '3.0')

    z'Namespace version needs to be a string.z.Namespace %s is already loaded with version %sz(Namespace %s already requires version %szNamespace %s not availablez)Namespace %s not available for version %sN)	r   Úget_defaultr   r   r#   Úget_loaded_namespacesÚget_versionÚ	_versionsÚenumerate_versions)Ú	namespacer%   Ú
repositoryÚloaded_versionÚavailable_versionsr   r   r   Úrequire_version\   s*   

ÿ
ÿ
ÿr1   c                 C   s    |   ¡ D ]	\}}t||ƒ qdS )a3   Utility function for consolidating multiple `gi.require_version()` calls.

    :param requires: The names and versions of modules to require.
    :type requires: dict

    :Example:

    .. code-block:: python

        import gi
        gi.require_versions({'Gtk': '3.0', 'GLib': '2.0', 'Gio': '2.0'})
    N)Úitemsr1   )ÚrequiresÚmodule_nameÚmodule_versionr   r   r   Úrequire_versions‡   s   ÿr6   c                 C   s   t  | d ¡S r   )r+   Úget)r-   r   r   r   Úget_required_version˜   s   r8   c              
   C   sF   zt  | |¡ W n ty } ztt|ƒƒ‚d}~ww t d| ¡ dS )a©  Ensure the given foreign marshaling module is available and loaded.

    :param str namespace:
        Introspection namespace of the foreign module (e.g. "cairo")
    :param symbol:
        Optional symbol typename to ensure a converter exists.
    :type symbol: str or None
    :raises: ImportError

    :Example:

    .. code-block:: python

        import gi
        import cairo
        gi.require_foreign('cairo')

    Nzgi.repository)r   Úrequire_foreignÚ	ExceptionÚImportErrorr   Ú	importlibÚimport_module)r-   ÚsymbolÚer   r   r   r9   œ   s   €ÿr9   r   )%Úpkgutilr   r   r   ÚsysÚosr<   Útypesr   Úmodulesr;   Ú r   r   r   r   r	   r+   ÚpathÚjoinÚdirnameÚ__file__Ú_overridesdirÚ
ModuleTypeÚ_gobjectÚ_PyGObject_APIÚpygobject_versionr"   Úformatr$   Úregister_foreignr   r'   r1   r6   r8   r9   r   r   r   r   Ú<module>   sJ   



+