
    Y j&4                     8   % S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r	J
r
  SSKJr  SSKJr  SSKJr  SS	KJr  0 r\\\4   \S
'    " S S5      rS'S\S-  SS4S jjrS'S\S-  S\4S jjrS\S\S-  4S jr " S S\5      r\R=                  \R>                  " 5       5         " S S5      r \	S\\-  S\\RB                     4S j5       r"SS.S\#\   S\S\S-  S\4S jjr$SSSSSSSS.S\S\S \S-  S!\S"\S#\S\S-  S$\#\   S-  S%\S-  S\\   4S& jjr%g)(u	  Utility helpers to handle progress bars in `huggingface_hub`.

Example:
    1. Use `huggingface_hub.utils.tqdm` as you would use `tqdm.tqdm` or `tqdm.auto.tqdm`.
    2. To disable progress bars, either use `disable_progress_bars()` helper or set the
       environment variable `HF_HUB_DISABLE_PROGRESS_BARS` to 1.
    3. To re-enable progress bars, use `enable_progress_bars()`.
    4. To check whether progress bars are disabled, use `are_progress_bars_disabled()`.

NOTE: Environment variable `HF_HUB_DISABLE_PROGRESS_BARS` has the priority.

Example:
    ```py
    >>> from huggingface_hub.utils import are_progress_bars_disabled, disable_progress_bars, enable_progress_bars, tqdm

    # Disable progress bars globally
    >>> disable_progress_bars()

    # Use as normal `tqdm`
    >>> for _ in tqdm(range(5)):
    ...    pass

    # Still not showing progress bars, as `disable=False` is overwritten to `True`.
    >>> for _ in tqdm(range(5), disable=False):
    ...    pass

    >>> are_progress_bars_disabled()
    True

    # Re-enable progress bars globally
    >>> enable_progress_bars()

    # Progress bar will be shown !
    >>> for _ in tqdm(range(5)):
    ...   pass
    100%|███████████████████████████████████████| 5/5 [00:00<00:00, 117817.53it/s]
    ```

Group-based control:
    ```python
    # Disable progress bars for a specific group
    >>> disable_progress_bars("peft.foo")

    # Check state of different groups
    >>> assert not are_progress_bars_disabled("peft"))
    >>> assert not are_progress_bars_disabled("peft.something")
    >>> assert are_progress_bars_disabled("peft.foo"))
    >>> assert are_progress_bars_disabled("peft.foo.bar"))

    # Enable progress bars for a subgroup
    >>> enable_progress_bars("peft.foo.bar")

    # Check if enabling a subgroup affects the parent group
    >>> assert are_progress_bars_disabled("peft.foo"))
    >>> assert not are_progress_bars_disabled("peft.foo.bar"))

    # No progress bar for `name="peft.foo"`
    >>> for _ in tqdm(range(5), name="peft.foo"):
    ...     pass

    # Progress bar will be shown for `name="peft.foo.bar"`
    >>> for _ in tqdm(range(5), name="peft.foo.bar"):
    ...     pass
    100%|███████████████████████████████████████| 5/5 [00:00<00:00, 117817.53it/s]

    ```
    N)Iterator)contextmanagernullcontext)Path)ContextManager)tqdm   )HF_HUB_DISABLE_PROGRESS_BARSprogress_bar_statesc                   H    \ rS rSrSrS
S\S-  SS4S jjrSS jrSS jrS	r	g)disable_progress_barsl   a  
Disable progress bars either globally or for a specified group.

This function updates the state of progress bars based on a group name.
If no group name is provided, all progress bars are disabled. The operation
respects the `HF_HUB_DISABLE_PROGRESS_BARS` environment variable's setting.

Works as both a regular call and a context manager:
    disable_progress_bars()           # disables until enable_progress_bars()
    with disable_progress_bars():     # disables for the block, re-enables on exit
        ...

Args:
    name (`str`, *optional*):
        The name of the group for which to disable the progress bars. If None,
        progress bars are disabled globally.

Raises:
    Warning: If the environment variable precludes changes.
