
    LMh                         d Z ddlZddlmZ 	 ddlmZ n# e$ r  ed          w xY wddlmZ	 dd	l
mZ d
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 Slack app.

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

![screenshot](https://tqdm.github.io/img/screenshot-slack.png)
    N)getenv)	WebClientzPlease `pip install slack-sdk`   )tqdm   )
MonoWorkerzgithub.com/	0x2b3bfa0	casperdcl)SlackIO
tqdm_slacktsranger   trangec                   (     e Zd ZdZ fdZd Z xZS )r   z,Non-blocking file-like IO using a Slack app.c                 b   t                                                       t          |          | _        | j        j        | _        	 | j                            || j                  | _        dS # t          $ r3}t          j        t          |                     d| _        Y d}~dS d}~ww xY w)z-Creates a new message in the given `channel`.)token)channeltextN)super__init__r   client	__class____name__r   chat_postMessagemessage	Exception	tqdm_autowritestr)selfr   r   er   s       R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/tqdm/contrib/slack.pyr   zSlackIO.__init__   s    e,,,N+		 ;77di7XXDLLL 	  	  	 OCFF###DLLLLLLL	 s   	&A1 1
B.;(B))B.c                 z   |sd}|                     dd                                          }|| j        k    rdS | j        }|dS || _        	 |                     | j        j        |d         |d         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... Nr   ts`)r   r%   r   )replacestripr   r   submitr   chat_updater   r   r   r   )r   sr   futurer    s        r!   r   zSlackIO.write'   s     	AIIdB%%''	>>F,?F		[[!8')BT$+DMa# ! G GF
 M  	$ 	$ 	$OCFF#########	$s   5B 
B:!B55B:)r   
__module____qualname____doc__r   r   __classcell__r   s   @r!   r   r      sM        66	  	  	  	  	           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 Slack app.
    May take a few seconds to create (`__init__`).

    - create a Slack app with the `chat:write` scope & invite it to a
      channel: <https://api.slack.com/authentication/basics>
    - copy the bot `{token}` & `{channel}` and paste below
    >>> from tqdm.contrib.slack import tqdm, trange
    >>> for i in tqdm(iterable, token='{token}', channel='{channel}'):
    ...     ...
    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. Slack token
            [default: ${TQDM_SLACK_TOKEN}].
        channel  : int, required. Slack channel
            [default: ${TQDM_SLACK_CHANNEL}].
        mininterval  : float, optional.
          Minimum of [default: 1.5] to avoid rate limit.

        See `tqdm.auto.tqdm.__init__` for other parameters.
        disable
HTTPClientr   TQDM_SLACK_TOKENr   TQDM_SLACK_CHANNELg      ?minintervalN)getcopylogging	getLoggersetLevelWARNINGr   popr   siomaxr   r   r   argskwargsr   s      r!   r   ztqdm_slack.__init__G   s     zz)$$ 	M[[]]Fl++44W_EEE

7F+=$>$>??

9f-A&B&BCCE EDH %(VZZs-K-K$L$LF=!$)&)))))r2   c                 \    t                      j        di | | j        }|                    dd           r4|d                             dd                              dd          |d<   nd|d<   |d         du rg d	|d<   d
|d<   | j                             | j        di |           d S )N
bar_formatz<bar/>z
`{bar:10}`z{bar}z`{bar:10u}`z{l_bar}`{bar:10}`{r_bar}asciiF)z:black_square:z:small_blue_diamond:z:large_blue_diamond:z:large_blue_square:iP  ncols )r   displayformat_dictr:   r'   rA   r   format_meter)r   rE   fmtr   s      r!   rK   ztqdm_slack.display]   s    !!&!!!77<&& 	; #L 1 9 9,!( !((/(G(G  !;Cw<5  3 3 3CLCL(t(//3//00000r2   c                      t                      j        |i | | j        s| j                            d           d S d S )Nr$   )r   clearr5   rA   r   rC   s      r!   rP   ztqdm_slack.cleark   sL    t&v&&&| 	HNN2	 	r2   )r   r-   r.   r/   r   rK   rP   r0   r1   s   @r!   r   r   ;   st        
 
* * * * *,1 1 1 1 1        r2   r   c                  *    t          t          |  fi |S )z?Shortcut for `tqdm.contrib.slack.tqdm(range(*args), **kwargs)`.)r   range)rD   rE   s     r!   r   r   q   s    eTl--f---r2   )r/   r<   osr   	slack_sdkr   ImportErrorautor   r   utils_workerr   
__author____all__r   r   r   r   rJ   r2   r!   <module>rZ      s'  	 	       8####### 8 8 8
+6
7
778 % $ $ $ $ $ $ $ $ $ $ $k;78

@
@
@    j   B3 3 3 3 3 3 3 3l. . . 	s    &