
    SThs                         d dl Z d dlmZmZmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ ddlmZmZmZmZ d Zd	 Zd
 Zd Zd Zd Zd Zd ZdededefdZd Zy)    N)reduceupdate_wrapperwraps)	signature)
accumulatechainrepeat)Callable   )combine_cells	fix_cellsmark_graphemessplit_graphemesc                       fd} |       S )zMCreate an infinite generator that plays all cycles of a spinner indefinitely.c               3   2   K   	          E d {    7 wN )spinners   d/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/alive_progress/animations/utils.py
inner_playz"spinner_player.<locals>.inner_play   s     y    s   r   )r   r   s   ` r   spinner_playerr   
   s    ! <    c                 4    fd}t        | |      \  |S )zGDecorator to include controllable borders in the outputs of a function.c                 4     t                fd       }|S )Nc                  <     | i |\  }}t        ||xs       S r   )r   )argskwargscontentrightfnleft_borderright_borders       r   inner_borderedz1bordered.<locals>.wrapper.<locals>.inner_bordered   s*    00NGU gu7LMMr   )r   )r    r#   r!   r"   s   ` r   wrapperzbordered.<locals>.wrapper   s#    	r	N 
	N r   )extract_fill_graphemes)bordersdefaultr$   r!   r"   s      @@r   borderedr(      s      !7w HKNr   c           	      r    d | xs ||fD        \  } }d t        t        | t        d            |      D        S )zLExtract the exact same number of graphemes as default, filling missing ones.c              3   @   K   | ]  }t        d  |D                yw)c              3   :   K   | ]  }t        |xs d         yw) N)r   ).0cs     r   	<genexpr>z3extract_fill_graphemes.<locals>.<genexpr>.<genexpr>%   s     ??173?s   N)tuple)r-   ps     r   r/   z)extract_fill_graphemes.<locals>.<genexpr>%   s     dAU?Q??d   c              3   @   K   | ]  \  }}t        |xs |        y wr   )r   )r-   tds      r   r/   z)extract_fill_graphemes.<locals>.<genexpr>&   s     Utq!N16"Ur2   r,   )zipr   r	   )textr'   s     r   r%   r%   #   s8    d$/RY[bIcdMD'Us5vbz3JG/TUUr   c                 t  	
 	
fd}|r0t        | t        j                  |t        |       z        z  d|       nd}t	        t        j                  t        j                  t        t        |      |                        t              |rdndc	
	k  sJ d d	        d z   |       S )a  Implement a sliding window over some content interspersed with a separator.
    It is very efficient, storing data in only one string.

    Note that the implementation is "static" in the sense that the content is pre-
    calculated and maintained static, but actually when the window slides both the
    separator and content seem to be moved.
    Also keep in mind that `right` is for the content, not the window.
    c               3   \   K   } 	 | dk  r| z  } n
| k\  r| z  } | | z     | z  } %w)Nr   r   )posr   initiallengthoriginalsteps    r   sliding_windowz-static_sliding_window.<locals>.sliding_window3   sN     Qwxx#cFl++4KC s   ),Nr,      zwindow slides inside content, z must be <= )	r   mathceillenr0   r   from_iterabler6   r	   )sepgapcontentsr<   r   r;   r?   adjusted_sepr   r=   r>   s      ` `  @@@r   static_sliding_windowrJ   )   s      JM9cDIIcCHn$==tDERTLE''(;(;C|@TV^<_(`abG\2ANHdX^!?x|T\S]^^wwGr   c                       fd} t        j                  |t               z        z  d|  t        d|||||       |       S )a  Implement a sliding window over some content on top of a background.
    It uses internally a static sliding window, but dynamically swaps the separator
    characters for the background ones, thus making it appear immobile, with the
    contents sliding over it.
    c               3   X   K   D ]   } t        d t        |       D               " y w)Nc              3   4   K   | ]  \  }}|d k(  r|n|  yw) Nr   )r-   r.   bs      r   r/   zAoverlay_sliding_window.<locals>.overlay_window.<locals>.<genexpr>N   s     Q$!QQ$YA-Qs   )r0   r6   )cells
backgroundwindows    r   overlay_windowz.overlay_sliding_window.<locals>.overlay_windowL   s0      	REQ#eZ:PQQQ	Rs   '*NrN   )rB   rC   rD   rJ   )rQ   rG   rH   r<   r   r;   rS   rR   s   `      @r   overlay_sliding_windowrT   E   sK    R tyy#j/)ABBGVLJ"4hwOFr   c                      d }t        ||       S )zCalculate the number of total combinations a few spinners should have together,
    can be used for example with cycles or with frames played at the same time.c                 :    | |z  t        j                  | |      z  S )z4Calculate the lowest common multiple of two numbers.)rB   gcdarO   s     r   lcmzcombinations.<locals>.lcmY   s    1uA&&r   )r   )numsrZ   s     r   combinationsr\   U   s    ' #tr   c                 .    t        | t              r| S | | fS )zKSplit options that apply to dual elements, either duplicating or splitting.)
isinstancer0   )optionss    r   split_optionsr`   `   s     %07Hw6HHr   c                      t        |       fd|D        }t        |      D cg c]  }t        |       }}t        t	        d |dg|z               }t        |       k(  sJ |S c c}w )zPCalculate the weighted spreading of the available space for all natural lengths.c              3   .   K   | ]  }z  |z    y wr   r   )r-   nactual_lengthtotals     r   r/   z"spread_weighted.<locals>.<genexpr>h   s     ;Q}u$q(;s   c                     | |z
  S r   r   rX   s     r   <lambda>z!spread_weighted.<locals>.<lambda>j   s
    QU r   r   )sumr   roundr0   map)rd   naturalslengthsxre   s   `   @r   spread_weightedrn   e   sh    ME;(;G!+G!45AuQx5G5C*GaS7]CDGw<=(((N 6s   A(funcsourceskip_n_paramsc                     | j                   }t        | |       |r| d| j                    | _         t        |       }|j                  t	        |j
                  j                               |d       }|| _        | S )z.Override signature to hide first n parameters.
N)
parameters)__doc__r   r   replacer0   rt   values__signature__)ro   rp   rq   original_docsigs        r   fix_signaturer{   o   sm    <<L4 &r$,,8
D/C
++s~~'<'<'>!?!O+
PCDKr   c                 0    t        |       }|dz  r|dz   S |S )z+Round a number to the nearest even integer.rA   )int)rc   rs     r   
round_evenr   {   s     AAE1q5 q r   )rB   	functoolsr   r   r   inspectr   	itertoolsr   r   r	   typingr
   utils.cellsr   r   r   r   r   r(   r%   rJ   rT   r\   r`   rn   r}   r{   r   r   r   r   <module>r      si     3 3  / /  S SV8 I
	 	( 	3 	!r   