
    STh+                     j   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ ddl	m
Z
mZmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ  edd      Zej                  fdddddZ edd      ZdddddZdddddZdddddZd Z e j>                  dd      dk7  Z d Z!d Z"d Z#d Z$d Z%d Z&y)    N)
namedtuple)Enum   )BARSSPINNERSTHEMES   )scrolling_spinner_factorysequential_spinner_factory)spinner_player)config_handler)print_cells)terminalShowzSPINNERS BARS THEMESfpslengthpatternc                    t         j                  t        t         j                  t        t         j
                  t        i}| |v sJ d        ||    |||       y)a<  Start a show, rendering all styles simultaneously in your screen.

    Args:
        fps (float): the desired frames per second refresh rate
        show (Show): chooses which show will run
        length (int): the bar length, as in configuration options
        pattern (Pattern): to filter objects displayed

    zJWhich show do you want? We have Show.SPINNERS, Show.BARS, and Show.THEMES.r   N)r   r   show_spinnersr   	show_barsr   show_themes)showr   r   r   
show_funcss        b/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/alive_progress/styles/exhibit.pyshowtimer      sU     	}		9[J
 : .  . .JtVW=    Infoztitle descr techc           
      >   t        t        |      }t        d |D              dz   }t        d |j                         D              dz   }|j	                         D cg c]  \  }}t        |d| d||       }}}t        ddd	      }	t        | ||	|       y
c c}}w )a  Start a spinner show, rendering all styles simultaneously in your screen.

    Args:
        fps (float): the desired frames per second rendition
        length (int): the bar length, as in configuration options
        pattern (Pattern): to filter objects displayed

    c              3   2   K   | ]  }t        |        y wNlen.0ss     r   	<genexpr>z show_spinners.<locals>.<genexpr>4        3Q#a&3   r	   c              3   4   K   | ]  }|j                     y wr!   )naturalr$   s     r   r'   z show_spinners.<locals>.<genexpr>5   s     ;Aaii;s   ^ )Spinnersz&including their unknown bar renditions)zSpinners generate and run fluid animations, with a plethora of special effects, including static frames, scrolling, bouncing, sequential, alongside or delayed!uf   Each type supports several customization options that allow some very cool tricks, so be creative 😜)zXSpinners are advanced generators that dynamically output frames to generate some effect.zThese frames are gathered into full cycles, where the spinner yields. This enables to mix and match them, without ever breaking animations.z\All spinners compile their full animations only once before displaying, so they are faaaast!zIThe spinner compiler brings the super cool `.check()` tool, check it out!zgA spinner have a specific "natural" length, and know how to spread its contents over any desired space.titledescrtechN)_filterr   maxvaluesitems_spinner_genr   _showtime_gen)
r   r   r   selectedmax_name_lengthmax_naturalkr&   gensinfos
             r   r   r   *   s     x)H3(33a7O;):;;a?KPXP^P^P`a1LAa0 01A{CaDaD'&'D #tT6*! bs   Bc           
          t        t        |      }t        d |D              dz   }|j                         D cg c]  \  }}t	        |d| d|       }}}t        ddd      }t        | |||       y	c c}}w )
a  Start a bar show, rendering all styles simultaneously in your screen.

    Args:
        fps (float): the desired frames per second rendition
        length (int): the bar length, as in configuration options
        pattern (Pattern): to filter objects displayed

    c              3   2   K   | ]  }t        |        y wr!   r"   r$   s     r   r'   zshow_bars.<locals>.<genexpr>S   r(   r)   r	   >r-   )Barszplaying all their hidden tricks)zA bar can render any percentage with a plethora of effects, including dynamic chars, tips, backgrounds, transparent fills, underflows and overflows!ut   Bars also support some advanced use cases, which do not go only forward... Just use manual mode and be creative 😜)z`Bars are advanced closures that render percentages with some effect, in a specific fixed length.zPBars are not compiled, but support the super cool `.check()` tool, check it out!zJFurthermore, bars can render any external spinners inside its own borders.r/   N)r3   r   r4   r6   _bar_genr   r8   )	r   r   r   r9   r:   r<   br=   r>   s	            r   r   r   I   s     tW%H3(33a7O?G~~?OPtq!H!O,@,-2PDP9=\	]D #tT6* Qs   A5c           
         t        t        |      }t        d |D              dz   }|j                         D ci c]  \  }}|t	        di | }}}t        d |j                         D              }|j                         D 	cg c]  \  }}	t        |d| d|	|       }
}}	t        ddd	      }t        | |
||       y
c c}}w c c}	}w )a  Start a theme show, rendering all styles simultaneously in your screen.

    Args:
        fps (float): the desired frames per second rendition
        length (int): the bar length, as in configuration options
        pattern (Pattern): to filter objects displayed

    c              3   2   K   | ]  }t        |        y wr!   r"   r$   s     r   r'   zshow_themes.<locals>.<genexpr>l   r(   r)   r	   c              3   H   K   | ]  }|j                   j                    y wr!   )spinnerr+   )r%   ts     r   r'   zshow_themes.<locals>.<genexpr>n   s     AAaii''As    "rA   r-   )Themesz7featuring their bar, spinner and unknown bar companions)z@A theme is an aggregator, it wraps styles that go well together.)zThemes are syntactic sugar, not actually configuration variables (they are elided upon usage, only their contents go into the config).zcBut you can surely customize them, just send any additional config parameters to override anything.r/   N )	r3   r   r4   r6   r   r5   
