§
    €zIf5  ã                   óÊ   — d Z ddlZddlmZ 	 ddlmZmZ n# e$ r  ed¦  «        ‚w xY wddlm	Z
 dd	lmZ d
dgiZg d¢Z G d„ de¦  «        Z G d„ de
¦  «        Zd„ ZeZ	eZdS )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)
é    N)Úgetenv)ÚClientÚClientConfigzPlease `pip install disco-py`é   )Útqdmé   )Ú
MonoWorkerzgithub.com/Ú	casperdcl)Ú	DiscordIOÚtqdm_discordÚtdranger   Útrangec                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )r   z.Non-blocking file-like IO using a Discord Bot.c                 ó~  •— t          ¦   «                              ¦   «          t          ¦   «         }||_        t	          |¦  «        }| j        j        | _        	 |j         	                    || j        ¦  «        | _
        dS # t          $ r3}t          j        t          |¦  «        ¦  «         d| _
        Y d}~dS d}~ww xY w)z0Creates a new message in the given `channel_id`.N)ÚsuperÚ__init__r   Útokenr   Ú	__class__Ú__name__ÚtextÚapiÚchannels_messages_createÚmessageÚ	ExceptionÚ	tqdm_autoÚwriteÚstr)Úselfr   Ú
channel_idÚconfigÚclientÚer   s         €úH/var/www/piapp/venv/lib/python3.11/site-packages/tqdm/contrib/discord.pyr   zDiscordIO.__init__   s¬   ø€ å‰Œ×ÒÑÔÐÝ‘”ˆØˆŒÝ˜‘”ˆØ”NÔ+ˆŒ	ð	 Ø!œ:×>Ò>¸zÈ4Ì9ÑUÔUˆDŒLˆLˆLøÝð 	 ð 	 ð 	 ÝŒO�C ™FœFÑ#Ô#Ð#ØˆDŒLˆLˆLˆLˆLˆLˆLøøøøð	 øøøs   Á%A? Á?
B<Â	(B7Â7B<c                 óR  — |sd}|                      dd¦  «                             ¦   «         }|| j        k    rdS | j        }|€dS || _        	 |                      |j        d|z   dz   ¦  «        }|S # t          $ r,}t          j        t          |¦  «        ¦  «         Y d}~dS d}~ww xY w)z,Replaces internal `message`'s text with `s`.z...úÚ Nú`)
ÚreplaceÚstripr   r   ÚsubmitÚeditr   r   r   r   )r   Úsr   Úfuturer"   s        r#   r   zDiscordIO.write)   sÈ   € àð 	ØˆAØ�IŠI�d˜BÑÔ×%Ò%Ñ'Ô'ˆØ�”	Š>ˆ>ØˆFØ”,ˆØˆ?ØˆFØˆŒ	ð	Ø—[’[ ¤¨s°Q©w¸©}Ñ=Ô=ˆFð ˆMøõ ð 	$ð 	$ð 	$ÝŒO�C ™FœFÑ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#øøøøð	$øøøs   Á!A0 Á0
B&Á:!B!Â!B&)r   Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__classcell__©r   s   @r#   r   r      sM   ø€ € € € € Ø8Ð8ð ð  ð  ð  ð  ðð ð ð ð ð ð ó    r   c                   ó6   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )r   a  
    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}'):
    ...     ...
    c           	      óê  •— |                      d¦  «        sÃ|                     ¦   «         }t          j        d¦  «                             t          j        ¦  «         t          |                     dt          d¦  «        ¦  «        |                     dt          d¦  «        ¦  «        ¦  «        | _	        t          d|                      dd¦  «        ¦  «        |d<    t          ¦   «         j        |i |¤Ž d	S )
a”  
        Parameters
        ----------
        token  : str, required. Discord token
            [default: ${TQDM_DISCORD_TOKEN}].
        channel_id  : int, required. Discord channel ID
            [default: ${TQDM_DISCORD_CHANNEL_ID}].
        mininterval  : float, optional.
          Minimum of [default: 1.5] to avoid rate limit.

        See `tqdm.auto.tqdm.__init__` for other parameters.
        ÚdisableÚ
