
    h{                         S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r  SSKJr  SS	KJr  S
SKJr  SSS/0r/ SQr " S S\5      r " S S\5      rS r\r
\rg)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__   )
MonoWorkerzgithub.com/	casperdcl
guigoruiz1)	DiscordIOtqdm_discordtdranger   trangec                   f   ^  \ rS rSrSrSrS\ S\" 5        3rU 4S jr	\
S 5       rS rS	 rS
rU =r$ )r      z.Non-blocking file-like IO using a Discord Bot.zhttps://discord.com/api/v10ztqdm (https://tqdm.github.io, z) c                    > [         TU ]  5         Xl        X l        [	        5       U l        U R                  R                  U l        U R                    g)z0Creates a new message in the given `channel_id`.N)
super__init__token
channel_idr   session	__class____name__text
message_id)selfr   r   r   s      F/var/www/html/env/lib/python3.13/site-packages/tqdm/contrib/discord.pyr   DiscordIO.__init__   s9    
$yNN++	    c                    [        U S5      (       a  U R                  $  U R                  R                  U R                   SU R
                   S3SU R                   3U R                  S.SSU R                   S30S9R                  5       nUR                  S	5      S
:X  a  [        S[        SS9  g US   U l        U R                  $ ! [         a)  n[        R                  " [!        U5      5         S nAg S nAff = f)N_message_id
/channels/z	/messagesBot Authorizationz
User-Agentcontent`headersjson
error_codei  z2Creation rate limit: try increasing `mininterval`.r   )
stacklevelid)hasattrr$   r   postAPIr   r   UAr   r-   getr   r	   	Exception	tqdm_autowritestr)r   reses      r    r   DiscordIO.message_id(   s    4''###	(,,##88*Jt&7yA,0*=TWWU1TYYKq!12 $ 4 59DF  ww|$+I Q0 $'t9 '''  	$OOCF##	$s   A-C 
C:C55C:c           	         U(       d  SnUR                  SS5      R                  5       nXR                  :X  a  gU R                  nUc  gXl         U R	                  U R
                  R                  U R                   SU R                   SU 3SU R                   3U R                  S.S	S
U R                   S
30S9nU$ ! [         a)  n[        R                  " [        U5      5         SnAgSnAff = f)z/Replaces internal `message_id`'s text with `s`.z... Nr%   
/messages/r&   r'   r)   r*   r+   )replacestripr   r   submitr   patchr3   r   r   r4   r6   r7   r8   r9   )r   sr   futurer;   s        r    r8   DiscordIO.write;   s    AIIdB%%'		>__
			[[""88*Jt&7z*N,0*=TWWU1TYYKq!12	 ! 4F M  	$OOCF##	$s   A,B? ?
C2	C--C2c                 >    U R                  U R                  R                  U R                   SU R                   SU R
                   3SU R                   3U R                  S.S9nU$ ! [         a)  n[        R                  " [        U5      5         SnAgSnAff = f)zDeletes internal `message_id`.r%   r@   r&   r'   )r,   N)rC   r   deleter3   r   r   r   r4   r6   r7   r8   r9   )r   rF   r;   s      r    rI   DiscordIO.deleteQ   s    	[[##88*Jt&7z$//ARS,0*=TWWU ! WF M  	$OOCF##	$s   A%A) )
B3BB)r$   r   r   r   r   )r   
__module____qualname____firstlineno____doc__r3   r
   r   r4   r   propertyr   r8   rI   __static_attributes____classcell__r   s   @r    r   r      sJ    8
'C)+b9K9M8N	OB ( ($,
 
r"   r   c                   P   ^  \ rS rSrSrU 4S jrU 4S jrU 4S jrU 4S jrSr	U =r
$ )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           	         > UR                  S5      (       dS  UR                  5       n[        UR                  S[	        S5      5      UR                  S[	        S5      5      5      U l        [        TU ]  " U0 UD6  g)z
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)r5   copyr   popr   dior   r   r   argskwargsr   s      r    r   tqdm_discord.__init__l   sh     zz)$$[[]F 

7F+?$@A

<0I)JKMDH 	$)&)r"   c                   > [         TU ]  " S0 UD6  U R                  nUR                  SS 5      (       a)  US   R	                  SS5      R	                  SS5      US'   OSUS'   U R
                  R                  U R                  " S0 UD65        g )N
bar_formatz<bar/>z	{bar:10u}z{bar}z{l_bar}{bar:10u}{r_bar} )r   displayformat_dictr5   rA   r[   r8   format_meter)r   r^   fmtr   s      r    rc   tqdm_discord.display~   s    !&!77<&& #L 1 9 9+!''.ww'D  !:Ct((/3/0r"   c                    > [         TU ]  " U0 UD6  U R                  (       d  U R                  R	                  S5        g g )Nr?   )r   clearrV   r[   r8   r\   s      r    ri   tqdm_discord.clear   s0    t&v&||HHNN2 r"   c                    > U R                   (       a  g [        TU ]	  5         U R                  (       d9  U R                  c  U R                  S:X  d  U R
                  R                  5         g g g )Nr   )rV   r   closeleaveposr[   rI   )r   r   s    r    rl   tqdm_discord.close   sF    <<

tzz1dhh!mHHOO 7D
r"   )r[   )r   rK   rL   rM   rN   r   rc   ri   rl   rP   rQ   rR   s   @r    r   r   ^   s!    *$1
 r"   r   c                  &    [        [        U 6 40 UD6$ )zAShortcut for `tqdm.contrib.discord.tqdm(range(*args), **kwargs)`.)r   range)r]   r^   s     r    r   r      s    t///r"   N)rN   osr   warningsr   requestsr   requests.utilsr   autor   r7   stdr	   versionr
   utils_workerr   
__author____all__r   r   r   r   rb   r"   r    <module>r|      se   	    - $  ! $k<89

DA
 AH49 4n0 	r"   