U
    Pe	                     @   sR   d Z dZi ZdZg ZG dd deZG dd deZdd Z	d	d
 Z
eddZdS )a-  
Context
=======

.. versionadded:: 1.8.0

.. warning::

    This is experimental and subject to change as long as this warning notice
    is present.

Kivy has a few "global" instances that are used directly by many pieces of the
framework: `Cache`, `Builder`, `Clock`.

TODO: document this module.

)ContextProxyContextregister_contextget_current_contextNc                   @   sJ   e Zd ZdgZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dS )r   _objc                 C   s   t |  t | d| d S Nr   )object__init____setattr__)selfobj r   0/tmp/pip-unpacked-wheel-xzebddm3/kivy/context.pyr      s    
zProxyContext.__init__c                 C   s   t t| d|S r   )getattrr   __getattribute__r
   namer   r   r   r   #   s    zProxyContext.__getattribute__c                 C   s   t t| d| d S r   )delattrr   r   r   r   r   r   __delattr__&   s    zProxyContext.__delattr__c                 C   s   t t| d|| d S r   )setattrr   r   )r
   r   valuer   r   r   r	   )   s    zProxyContext.__setattr__c                 C   s   t t| dS r   )boolr   r   r
   r   r   r   __bool__,   s    zProxyContext.__bool__c                 C   s   t t| dS r   )strr   r   r   r   r   r   __str__/   s    zProxyContext.__str__c                 C   s   t t| dS r   )reprr   r   r   r   r   r   __repr__2   s    zProxyContext.__repr__N)__name__
__module____qualname__	__slots__r   r   r   r	   r   r   r   r   r   r   r   r      s   r   c                   @   s&   e Zd Zd	ddZdd Zdd ZdS )
r   Fc                 C   sL   t |  d | _|sd S tD ]*}t| }|d |d |d }|| |< qd S )Nclsargskwargs)dictr   Zsandbox	_contexts)r
   initr   contextinstancer   r   r   r   8   s    
zContext.__init__c                 C   s6   t |  |  D ]\}}tt| d d| qd S )Nproxyr   )_context_stackappenditemsr   r	   r%   r
   r   r(   r   r   r   pushC   s    
zContext.pushc                 C   s8   t d t  D ]\}}tt| d d| qd S )Nr)   r   )r*   popr   r,   r   r	   r%   r-   r   r   r   r0   H   s    
zContext.popN)F)r   r   r   r   r.   r0   r   r   r   r   r   6   s   
r   c                 O   s0   |||}t |}||||dt| < |t| < |S )zRegister a new context.
    )r!   r"   r#   r)   )r   r%   _default_context)r   r!   r"   r#   r(   r)   r   r   r   r   P   s    

r   c                   C   s   t stS t d S )z Return the current context.
    r/   )r*   r1   r   r   r   r   r   ^   s    r   F)r&   )__doc____all__r%   r1   r*   r   r   r$   r   r   r   r   r   r   r   <module>   s   