HTTPClientr   ÚTQDM_DISCORD_TOKENr   ÚTQDM_DISCORD_CHANNEL_IDg      ø?ÚminintervalN)ÚgetÚcopyÚloggingÚ	getLoggerÚsetLevelÚWARNINGr   Úpopr   ÚdioÚmaxr   r   ©r   ÚargsÚkwargsr   s      €r#   r   ztqdm_discord.__init__J   sÕ   ø€ ð �zŠz˜)Ñ$Ô$ð 	MØ—[’[‘]”]ˆFÝÔ˜lÑ+Ô+×4Ò4µW´_ÑEÔEÐEÝ Ø—
’
˜7¥FÐ+?Ñ$@Ô$@ÑAÔAØ—
’
˜<­Ð0IÑ)JÔ)JÑKÔKñMô MˆDŒHõ %(¨¨V¯ZªZ¸ÀsÑ-KÔ-KÑ$LÔ$LˆF�=Ñ!Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ð)Ð)r3   c                 ó0  •—  t          ¦   «         j        di |¤Ž | j        }|                     dd ¦  «        r4|d                              dd¦  «                             dd¦  «        |d<   nd|d<   | j                              | j        di |¤Ž¦  «         d S )NÚ
bar_formatz<bar/>z	{bar:10u}z{bar}z{l_bar}{bar:10u}{r_bar}© )r   ÚdisplayÚformat_dictr;   r(   rB   r   Úformat_meter)r   rF   Úfmtr   s      €r#   rJ   ztqdm_discord.display`   s°   ø€ Ø�‰ŒŒÐ!Ð!˜&Ð!Ð!Ð!ØÔˆØ�7Š7�< Ñ&Ô&ð 	:Ø # LÔ 1× 9Ò 9Ø˜+ñ!'ô !'ß'.¢w¨w¸Ñ'DÔ'Dð �ÑÐð !:ˆC�ÑØŒ�ŠÐ(�tÔ(Ð/Ð/¨3Ð/Ð/Ñ0Ô0Ð0Ð0Ð0r3   c                 ó€   •—  t          ¦   «         j        |i |¤Ž | j        s| j                             d¦  «         d S d S )Nr&   )r   Úclearr6   rB   r   rD   s      €r#   rO   ztqdm_discord.clearj   sL   ø€ Ø�‰ŒŒ�tÐ&˜vÐ&Ð&Ð&ØŒ|ð 	ØŒH�NŠN˜2ÑÔÐÐÐð	ð 	r3   )r   r.   r/   r0   r   rJ   rO   r1   r2   s   @r#   r   r   <   st   ø€ € € € € ðð ð*ð *ð *ð *ð *ð,1ð 1ð 1ð 1ð 1ðð ð ð ð ð ð ð ð r3   r   c                  ó*   — t          t          | Ž fi |¤ŽS )zAShortcut for `tqdm.contrib.discord.tqdm(range(*args), **kwargs)`.)r   Úrange)rE   rF   s     r#   r   r   p   s   € å�˜t˜Ð/Ð/¨Ð/Ð/Ð/r3   )r0   r=   Úosr   Údisco.clientr   r   ÚImportErrorÚautor   r   Úutils_workerr	   Ú
__author__Ú__all__r   r   r   r   rI   r3   r#   ú<module>rY      s*  ðð	ð 	ð €€€Ø Ð Ð Ð Ð Ð ð7Ø1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1øØð 7ð 7ð 7Ø
ˆ+Ð5Ñ
6Ô
6Ð6ð7øøøð %Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $à˜k˜]Ð+€
Ø
DÐ
DÐ
D€ðð ð ð ð �
ñ ô ð ðD1ð 1ð 1ð 1ð 1�9ñ 1ô 1ð 1ðh0ð 0ð 0ð €Ø	€€€s   Ž —(