HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib64/python3.10/site-packages/tweepy/__pycache__/cursor.cpython-310.pyc
o

+we�&�@s�ddlmZddlmZddlmZmZGdd�d�ZGdd�d�ZGdd	�d	e�Z	Gd
d�de�Z
Gdd
�d
e�ZGdd�de�ZGdd�de�Z
Gdd�de�ZdS)�)�inf��TweepyException)�ModelParser�	RawParserc@s0eZdZdZdd�Zefdd�Zefdd�ZdS)	�Cursora2:class:`Cursor` can be used to paginate for any :class:`API` methods that
    support pagination

    Parameters
    ----------
    method
        :class:`API` method to paginate for
    args
        Positional arguments to pass to ``method``
    kwargs
        Keyword arguments to pass to ``method``
    cOs�t|d�rh|jdkrt|g|�Ri|��|_dS|jdkr+t|g|�Ri|��|_dS|jdkr>t|g|�Ri|��|_dS|jdkrQt|g|�Ri|��|_dS|jdkrdt|g|�Ri|��|_dStd��td��)	N�pagination_mode�cursor�	dm_cursor�id�next�pagezInvalid pagination mode.z'This method does not perform pagination)	�hasattrr�CursorIterator�iterator�DMCursorIterator�
IdIterator�NextIterator�PageIteratorr��self�method�args�kwargs�r�F/home/arjun/projects/env/lib/python3.10/site-packages/tweepy/cursor.py�__init__s





zCursor.__init__cCs||j_|jS)aDRetrieve the page for each request

        Parameters
        ----------
        limit
            Maximum number of pages to iterate over

        Returns
        -------
        CursorIterator or DMCursorIterator or IdIterator or NextIterator or         PageIterator
            Iterator to iterate through pages
        )r�limit)rrrrr�pages*szCursor.pagescCst|j�}||_|S)z�Retrieve the items in each page/request

        Parameters
        ----------
        limit
            Maximum number of items to iterate over

        Returns
        -------
        ItemIterator
            Iterator to iterate through items
        )�ItemIteratorrr)rrrrrr�items;s

zCursor.itemsN)�__name__�
__module__�__qualname__�__doc__rrrr rrrrrs

rc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�BaseIteratorcOs||_||_||_t|_dS�N)rrrrrrrrrrOs
zBaseIterator.__init__cCs|��Sr&)r�rrrr�__next__U�zBaseIterator.__next__cC�t�r&��NotImplementedErrorr'rrrrX�zBaseIterator.nextcCr*r&r+r'rrr�prev[r-zBaseIterator.prevcCs|Sr&rr'rrr�__iter__^r-zBaseIterator.__iter__N)r!r"r#rr(rr.r/rrrrr%Msr%c@�$eZdZdd�Zdd�Zdd�ZdS)rcOsFtj||g|�Ri|��|j�dd�}|pd|_|pd|_d|_dS)Nr	���r)r%rr�pop�next_cursor�prev_cursor�
num_tweets)rrrr�start_cursorrrrrds



zCursorIterator.__init__cCsf|jdks|j|jkr
t�|j|jd|ji|j��\}}|\|_|_t|�dkr*t�|jd7_|S)Nrr	�)	r3r5r�
StopIterationrrrr4�len)r�data�cursorsrrrrks�
�zCursorIterator.nextcCsH|jdkr	td��|j|jd|ji|j��\}|_|_|jd8_|S)Nr�%Can not page back more, at first pager	r7)r4rrrrr3r5�rr:rrrr.ws
��zCursorIterator.prevN�r!r"r#rrr.rrrrrbsrc@r0)rcO�4tj||g|�Ri|��|j�dd�|_d|_dS)Nr	r)r%rrr2r3�
page_countrrrrr��
zDMCursorIterator.__init__cC�f|jdks|j|jkr
t�|j|j|jdd�|j��}|jd7_t|t�r.|\}|_|Sd|_|S)Nr1T)r	�return_cursorsr7)	r3r@rr8rrr�
isinstance�tupler=rrrr��

�zDMCursorIterator.nextcC�td���Nz/This method does not allow backwards paginationrr'rrrr.�r)zDMCursorIterator.prevNr>rrrrr��rc@r0)rcOsFtj||g|�Ri|��|j�dd�|_d|_g|_g|_d|_dS)N�max_idr)	r%rrr2rJr5�results�
model_results�indexrrrrr�s
zIdIterator.__init__cCs|j|jkrt�|jt|j�dkr^|j|j|jt	�d�|j
��}t�j||jj
|jj|jjd�}|jj
jj||jj
|jj|jjd�}t|j�dkrQ|jd7_|j�|�|j�|�n|jd7_|j|j}|j|j}t|�dkryt�|j|_|jd7_|S)z4Fetch a set of items with IDs less than current set.r7)rJ�parser)�api�payload_list�payload_typer)r5rr8rMr9rKrrrJrrr�parse�__self__rPrQrN�appendrL)rr:�model�resultrrrr�s4�
�zIdIterator.nextcCsZ|j|jkrt�|jd8_|jdkrt�|j|j}|j|jj|_|jd7_|S)z7Fetch a set of items with IDs greater than current set.r7r)r5rr8rMrKrLrJr=rrrr.�s
zIdIterator.prevNr>rrrrr�s$rc@r0)rcOs*tj||g|�Ri|��d|_g|_dS)Nr7)r%r�current_page�previous_itemsrrrrr�s
zPageIterator.__init__cCsj|j|jkrt�|j|jd|ji|j��}t|�dkrt�|D]	}||jvr(t�q|jd7_||_|S)Nr
rr7)rWrr8rrrr9rX)rr �itemrrrr�s
�zPageIterator.nextcCs:|jdkr	td��|jd8_|j|jd|ji|j��S)Nr7r<r
)rWrrrrr'rrrr.�s
zPageIterator.prevNr>rrrrr�s
rc@r0)rcOr?)Nrr)r%rrr2�
next_tokenr@rrrrr�rAzNextIterator.__init__cCrB)Nr1T)rrCr7)	rZr@rr8rrrrDrEr=rrrrrFzNextIterator.nextcCrGrHrr'rrrr.r)zNextIterator.prevNr>rrrrr�rIrc@r0)rcCs"||_t|_d|_d|_d|_dS)Nr1r)�
page_iteratorrrrW�
page_indexr5)rr[rrrrs

zItemIterator.__init__cCs�|j|jkrt�|jdus|jt|j�dkr4t|j�|_t|j�dkr1t|j�|_t|j�dks$d|_|jd7_|jd7_|j|jS)Nr7rr1)r5rr8rWr\r9rr[r'rrrrs�zItemIterator.nextcCsn|jdur	td��|jdkr#|j��|_t|j�|_|jdkr#td��|jd8_|jd8_|j|jS)Nz#Can not go back more, at first pagerz
No more itemsr7)rWrr\r[r.r9r5r'rrrr.&s


zItemIterator.prevNr>rrrrrs
rN)�mathr�
tweepy.errorsr�tweepy.parsersrrrr%rrrrrrrrrr�<module>sB?$