
    <^,                     N    d Z ddlmZ  G d de          Z G d de          ZdS )z4
parsedatetime/context.py

Context related classes

    )localc                   F    e Zd ZdZd Zed             Zd Zd Zd Z	d Z
dS )	pdtContextStackz\
    A thread-safe stack to store context(s)

    Internally used by L{Calendar} object
    c                 ,    t                      | _        d S N)r   _pdtContextStack__localselfs    7/usr/lib/python3/dist-packages/parsedatetime/context.py__init__zpdtContextStack.__init__   s    ww    c                 \    t          | j        d          sg | j        _        | j        j        S )Nstack)hasattrr   r   r	   s    r   __stackzpdtContextStack.__stack   s+    t|W-- 	$!#DL|!!r   c                 :    | j                             |           d S r   )_pdtContextStack__stackappendr
   ctxs     r   pushzpdtContextStack.push   s    C     r   c                 X    	 | j                                         S # t          $ r Y d S w xY wr   )r   pop
IndexErrorr	   s    r   r   zpdtContextStack.pop   s=    	<##%%% 	 	 	44	s    
))c                 X    	 | j         d         S # t          $ r t          d          w xY w)Nzcontext stack is empty)r   r   RuntimeErrorr	   s    r   lastzpdtContextStack.last%   s>    	9<## 	9 	9 	97888	9s    )c                     | j          S r   )r   r	   s    r   isEmptyzpdtContextStack.isEmpty+   s    <r   N)__name__
__module____qualname____doc__r   propertyr   r   r   r   r     r   r   r   r      s            " " X"
! ! !  9 9 9         r   r   c                      e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZeez  ez  ez  Ze	e
z  ez  ez  ez  Zedfedfedfedfe	dfe
dfedfedfedfg	Zi dedededededededede	de	de	de	de	de	de	de
de
eeeeeeeeed 	Zd,d"Zd# Zd$ Zed%             Zed&             Zed'             Zed(             Zd) Zd* Zd+S )-
pdtContexta  
    Context contains accuracy flag detected by L{Calendar.parse()}

    Accuracy flag uses bitwise-OR operation and is combined by:

        ACU_YEAR - "next year", "2014"
        ACU_MONTH - "March", "July 2014"
        ACU_WEEK - "last week", "next 3 weeks"
        ACU_DAY - "tomorrow", "July 4th 2014"
        ACU_HALFDAY - "morning", "tonight"
        ACU_HOUR - "18:00", "next hour"
        ACU_MIN - "18:32", "next 10 minutes"
        ACU_SEC - "18:32:55"
        ACU_NOW - "now"

    accuracy                   @         yearmonthweekdayhalfdayhourminsecnowyearsmonthsweeksdaysmorning	afternooneveningnighttonightmidnighthours)	r:   minuteminsminutesr;   secondsecssecondsr<   r   c                     || _         dS )z
        Default constructor of L{pdtContext} class.

        @type  accuracy: integer
        @param accuracy: Accuracy flag

        @rtype:  object
        @return: L{pdtContext} instance
        Nr)   )r
   r*   s     r   r   zpdtContext.__init__w   s     !r   c                 t    |D ]4}t          |t                    s| j        |         }| xj        |z  c_        5dS )z/
        Updates current accuracy flag
        N)
isinstanceint_ACCURACY_REVERSE_MAPPINGr*   )r
   r*   accs      r   updateAccuracyzpdtContext.updateAccuracy   sN      	! 	!Cc3'' :4S9MMS MMM	! 	!r   c                 :    |                      |j                   dS )zK
        Uses another L{pdtContext} instance to update current one
        N)rT   r*   )r
   contexts     r   updatezpdtContext.update   s!     	G,-----r   c                 :    t          | j        | j        z            S )zE
        Returns True if current context is accurate to date
        )boolr*   ACU_DATEr	   s    r   hasDatezpdtContext.hasDate       
 DMDM1222r   c                 :    t          | j        | j        z            S )zE
        Returns True if current context is accurate to time
        )rY   r*   ACU_TIMEr	   s    r   hasTimezpdtContext.hasTime   r\   r   c                 \    t          | j        od          t          | j        od          z  S )z5
        Returns the old date/time flag code
        r+   r,   )rQ   r[   r_   r	   s    r   dateTimeFlagzpdtContext.dateTimeFlag   s-    
 4<%A&&T\-?a)@)@@@r   c                 *    t          | j                  S )zJ
        Returns True if current context is accurate to date/time
        )rY   r*   r	   s    r   hasDateOrTimezpdtContext.hasDateOrTime   s    
 DM"""r   c                     g }| j         D ]9\  }}|| j        z  r*|                    d|                                z             :|rdd                    |          z   }nd}d|z  S )NzpdtContext.ACU_%sz	accuracy=z |  zpdtContext(%s))_ACCURACY_MAPPINGr*   r   upperjoin)r
   accuracy_reprrS   names       r   __repr__zpdtContext.__repr__   s    / 	I 	IICT]" I$$%84::<<%GHHH 	'%**]*C*CCMMM-//r   c                 "    | j         |j         k    S r   r)   r   s     r   __eq__zpdtContext.__eq__   s    },,r   N)r   )r!   r"   r#   r$   	__slots__ACU_YEAR	ACU_MONTHACU_WEEKACU_DAYACU_HALFDAYACU_HOURACU_MINACU_SECACU_NOWrZ   r^   rf   rR   r   rT   rW   r%   r[   r_   ra   rc   rk   rm   r&   r   r   r(   r(   /   s        " IHIHGKHGGG)#h.8HX%/'9GCH 
6	G	6	%	i 	6	%	%	%	!!! 	! 	)	!
 	! 	! 	w! 	! 	;! 	;! 	[! 	;! 	! 	;! 	K!  	!!" 	#!$ 5! ! !8
! 
! 
! 
!! ! !. . . 3 3 X3 3 3 X3 A A XA # # X#
0 
0 
0- - - - -r   r(   N)r$   	threadingr   objectr   r(   r&   r   r   <module>rz      s                        f         FL- L- L- L- L- L- L- L- L- L-r   