B
      ›\²  ã               @   s4   d Z ddlmZmZmZ ddlZG dd„ deƒZdS )z!
Implements:
- Threadlocal stack
é    )Úprint_functionÚabsolute_importÚdivisionNc               @   sh   e Zd Zdd„ Zedd„ ƒZdd„ Zdd„ Zed	d
„ ƒZedd„ ƒZ	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTLStackc             C   s   t  ¡ | _d S )N)Ú	threadingÚlocal)Úself© r	   ú;lib/python3.7/site-packages/numba/servicelib/threadlocal.pyÚ__init__
   s    zTLStack.__init__c             C   s.   y| j jS  tk
r(   g | j _| j jS X d S )N)r   ÚstackÚAttributeError)r   r	   r	   r
   r      s
    zTLStack.stackc             C   s   | j  |¡ d S )N)r   Úappend)r   Úitemr	   r	   r
   Úpush   s    zTLStack.pushc             C   s
   | j  ¡ S )N)r   Úpop)r   r	   r	   r
   r      s    zTLStack.popc             C   s
   | j d S )Néÿÿÿÿ)r   )r   r	   r	   r
   Útop   s    zTLStack.topc             C   s   | j  S )N)r   )r   r	   r	   r
   Úis_empty!   s    zTLStack.is_emptyc             C   s   | j  S )N)r   )r   r	   r	   r
   Ú__bool__%   s    zTLStack.__bool__c             C   s   |   ¡ S )N)r   )r   r	   r	   r
   Ú__nonzero__(   s    zTLStack.__nonzero__c             C   s
   t | jƒS )N)Úlenr   )r   r	   r	   r
   Ú__len__+   s    zTLStack.__len__c             C   s   |   ¡  d S )N)r   )r   r	   r	   r
   Úclear.   s    zTLStack.clearN)Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   r   r   r   r   r   r   r   r   r	   r	   r	   r
   r   	   s   
r   )Ú__doc__Z
__future__r   r   r   r   Úobjectr   r	   r	   r	   r
   Ú<module>   s   