+
    ~j&4                       a  R# t 0 t R t^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
Ht ^ RIHt ^ RIHt ^ RIHt ^RIHt / t] ^ k  ! R R	4      tR$R
 R lltR$R R lltR R lt ! R R]4      t]P5                  ]P6                  ! 4       4        ! R R4      t]
R R l4       tRR/R R lltRRR^ RRRRRRRRR R/R! R" lltR# )%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_BARSc                   ^   a  ] tR t^lt o RtR
V 3R lR lltV 3R lR ltV 3R lR ltR	tV t	R# )disable_progress_barsa  
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.
Nc                2   < V ^8  d   QhRS[ R,          RR/#    nameNreturnstr)format__classdict__s   "o/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/huggingface_hub/utils/tqdm.py__annotate__"disable_progress_bars.__annotate__   s     . .S4Z .4 .    c                p   Wn         \        R J d    \        P                  ! R4       R V n        R# \        V4      '       * V n        Vf    \        P                  4        R \        R&   R# \         Uu. uF   q"P                  V R24      '       g   K  VNK"  	  ppV F
  p\        V K  	  R \        V&   R# u upi )FzlCannot disable progress bars: environment variable `HF_HUB_DISABLE_PROGRESS_BARS=0` is set and has priority.N_global.)	r   r   warningswarn_should_reenableare_progress_bars_disabledprogress_bar_statesclear
startswith)selfr   keykeys_to_removes   &&  r   __init__disable_progress_bars.__init__   s    	'50MM~ %*D!$>t$D D<%%'-2	*-@_-@cNNVZU[[\S]D^cc-@N_%', &(-% `s   0B3B3c                   < V ^8  d   QhRR/# )r   r   r
    )r   r   s   "r   r   r      s      2 r   c                    V # Nr(   r"   s   &r   	__enter__disable_progress_bars.__enter__       r   c                   < V ^8  d   QhRR/# )r   r   Nr(   )r   r   s   "r   r   r      s     , , ,r   c                X    V P                   '       d   \        V P                  4       R # R # r*   )r   enable_progress_barsr   )r"   excs   &*r   __exit__disable_progress_bars.__exit__   s        + !r   )r   r   r*   )
__name__
__module____qualname____firstlineno____doc__r%   r,   r3   __static_attributes____classdictcell__r   s   @r   r
   r
   l   s(     *. .( , ,r   r
   c                6    V ^8  d   QhR\         R,          RR/# r   r   )r   s   "r   r   r      s     ) )sTz )T )r   c                ,   \         RJ d   \        P                  ! R4       R# V f    \        P	                  4        R\        R&   R# \         Uu. uF   qP                  V  R24      '       g   K  VNK"  	  ppV F
  p\        V K  	  R\        V &   R# u upi )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   r1   r1      s      $t+y	
 	|!!#)-I&)<[)<#RVQWWXz@Z##)<[!C#C( "$(D! \s   B.Bc                >    V ^8  d   QhR\         R,          R\        /# r   )r   bool)r   s   "r   r   r      s     8 8S4Z 84 8r   c                "   \         RJ d   R# V f   \        P                  RR4      '       * # V '       dC   V \        9   d   \        V ,          '       * # RP                  V P	                  R4      RR 4      p KJ  \        P                  RR4      '       * # )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      sw     $t+|&**9d;;;
&&*4000xx

3,-"&&y$777r   c                >    V ^8  d   QhR\         R\        R,          /# )r   	log_levelr   N)intr@   )r   s   "r   r   r      s     
 
 
t 
r   c                n    V \         P                  8X  d   R# \        P                  ! R4      R8X  d   R# R# )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)rG   s   &r   is_tqdm_disabledrO      s*     GNN"	yy!T)r   c                   N   a a ] tR t^t oRtV 3R ltV3R lV 3R lltRtVtV ;t	# )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                x   < VP                  R R4      p\        V4      '       d   RVR&   \        SV `  ! V/ VB  R# )r   NTdisable)popr   superr%   )r"   argskwargsr   	__class__s   &*, r   r%   tqdm.__init__   s:    zz&$'%d++ $F9$)&)r   c                $   < V ^8  d   QhRS[ RR/# )r   attrr   Nr   )r   r   s   "r   r   tqdm.__annotate__   s        r   c                \   <  \         SV `  V4       R#   \         d    TR8w  d   h  R# i ; i)zBFix for https://github.com/huggingface/huggingface_hub/issues/1603_lockN)rT   __delattr__AttributeError)r"   rZ   rW   s   &&r   r^   tqdm.__delattr__   s3    	G% 	w 	s    ++r(   )
r5   r6   r7   r8   r9   r%   r^   r:   r;   __classcell__)rW   r   s   @@r   r   r      s     *  r   r   c                   L   a  ] tR tRt o RtR tR tR tR
V 3R lR lltRt	V t
R	# )silent_tqdmi  z#Fake tqdm object that does nothing.c                    R # r*   r(   )r"   rU   rV   s   &*,r   r%   silent_tqdm.__init__      r   c                    V # r*   r(   r+   s   &r   r,   silent_tqdm.__enter__  r.   r   c                    R # r*   r(   )r"   exc_type	exc_value	tracebacks   &&&&r   r3   silent_tqdm.__exit__  rf   r   c                B   < V ^8  d   QhRS[ S[,          R,          RR/# )r   nNr   )rH   float)r   r   s   "r   r   silent_tqdm.__annotate__  s$      ed* 4 r   c                    R # r*   r(   )r"   ro   s   &&r   updatesilent_tqdm.update  rf   r   r(   N)   )r5   r6   r7   r8   r9   r%   r,   r3   rs   r:   r;   r<   s   @r   rc   rc     s&     -  r   rc   c                p    V ^8  d   QhR\         \        ,          R\        \        P                  ,          /# )r   pathr   )r   r   r   ioBufferedReader)r   s   "r   r   r     s)     * *4#: *(23D3D*E *r   c           
   #    aa"   \        V \        4      '       d   \        V 4      p V P                  R4      ;_uu_ 4       pV P	                  4       P
                  p\        RRV^ V P                  R7      oVP                  oRR VV3R lllpW1n        Vx  SP                  4        RRR4       R#   + '       g   i     R# ; i5i)	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BT)unit