_theme_genr   r8   )r   r   r   r9   r:   r<   vthemesr;   cr=   r>   s               r   r   r   b   s     vw'H3(33a7O191ABAa$!$$BFBAAAKNTlln]daJ!Ao.`./![A]D]SS%&D #tT6* C]s   CCc                     t        j                  |xs d      }| j                         D ci c]  \  }}|j                  |      s|| }}}|st	        d| d      |S c c}}w )Nr-   z#Nothing was selected with pattern "z".)recompiler6   search
ValueError)sourcer   pr<   rM   r9   s         r   r3   r3   z   sb    


7=b!A!'?A188A;1?H?>wirJKKO @s   A"A"ALIVE_BAR_EXHIBIT_FULL_INFO10c                 
    t         j                  j                         st        d      d d}d!dt	         |d       |j
                   z   t        fd|j                  D        d      z    |d      z   t        fd	|j                  D        d      z    |d
d      z   ddi}t        dt        dt         xs d                  xs dc t        d  fd|D        D              }d}t         |t        d|t        |j                               z
  dz
                    }t        t        d                }	t!        j"                         d z  ddf\  }
}}}|
|z
  |
}}
t%        j&                         }|j)                          	 	 t+        j,                         \  }}ddt/        |	      f}t1        |||       |j3                          t5                |j                  |||
z
  z        dt/        |      f}t1        |||       |j3                          |D cg c]  }t/        |       }}t7        |d      D ]3  \  }}||kD  r n)t5                t1        |||       |j3                          5 |dz  }t!        j"                         }t!        j8                  t        d|
||z  z   |z
               t5        d|dz
   dd       =c c}w # t:        $ r Y nw xY w	 |j=                          y # |j=                          w xY w)"Nz-This must be run on a tty connected terminal.Fc                 @    t        | |d      j                  d      fS )NF)rightwrap   )center)r
   pause)rI   rs     r   r0   z_showtime_gen.<locals>.title   s"    (!%@FFbFQRRr   c                 2    t        |r|  d| dn| d      fS )Nu    👏, !F)r\   )r
   )mr&   s     r   messagez_showtime_gen.<locals>.message   s#    (aA3gaS):QeTUUr   zNow on stage...c              3   .   K   | ]  } |        y wr!   rK   r%   dre   s     r   r'   z _showtime_gen.<locals>.<genexpr>   s     00   rK   zTechnical detailsc              3   .   K   | ]  } |        y wr!   rK   rg   s     r   r'   z _showtime_gen.<locals>.<genexpr>   s     //ri   u
   Enjoy 🤩Tintermixg      N@g       @g      .@(   c              3   &   K   | ]	  \  }}|  y wr!   rK   )r%   _xs      r   r'   z _showtime_gen.<locals>.<genexpr>   s     TTQqTs   c              3   Z   K   | ]"  }t        |      |j                  f      f $ y wr!   )nextsend)r%   genr   r   s     r   r'   z _showtime_gen.<locals>.<genexpr>   s'     SstCy#((C=*ABSs   (+zfps: {:.1f}   r   waves      ?r   zWelcome to alive-progress! g        z[A)end)Fr!   )sysstdoutisattyUserWarningr   r0   sumr1   r2   minr4   floatr   r#   formatr   timeperf_counterr   get_termhide_cursorosget_terminal_sizerq   r   clear_end_lineprint	enumeratesleepKeyboardInterruptshow_cursor)r   r=   r>   r   r0   info_spinnerscolsfps_monitorinfo_playerlogostartr   frameline_numcurrenttermlinesrs   content	fragmentsre   s   `  `                @r   r8   r8      s   ::IJJSV /
