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/.local/lib/python3.10/site-packages/tqdm/contrib/__pycache__/discord.cpython-310.pyc
o

���g{�@s�dZddlmZddlmZddlmZddlmZddl	m
Zddlm
Z
dd	lmZd
dlmZdd
dgiZgd�ZGdd�de�ZGdd�de�Zdd�ZeZ
eZdS)z�
Sends updates to a Discord bot.

Usage:
>>> from tqdm.contrib.discord import tqdm, trange
>>> for i in trange(10, token='{token}', channel_id='{channel_id}'):
...     ...

![screenshot](https://tqdm.github.io/img/screenshot-discord.png)
�)�getenv)�warn)�Session)�default_user_agent�)�tqdm)�TqdmWarning)�__version__�)�
MonoWorkerzgithub.com/�	casperdcl�
guigoruiz1)�	DiscordIO�tqdm_discord�tdranger�trangecsReZdZdZdZde�de���Z�fdd�Ze	dd��Z
d	d
�Zdd�Z�Z
S)
rz.Non-blocking file-like IO using a Discord Bot.zhttps://discord.com/api/v10ztqdm (https://tqdm.github.io, z) cs2t���||_||_t�|_|jj|_|j	dS)z0Creates a new message in the given `channel_id`.N)
�super�__init__�token�
channel_idr�session�	__class__�__name__�text�
message_id)�selfrr�r��G/home/arjun/.local/lib/python3.10/site-packages/tqdm/contrib/discord.pyrs


zDiscordIO.__init__c
Cs�t|d�r|jSz$|jj|j�d|j�d�d|j��|jd�dd|j�d�id��	�}Wnt
yF}zt�t
|��WYd}~dSd}~ww|�d	�d
krWtdtdd
�dS|d|_|jS)N�_message_id�
/channels/z	/messages�Bot ��
Authorizationz
User-Agent�content�`��headers�json�
error_codei�z2Creation rate limit: try increasing `mininterval`.r)�
stacklevel�id)�hasattrrr�post�APIrr�UArr(�	Exception�	tqdm_auto�write�str�getrr)r�res�errrr(s(
����
�
zDiscordIO.message_idc
Cs�|sd}|�dd���}||jkrdS|j}|durdS||_z'|j|jj|j�d|j�d|��d|j	��|j
d�d	d
|j�d
�id�}W|Sty`}zt�
t|��WYd}~dSd}~ww)z/Replaces internal `message_id`'s text with `s`.z...�
�Nr �
/messages/r!r"r$r%r&)�replace�striprr�submitr�patchr.rrr/r0r1r2r3)r�sr�futurer6rrrr2;s*
����zDiscordIO.writec
Csvz |j|jj|j�d|j�d|j��d|j��|jd�d�}W|Sty:}zt	�
t|��WYd}~dSd}~ww)zDeletes internal `message_id`.r r9r!r")r'N)r<r�deleter.rrrr/r0r1r2r3)rr?r6rrrr@Qs����zDiscordIO.delete)r�
__module__�__qualname__�__doc__r.r	rr/r�propertyrr2r@�
__classcell__rrrrrs	
rcsDeZdZdZ�fdd�Z�fdd�Z�fdd�Z�fdd	�Z�ZS)
ra
    Standard `tqdm.auto.tqdm` but also sends updates to a Discord Bot.
    May take a few seconds to create (`__init__`).

    - create a discord bot (not public, no requirement of OAuth2 code
      grant, only send message permissions) & invite it to a channel:
      <https://discordpy.readthedocs.io/en/latest/discord.html>
    - copy the bot `{token}` & `{channel_id}` and paste below

    >>> from tqdm.contrib.discord import tqdm, trange
    >>> for i in tqdm(iterable, token='{token}', channel_id='{channel_id}'):
    ...     ...
    csL|�d�s|��}t|�dtd��|�dtd���|_t�j|i|��dS)a7
        Parameters
        ----------
        token  : str, required. Discord bot token
            [default: ${TQDM_DISCORD_TOKEN}].
        channel_id  : int, required. Discord channel ID
            [default: ${TQDM_DISCORD_CHANNEL_ID}].

        See `tqdm.auto.tqdm.__init__` for other parameters.
        �disabler�TQDM_DISCORD_TOKENr�TQDM_DISCORD_CHANNEL_IDN)r4�copyr�popr�diorr�r�args�kwargsrrrrls
�ztqdm_discord.__init__csft�jdi|��|j}|�dd�r!|d�dd��dd�|d<nd|d<|j�|jdi|���dS)N�
bar_formatz<bar/>z	{bar:10u}z{bar}z{l_bar}{bar:10u}{r_bar}r)r�display�format_dictr4r:rKr2�format_meter)rrN�fmtrrrrP~s��ztqdm_discord.displaycs,t�j|i|��|js|j�d�dSdS)Nr8)r�clearrFrKr2rLrrrrT�s�ztqdm_discord.clearcsD|jrdSt���|js|jdur|jdks |j��dSdSdS)Nr)rFr�close�leave�posrKr@)rrrrrU�s
�ztqdm_discord.close)	rrArBrCrrPrTrUrErrrrr^s

rcOstt|�fi|��S)zAShortcut for `tqdm.contrib.discord.tqdm(range(*args), **kwargs)`.)r�range)rMrNrrrr�srN)rC�osr�warningsr�requestsr�requests.utilsr�autorr1�stdr�versionr	�utils_workerr�
__author__�__all__rrrrrrrr�<module>s 
D7