unit_scaletotalinitialdescc                >    V ^8  d   QhR\         R,          R\        /# )r   sizeNr   )rH   bytes)r   s   "r   r   &tqdm_stream_file.<locals>.__annotate__7  s     	 	cDj 	% 	r   c                 L   < S! V 4      pSP                  \        V4      4       V# r*   )rs   len)r   dataf_readpbars   & r   _inner_read%tqdm_stream_file.<locals>._inner_read7  s!    $<DKKD	"Kr   N)rB   )

isinstancer   r   openstatst_sizer   r   readclose)rw   f
total_sizer   r   r   s   &   @@r   tqdm_stream_filer     s     & $Dz	4AYY[((

 	 	
 

+ 
s   ;CA'B0&
C0C	;	Cr   c                l    V ^8  d   QhR\         \        ,          R\        R\        R,          R\        /# )r   clsrG   r   Nr   )typeold_tqdmrH   r   )r   s   "r   r   r   C  s1     5 5h 5C 5sTz 5go 5r   c                    \        V \        4      '       d   \        V \        4      '       g	   V ! R/ VB # \	        V4      pV ! RRVRV/VB # )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.
rR   r   r(   )r   r   
issubclassr   rO   )r   rG   r   rV   rR   s   $$$, r   _create_progress_barr   C  sM     sD!!jd&;&;}V} y)G4w4T4V44r   r   r   r}   r|   r~   T
tqdm_class	_tqdm_barc                    V ^8  d   QhR\         R\        R\        R,          R\        R\         R\        R\         R,          R	\        \        ,          R,          R
\
        R,          R\        \
        ,          /
# )r   r   rG   r   Nr   r}   r~   r   r   r   r   )r   rH   r@   r   r   r   r   )r   s   "r   r   r   Y  s      
  :	
    * X% d{ Dr   c        	         b    Ve   \        V4      # \        T;'       g    \        VVVVVVV R7      # )N)r   rG   r   r}   r~   r   r   r   )r   r   r   )	r   rG   r   r   r}   r~   r   r   r   s	   $$$$$$$$$r   _get_progress_bar_contextr   Y  sD     9%%
  $	 	r   c                b    V ^8  d   Qh/ ^ \         9   d   \        \        \        3,          ;R&   # )r   r   )__conditional_annotations__dictr   r@   )r   s   "r   r   r      s+     B Bv * )T#t)_ )wBr   r*   )!r   r9   rx   rK   rM   	threadingr   collections.abcr   
contextlibr   r   pathlibr   typingr   	tqdm.autor   r   	constantsr   r   r
   r1   r   rO   set_lockRLockrc   r   r   r   r   )r   s   @r   <module>r      s   BH 
  	   $ 2  ! & 4 (*  )/, /,d)@8:
8 4 ioo     * *Z5TX 5, 	
     )- " r   