Nnamereturnc                 f   Xl         [        SL a  [        R                  " S5        SU l        g [        U5      (       + U l        Uc  [        R                  5         S[        S'   g [         Vs/ s H  o"R                  U S35      (       d  M  UPM!     nnU H
  n[        U	 M     S[        U'   g s  snf )NFzlCannot disable progress bars: environment variable `HF_HUB_DISABLE_PROGRESS_BARS=0` is set and has priority._global.)	r   r
   warningswarn_should_reenableare_progress_bars_disabledr   clear
startswith)selfr   keykeys_to_removes       k/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/huggingface_hub/utils/tqdm.py__init__disable_progress_bars.__init__   s    	'50MM~ %*D!$>t$D D<%%'-2	*-@_-@cNNVZU[[\S]D^c-@N_%', &(-% `s   ,B.B.c                     U $ N r   s    r   	__enter__disable_progress_bars.__enter__           c                 R    U R                   (       a  [        U R                  5        g g r!   )r   enable_progress_barsr   )r   excs     r   __exit__disable_progress_bars.__exit__   s       + !r'   )r   r   r!   )r   r   )r   N)
__name__
__module____qualname____firstlineno____doc__strr   r$   r+   __static_attributes__r"   r'   r   r   r   l   s(    *.S4Z .4 .(,r'   r   r   r   c                 "   [         SL a  [        R                  " S5        gU c  [        R	                  5         S[        S'   g[         Vs/ s H  oR                  U  S35      (       d  M  UPM!     nnU H
  n[        U	 M     S[        U '   gs  snf )a  
Enable progress bars either globally or for a specified group.

This function sets the progress bars to enabled for the specified group or globally
if no group is specified. The operation is subject to the `HF_HUB_DISABLE_PROGRESS_BARS`
environment setting.

Args:
    name (`str`, *optional*):
        The name of the group for which to enable the progress bars. If None,
        progress bars are enabled globally.

Raises:
    Warning: If the environment variable precludes changes.
TzkCannot enable progress bars: environment variable `HF_HUB_DISABLE_PROGRESS_BARS=1` is set and has priority.Nr   r   )r
   r   r   r   r   r   )r   r   r   s      r   r)   r)      s      $t+y	
 	|!!#)-I&)<[)<#RVQWWXz@Z#)<[!C#C( "$(D! \s   
B*Bc                    [         SL a  gU c  [        R                  SS5      (       + $ U (       aD  U [        ;   a  [        U    (       + $ SR                  U R	                  S5      SS 5      n U (       a  MD  [        R                  SS5      (       + $ )a  
Check if progress bars are disabled globally or for a specific group.

This function returns whether progress bars are disabled for a given group or globally.
It checks the `HF_HUB_DISABLE_PROGRESS_BARS` environment variable first, then the programmatic
settings.

Args:
    name (`str`, *optional*):
        The group name to check; if None, checks the global setting.

Returns:
    `bool`: True if progress bars are disabled, False otherwise.
TNr   r   )r
   r   getjoinsplitr   s    r   r   r      s     $t+|&**9d;;;
&&*4000xx

3,- $
 #&&y$777r'   	log_levelc                 d    U [         R                  :X  a  g[        R                  " S5      S:X  a  gg)z
Determine if tqdm progress bars should be disabled based on logging level and environment settings.

see https://github.com/huggingface/huggingface_hub/pull/2000 and https://github.com/huggingface/huggingface_hub/pull/2698.
TTQDM_POSITIONz-1FN)loggingNOTSETosgetenv)r;   s    r   is_tqdm_disabledrB      s*     GNN"	yy!T)r'   c                   D   ^  \ rS rSrSrU 4S jrS\SS4U 4S jjrSrU =r	$ )	r      z
Class to override `disable` argument in case progress bars are globally disabled.

Taken from https://github.com/tqdm/tqdm/issues/619#issuecomment-619639324.
c                 t   > UR                  SS 5      n[        U5      (       a  SUS'   [        TU ]  " U0 UD6  g )Nr   Tdisable)popr   superr   )r   argskwargsr   	__class__s       r   r   tqdm.__init__   s:    zz&$'%d++ $F9$)&)r'   attrr   Nc                 T   >  [         TU ]  U5        g! [         a
    US:w  a  e  gf = f)zBFix for https://github.com/huggingface/huggingface_hub/issues/1603_lockN)rH   __delattr__AttributeError)r   rM   rK   s     r   rP   tqdm.__delattr__   s3    	G% 	w 	s    ''r"   )
r-   r.   r/   r0   r1   r   r2   rP   r3   __classcell__)rK   s   @r   r   r      s%    *   r'   r   c                   L    \ rS rSrSrS rS rS rSS\\	-  S-  SS4S	 jjr
S
rg)silent_tqdmi  z#Fake tqdm object that does nothing.c                     g r!   r"   )r   rI   rJ   s      r   r   silent_tqdm.__init__      r'   c                     U $ r!   r"   r#   s    r   r$   silent_tqdm.__enter__  r&   r'   c                     g r!   r"   )r   exc_type	exc_value	tracebacks       r   r+   silent_tqdm.__exit__  rX   r'   nNr   c                     g r!   r"   )r   r`   s     r   updatesilent_tqdm.update  rX   r'   r"   )   )r-   r.   r/   r0   r1   r   r$   r+   intfloatrb   r3   r"   r'   r   rU   rU     s5    -ed* 4  r'   rU   pathc           	   #     ^^#    [        U [        5      (       a  [        U 5      n U R                  S5       nU R	                  5       R
                  n[        SSUSU R                  S9mUR                  mS
S[        S-  S[        4UU4S	 jjjnX1l        Uv   TR                  5         SSS5        g! , (       d  f       g= f7f)u  
Open a file as binary and wrap the `read` method to display a progress bar when it's streamed.

First implemented in `transformers` in 2019 but removed when switched to git-lfs. Used in `huggingface_hub` to show
progress bar when uploading an LFS file to the Hub. See github.com/huggingface/transformers/pull/2078#discussion_r354739608
for implementation details.

Note: currently implementation handles only files stored on disk as it is the most common use case. Could be
      extended to stream any `BinaryIO` object but we might have to debug some corner cases.

Example:
```py
>>> with tqdm_stream_file("config.json") as f:
>>>     httpx.put(url, data=f)
config.json: 100%|█████████████████████████| 8.19k/8.19k [00:02<00:00, 3.72kB/s]
```
rbBTr   )unit
unit_scaletotalinitialdescsizeNr   c                 L   > T" U 5      nTR                  [        U5      5        U$ r!   )rb   len)rp   dataf_readpbars     r   _inner_read%tqdm_stream_file.<locals>._inner_read7  s!    $<DKKD	"Kr'   )r6   )
isinstancer2   r   openstatst_sizer   r   readre   bytesclose)rg   f
total_sizerv   rt   ru   s       @@r   tqdm_stream_filer     s     & $Dz	4AYY[((

 	cDj 	% 	 	
 

+ 
s   2CA2B1(	C1
B?;Cr:   clsc                     [        U [        5      (       a  [        U [        5      (       d  U " S0 UD6$ [	        U5      nU " SXBS.UD6$ )a  Create a progress bar.

For our `tqdm` subclass (or subclasses of it): respects all disable signals
(`HF_HUB_DISABLE_PROGRESS_BARS`, `disable_progress_bars()`, log level) and uses
`disable=None` for TTY auto-detection (see https://github.com/huggingface/huggingface_hub/pull/2000),
unless `TQDM_POSITION=-1` forces bars on (https://github.com/huggingface/huggingface_hub/pull/2698).

For other classes: does not inject `disable` or `name`. the custom class is fully
responsible for its own behavior. Vanilla tqdm defaults to `disable=False` (bar shows).
Omits `name` which vanilla tqdm rejects with `TqdmKeyError`. See https://github.com/huggingface/huggingface_hub/issues/4050.
)rF   r   r"   )rx   type
issubclassr   rB   )r   r;   r   rJ   rF   s        r   _create_progress_barr   C  sH     sD!!jd&;&;}V} y)G4w4V44r'   rj   T)rm   rn   rk   rl   r   
tqdm_class	_tqdm_barro   rm   rn   rk   rl   r   r   c        	         X    Ub  [        U5      $ [        U=(       d    [        UUUUUUU S9$ )N)r   r;   r   rk   rl   rm   rn   ro   )r   r   r   )	ro   r;   rm   rn   rk   rl   r   r   r   s	            r   _get_progress_bar_contextr   Y  sA     9%%
  $	 	r'   r!   )&r1   ior>   r@   	threadingr   collections.abcr   
contextlibr   r   pathlibr   typingr   	tqdm.autor   old_tqdm	constantsr
   r   dictr2   bool__annotations__r   r)   r   re   rB   set_lockRLockrU   BufferedReaderr   r   r   r   r"   r'   r   <module>r      s  BH 
  	   $ 2  ! & 4 (* T#t)_ )/, /,d)sTz )T )@8S4Z 84 8:
 
t 
8 4 ioo     *4#: *(23D3D*E * *Z UY 5h 5C 5sTz 5go 54 (,!
  :	
    * X% d{ Dr'   