ó
    ´OÂfÃ  ã                   ó„   • S r SSKrSSKJrJr  SSKJrJrJrJ	r	   " S S\	5      r
\
" 5       r " S S\S	9r " S
 S\5      rg)zY
This module provides an interface for TweetHandlers, and support for timezone
handling.
é    N)ÚABCMetaÚabstractmethod)ÚdatetimeÚ	timedeltaÚtimezoneÚtzinfoc                   óŠ   • \ rS rSrSr\" \R                  * S9r\R                  (       a  \" \R                  * S9rO\rS rSrg)ÚLocalTimezoneOffsetWithUTCé   a›  
This is not intended to be a general purpose class for dealing with the
local timezone. In particular:

* it assumes that the date passed has been created using
  `datetime(..., tzinfo=Local)`, where `Local` is an instance of
  the object `LocalTimezoneOffsetWithUTC`;
* for such an object, it returns the offset with UTC, used for date comparisons.

Reference: https://docs.python.org/3/library/datetime.html
)Úsecondsc                 ó   • U R                   $ )z"
Access the relevant time offset.
)Ú	DSTOFFSET)ÚselfÚdts     Ú2/usr/lib/python3/dist-packages/nltk/twitter/api.pyÚ	utcoffsetÚ$LocalTimezoneOffsetWithUTC.utcoffset'   s   € ð �~‰~Ðó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú_timer   Ú	STDOFFSETÚdaylightÚaltzoner   r   Ú__static_attributes__r   r   r   r
   r
      s:   † ñ
ñ  5§>¡> /Ñ2€Ià‡~‡~Ù u§}¡} nÑ5‰	àˆ	õr   r
   c                   ó(   • \ rS rSrSrSS jrS rSrg)ÚBasicTweetHandleré1   z
Minimal implementation of `TweetHandler`.

Counts the number of Tweets and decides when the client should stop
fetching them.
c                 ó>   • Xl         SU l         SU l         S U l        g )Nr   F)ÚlimitÚcounterÚdo_stopÚmax_id)r   r$   s     r   Ú__init__ÚBasicTweetHandler.__init__9   s*   € ØŒ
ØˆŒð	ð ˆŒð	ð ˆ�r   c                 ód   • U R                   U R                  :  =(       a    U R                  (       + $ )z<
Returns `False` if the client should stop fetching Tweets.
)r%   r$   r&   ©r   s    r   Údo_continueÚBasicTweetHandler.do_continueH   s#   € ð �|‰|˜dŸj™jÑ(×=°·±Ô-=Ð=r   )r%   r&   r$   r'   N)é   )r   r   r   r   r   r(   r,   r   r   r   r   r!   r!   1   s   † ñôõ>r   r!   )Ú	metaclassc                   óL   • \ rS rSrSrS	S jr\S 5       r\S 5       rS
S jr	Sr
g)ÚTweetHandlerIéO   zi
Interface class whose subclasses should implement a handle method that
Twitter clients can delegate to.
Nc                 óÄ   • [         R                  X5        SU l        SU l        U(       a  [	        US[
        06U l        U(       a  [	        US[
        06U l        SU l        g)aâ  
:param int limit: The number of data items to process in the current        round of processing.

:param tuple upper_date_limit: The date at which to stop collecting        new data. This should be entered as a tuple which can serve as the        argument to `datetime.datetime`.        E.g. `date_limit=(2015, 4, 1, 12, 40)` for 12:30 pm on April 1 2015.

:param tuple lower_date_limit: The date at which to stop collecting        new data. See `upper_data_limit` for formatting.
Nr   T)r!   r(   Úupper_date_limitÚlower_date_limitr   ÚLOCALÚ
startingup)r   r$   r4   r5   s       r   r(   ÚTweetHandlerI.__init__U   sU   € ô 	×"Ñ" 4Ô/à $ˆÔØ $ˆÔÞÜ$,Ð.>Ð$MÄuÑ$MˆDÔ!ÞÜ$,Ð.>Ð$MÄuÑ$MˆDÔ!àˆ�r   c                 ó   • g)z:
Deal appropriately with data returned by the Twitter API
Nr   )r   Údatas     r   ÚhandleÚTweetHandlerI.handlem   ó   � r   c                 ó   • g)z/
Actions when the tweet limit has been reached
Nr   r+   s    r   Ú	on_finishÚTweetHandlerI.on_finishs   r=   r   c                 óê  • U R                   (       d  U R                  (       aÑ  Sn[        R                  " US   U5      R	                  [
        R                  S9nU R                   (       a  X@R                   :”  d   U R                  (       ah  X@R                  :  aX  U R                   (       a  SnU R                   nOSnU R                  nU(       a  [        SR                  XeU5      5        SU l	        gggg)	z
Validate date limits.
z%a %b %d %H:%M:%S +0000 %YÚ
created_at)r   ÚearlierÚlaterz1Date limit {} is {} than date of current tweet {}TN)
r4   r5   r   ÚstrptimeÚreplacer   ÚutcÚprintÚformatr&   )r   r:   ÚverboseÚdate_fmtÚ
tweet_dateÚmessageÚ
date_limits          r   Úcheck_date_limitÚTweetHandlerI.check_date_limity   sÑ   € ð × ×  D×$9×$9Ø3ˆHÜ!×*Ò*¨4°Ñ+=¸xÓH×PÑPÜ—|‘|ð Qð ˆJð ×%×%¨*×7LÑ7LÓ*LØ×%×%¨*×7LÑ7LÓ*Là×(×(Ø'�GØ!%×!6Ñ!6‘Jà%�GØ!%×!6Ñ!6�JÞÜØK×RÑRØ&°óôð
  $�•ð +MÐ%ð %:r   )r&   r5   r7   r4   )r.   NN)F)r   r   r   r   r   r(   r   r;   r?   rO   r   r   r   r   r1   r1   O   s9   † ñô
ð0 ñó ðð
 ñó ð÷
$r   r1   )r   Útimer   Úabcr   r   r   r   r   r   r
   r6   r!   r1   r   r   r   Ú<module>rS      sI   ðñó
 ß 'ß :Ó :ô ô ñ6 	#Ó$€ô> 'ò >ô<B$Ð%õ B$r   