
    $pj                         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)
    )warn)Session)default_user_agent   )tqdm)TqdmWarning)envwrap)__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      P/var/www/html/pdf-tiff/venv/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nUR                  5       nUR                  5         US	   U l        U R                  $ ! [         aM  nWR                  S
:X  a  [        S[        SS9   S nAg [        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idi  z2Creation rate limit: try increasing `mininterval`.r   )
stacklevel)hasattrr$   r   postAPIr   r   UAr   r-   raise_for_status	Exceptionstatus_coder   r   	tqdm_autowritestr)r   reqreses       r    r   DiscordIO.message_id(   s    4''###	$,,##88*Jt&7yA,0*=TWWU1TYYKq!12 $ 4C ((*C  "  #4yD###  	(#%I Q0 A''	(s   A?B4 4
D>D"DD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   patchr2   r   r   r3   r5   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%   rA   r&   r'   )r,   N)rD   r   deleter2   r   r   r   r3   r5   r7   r8   r9   )r   rG   r<   s      r    rJ   DiscordIO.deleteS   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__r2   r
   r   r3   r   propertyr   r8   rJ   __static_attributes____classcell__r   s   @r    r   r      sJ    8
'C)+b9K9M8N	OB $ $(,
 
r"   r   c                   p   ^  \ rS rSrSr\" SSSS9SSS.U 4S	 jj5       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}'):
...     ...
r   discordT)	is_methodN)r   r   c                   > UR                  S5      (       d   UR                  5       n[        X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.
disableN)getcopyr   dior   r   )r   r   r   argskwargsr   s        r    r   tqdm_discord.__init__n   s=     zz)$$[[]F 3DH$)&)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'   U R
                  R                  U R                  " S0 UD65        g )N
bar_formatz<bar/>z	{bar:10u}z{bar} )r   displayformat_dictrZ   rB   r\   r8   format_meter)r   r^   fmtr   s      r    rc   tqdm_discord.display   sz    !&!77<&& #L 1 9 9+!''.ww'D t((/3/0r"   c                    > [         TU ]  " U0 UD6  U R                  (       d  U R                  R	                  S5        g g )Nr@   )r   clearrY   r\   r8   )r   r]   r^   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   )rY   r   closeleaveposr\   rJ   )r   r   s    r    rl   tqdm_discord.close   sF    <<

tzz1dhh!mHHOO 7D
r"   )r\   )r   rL   rM   rN   rO   r	   r   rc   ri   rl   rQ   rR   rS   s   @r    r   r   `   s>     VY$/$(T * 0* 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)rO   warningsr   requestsr   requests.utilsr   autor   r7   stdr   utilsr	   versionr
   utils_workerr   
__author____all__r   r   r   r   rb   r"   r    <module>r|      se   	   - $   ! $k<89

DC
 CL19 1h0 	r"   