!
"TZZ !0TZZ0"56 %&' /TYY/4	5
 ,%& M c3r5#456"KCTSdSTTDK s1dSASASTWAX=Y6Y\]6]/^!_`K(7+-.D$($5$5$7c1a$G!E5%U]E7ED..0KD%0#tDzAEtT*!G%%ew&?@#tKGXXDdD)!,01StCy1G1'0!'< &#)e#ItT2##%& QJE'')GJJs2uuu}4w>?@E(Q,q)t4/  2  s2   BK K
/B K 	KK0 KK0 0Lc           	   #     K   d \  }}d||j                   z
  z  }t         |             }t         ||            }t        |      |j                   z   t        |       z   |z   dz   dz    	 |dt        |      d| dt        |      df w)Nrw      r	   |z| z |)r+   exhibit_spinnerr#   rq   )namespinner_factoryr;   r   r   blanksspinner_genunknown_gens           r   r7   r7      s     KC{_%<%<<=F!/"34K!/&"9:K
f+//
/#d)
;f
Dq
H1
LL
sD-tT4kARTWXX s   B
Bc              #   >   K   t        |       }	 t        |       wr!   )r   rq   )rH   players     r   r   r      s"     G$F
6l s   c              #      K   d \  }}t         ||      |      }t        |       |z   dz   dz    	 | dt        |      d   f w)Nr	   r   rw   r   )exhibit_barr#   rq   )r   bar_factoryr   r   bar_gens        r   rC   rC      sW     KC+f-s3G
d)f
q
 1
$$
Cgq))) s   AAc              #     	
K   t        |dz        
	 d
fdt        
dz        ft        
dz        t        
dz         ffD ]]  \  }}t        ||      D ]  }|
z  } | |      |f  |
z  }t        t        |dz              D ]  }| j                  |      |f  _ t        j                         dz   		
fdt        
      D        D ]  } | |      |f  t        j                         d }}t        t        |dz              D ]  }| |       z   } | |      |f  t        t        |dz              D ]  }| |       d|z  z  z   } | |      |f   t        t        |dz              D ]  } | |      |f  ww)	N   r         ?r   r	   c              3   4   K   | ]  }d |z  z  z
    yw)rv   NrK   )r%   ro   factortotals     r   r'   zexhibit_bar.<locals>.<genexpr>   s     FAQZ%//Fs   c                  6    t        j                          dz
  dz  S )Nr   g?)randomrK   r   r   <lambda>zexhibit_bar.<locals>.<lambda>   s    FMMOb4HB3N r   gp=
ף?)intrangerz   r   )barr   r&   rI   pospercentrn   measuregiggler   r   s            @@r   r   r      s    aLE
JC
O 4s52:ETUI6WW 	0DAqQ{ ,+'lG++, %iG3sQw<( 0ggg&//0	0 1$FuF 	(Gg,''	( !--/+Ns37|$ 	(A(Gg,''	( s37|$ 	(A419 44Gg,''	( s37|$ 	(Ag,''	(3 s   FFc           
   #     K   d \  }}|j                  ||j                        }t        ||      }t        |j                  |      }d||j                  j                  z
  z  }t        |j                               }	t        |       d|z  z   |z   dz   dz    	 | dt        |      d   dt        |	      |dt        |      d   f .w)Nr   r	   r   rt   rw   r   )r   unknownr   rH   r+   r   r#   rq   )
r   configr;   r   r   r   bar_stdbar_unknownr   rH   s
             r   rL   rL      s     KC
**VV^^
,C#s#Gckk3/K{V^^%;%;;<Ffnn./G
d)a&j
 ;
.
2Q
66
S$w-*CgTR]M^_`Mabb s   CC)'r   r   rQ   r{   r   collectionsr   enumr   internalr   r   r   animations.spinnersr
   r   animations.utilsr   core.configurationr   utils.cellsr   utilsr   r   r   r   r   r   r   r3   getenv_INFOr8   r7   r   rC   r   rL   rK   r   r   <module>r      s    	  	 
  "  , , W - / % F*+ -- >T4 >( &,- dD +> $ +2 D$ +0 			/5<;|Y*(>	cr   