ó
    OÎhB8  ã                  óà  • S r SSKJr  SSKrSSK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JrJrJrJrJrJrJrJr  SSKJr  SSKJr  SSKJrJrJr  SSKJrJrJr  SS	K J!r!  SS
K"J#r#  SSK$J%r%  SSK&J'r'J(r(J)r)J*r*J+r+J,r,  SSK-J.r.J/r/  SSK0J1r1J2r2  SSK3J4r4J5r5  SSK6J7r7  SSK8J9r9  SSK:J;r;J<r<  S/r=\%r>\?" \SS5      r@S S jrA\" S5      rB " S S5      rC " S S\/5      rD\" SSS9rE " S S\\E   5      rFg)!z‹
Progress bar implementation on top of prompt_toolkit.

::

    with ProgressBar(...) as pb:
        for item in pb(data):
            ...
é    )ÚannotationsN)	ÚCallableÚGenericÚIterableÚIteratorÚSequenceÚSizedÚTextIOÚTypeVarÚcast)ÚApplication)Úget_app_session)Ú	ConditionÚis_doneÚrenderer_height_is_known)ÚAnyFormattedTextÚStyleAndTextTuplesÚto_formatted_text)ÚInput)ÚKeyBindings)ÚKeyPressEvent)ÚConditionalContainerÚFormattedTextControlÚHSplitÚLayoutÚVSplitÚWindow)Ú	UIContentÚ	UIControl)ÚAnyDimensionÚD)Ú
ColorDepthÚOutput)Ú	BaseStyle)Úin_main_threadé   )Ú	FormatterÚcreate_default_formattersÚProgressBarÚSIGWINCHc                óŒ   ^ • [        5       nUR                  S5      SS j5       nT b  UR                  S5      SU 4S jj5       nU$ )zi
Key bindings handled by the progress bar.
(The main thread is not supposed to handle any key bindings.)
zc-lc                óL   • U R                   R                  R                  5         g ©N)ÚappÚrendererÚclear)Úevents    Úg/home/mande/repo/quber/.venv/lib/python3.13/site-packages/prompt_toolkit/shortcuts/progress_bar/base.pyÚ_clearÚ#create_key_bindings.<locals>._clearI   s   € à�	‰	×Ñ× Ñ Õ"ó    zc-cc                ó   >• Tc   eT" 5         g)zMKill the 'body' of the progress bar, but only if we run from the main thread.N© )r1   Úcancel_callbacks    €r2   Ú
_interruptÚ'create_key_bindings.<locals>._interruptO   s   ø€ ð #Ñ.Ð.Ð.ÙÕr5   )r1   ÚEÚreturnÚNone)r   Úadd)r8   Úkbr3   r9   s   `   r2   Úcreate_key_bindingsr@   B   sO   ø€ ô
 
‹€Bà‡V�VˆEƒ]ó#ó ð#ð Ñ"à	�‰�‹ö	ó 
ð	ð
 €Ir5   Ú_Tc                  óª   • \ rS rSrSr          S
                     SS jjrSS jrSS jr    S         SS jjrSS jr	S	r
g)r)   é[   aÞ  
Progress bar context manager.

Usage ::

    with ProgressBar(...) as pb:
        for item in pb(data):
            ...

:param title: Text to be displayed above the progress bars. This can be a
    callable or formatted text as well.
:param formatters: List of :class:`.Formatter` instances.
:param bottom_toolbar: Text to be displayed in the bottom toolbar. This
    can be a callable or formatted text.
:param style: :class:`prompt_toolkit.styles.BaseStyle` instance.
:param key_bindings: :class:`.KeyBindings` instance.
:param cancel_callback: Callback function that's called when control-c is
    pressed by the user. This can be used for instance to start "proper"
    cancellation if the wrapped code supports it.
:param file: The file object used for rendering, by default `sys.stderr` is used.

:param color_depth: `prompt_toolkit` `ColorDepth` instance.
:param output: :class:`~prompt_toolkit.output.Output` instance.
:param input: :class:`~prompt_toolkit.input.Input` instance.
Nc                ó°  • Xl         U=(       d
    [        5       U l        X0l        / U l        X@l        XPl        X`l        U R                  c  [        5       (       a  SS jnX°l        X€l	        U	=(       d    [        5       R                  U l        U
=(       d    [        5       R                  U l        S U l        SU l        [        R                   " 5       U l        g )Nc                 ót   • [         R                  " [         R                  " 5       [        R                  5        g r-   )ÚosÚkillÚgetpidÚsignalÚSIGINTr7   r5   r2   Ú!keyboard_interrupt_to_main_threadÚ?ProgressBar.__init__.<locals>.keyboard_interrupt_to_main_thread�   s   € Ü—’œŸ	š	›¤V§]¡]Õ3r5   F©r<   r=   )Útitler(   Ú
formattersÚbottom_toolbarÚcountersÚstyleÚkey_bindingsr8   r%   Úcolor_depthr   ÚoutputÚinputÚ_threadÚ_has_sigwinchÚ	threadingÚEventÚ_app_started)ÚselfrN   rO   rP   rR   rS   r8   ÚfilerT   rU   rV   rK   s               r2   Ú__init__ÚProgressBar.__init__v   s«   € ð Œ
Ø$×CÔ(AÓ(CˆŒØ,ÔØ:<ˆŒØŒ
Ø(ÔØ.Ôð
 ×ÑÑ'¬N×,<Ñ,<ô4ð $EÔ ð 'ÔØ×8¤Ó 1× 8Ñ 8ˆŒØ×5œoÓ/×5Ñ5ˆŒ
à04ˆŒà"ˆÔÜ%ŸOšOÓ-ˆÕr5   c                ó&  ^ • [        [        [        U 4S j5      SSS9[        U 4S j5      S9n[        [        [        U 4S jSS	9S
SS9[        ) [
        -  [        U 4S j5      -  S9nSU 4S jjnT R                   Vs/ s H6  n[        [        T UT R                  5      [        R                  " X45      S9PM8     nn[        S[        [        U[        UU 4S jS9[        5       U/5      5      T R                  T R                   ST R"                  T R$                  T R&                  S9T l        SU 4S jjn[*        R,                  " 5       n[.        R0                  " UR2                  U4S9T l        T R4                  R7                  5         T $ s  snf )Nc                 ó   >• T R                   $ r-   ©rN   ©r\   s   €r2   Ú<lambda>Ú'ProgressBar.__enter__.<locals>.<lambda>¤   s	   ø€ ¨T¯ZªZr5   r&   zclass:progressbar,title)ÚheightrR   c                 ó    >• T R                   S L$ r-   rb   rc   s   €r2   rd   re   ¨   s   ø€  T§Z¡Z°tÑ%;r5   )Úfilterc                 ó   >• T R                   $ r-   ©rP   rc   s   €r2   rd   re   ®   s   ø€ ˜D×/Ò/r5   zclass:bottom-toolbar.text)rR   zclass:bottom-toolbar)rR   rf   c                 ó    >• T R                   S L$ r-   rj   rc   s   €r2   rd   re   µ   s   ø€  × 3Ñ 3¸4Ñ ?r5   c                ó"   >• U R                  TS9$ )N)Úprogress_bar)Ú	get_width)Ú	formatterr\   s    €r2   Úwidth_for_formatterÚ2ProgressBar.__enter__.<locals>.width_for_formatter¸   s   ø€ ð ×&Ñ&°DÐ&Ð9Ð9r5   )ÚcontentÚwidthgš™™™™™©?c                 ód   >• [        [        T R                  5      [        T R                  5      S9$ )N)Ú	preferredÚmax)r!   ÚlenrQ   rc   s   €r2   rd   re   Í   s!   ø€ ¬1Ü*-¨d¯m©mÓ*<Ä#ÀdÇmÁmÓBTò,r5   )rf   g333333Ó?)Úmin_redraw_intervalÚlayoutrR   rS   Úrefresh_intervalrT   rU   rV   c                 óÐ   >•  TR                   R                  TR                  R                  S9  g ! [         a*  n [
        R                  " 5         [        U 5         S n A g S n A ff = f)N)Úpre_run)r.   Úrunr[   ÚsetÚBaseExceptionÚ	tracebackÚ	print_excÚprint)Úer\   s    €r2   r}   Ú"ProgressBar.__enter__.<locals>.runß   sK   ø€ ðØ—‘—‘ T×%6Ñ%6×%:Ñ%:�Ò;øÜ ó Ü×#Ò#Ô%Ü�a—‘ûðús   ƒ-1 ±
A%» A Á A%)ÚtargetÚargs)ro   r'   r<   r    rM   )r   r   r   r   r   r   rO   Ú_ProgressControlr8   Ú	functoolsÚpartialr   r   r   r   rR   rS   rT   rU   rV   r.   ÚcontextvarsÚcopy_contextrY   ÚThreadr}   rW   Ústart)r\   Útitle_toolbarrP   rp   ÚfÚprogress_controlsr}   Úctxs   `       r2   Ú	__enter__ÚProgressBar.__enter__    s…  ø€ ä,ÜÜ$Ô%7Ó8ØØ/ñô
 Ô;Ó<ñ
ˆô .ÜÜ$Ü/Ð7Rñð -Øñô �8Ü&ñ'äÔ?Ó@ñAñ
ˆ÷	:ð —_’_ó
ò
 %�ô	 Ü(¨¨q°$×2FÑ2FÓGÜ×'Ò'Ð(;Ó?ôñ %ð 	ð 
ô '2Ø $ÜÜà%ÜØ-ô$ñô ›Ø&ð
óóð —*‘*Ø×*Ñ*Ø Ø×(Ñ(Ø—;‘;Ø—*‘*ñ-'
ˆŒ÷4	ô $/×#;Ò#;Ó#=ˆä ×'Ò'¨s¯w©w¸c¸VÑDˆŒØ�‰×ÑÔàˆùò]
s   Â =Fc                ó^  • U R                   R                  5         U R                  R                  (       aP  U R                  R                  b9  U R                  R                  R                  U R                  R                  5        U R                  b  U R                  R                  5         g g r-   )	r[   Úwaitr.   Ú
is_runningÚloopÚcall_soon_threadsafeÚexitrW   Újoin)r\   Úas     r2   Ú__exit__ÚProgressBar.__exit__í   so   € ð 	×Ñ×ÑÔ ð �8‰8×× 4§8¡8§=¡=Ñ#<Ø�H‰H�M‰M×.Ñ.¨t¯x©x¯}©}Ô=à�<‰<Ñ#Ø�L‰L×ÑÕð $r5   c                óR   • [        XX#US9nU R                  R                  U5        U$ )a  
Start a new counter.

:param label: Title text or description for this progress. (This can be
    formatted text as well).
:param remove_when_done: When `True`, hide this progress bar.
:param total: Specify the maximum value if it can't be calculated by
    calling ``len``.
)ÚlabelÚremove_when_doneÚtotal)ÚProgressBarCounterrQ   Úappend)r\   ÚdatarŸ   r    r¡   Úcounters         r2   Ú__call__ÚProgressBar.__call__ú   s.   € ô  %Ø˜eÈeñ
ˆð 	�‰×Ñ˜WÔ%Øˆr5   c                ó8   • U R                   R                  5         g r-   )r.   Ú
invalidaterc   s    r2   r©   ÚProgressBar.invalidate  s   € Ø�‰×ÑÕr5   )r[   rX   rW   r.   rP   r8   rT   rQ   rO   rV   rS   rU   rR   rN   )
NNNNNNNNNN)rN   r   rO   zSequence[Formatter] | NonerP   r   rR   zBaseStyle | NonerS   zKeyBindings | Noner8   úCallable[[], None] | Noner]   zTextIO | NonerT   zColorDepth | NonerU   zOutput | NonerV   zInput | Noner<   r=   )r<   r)   )r›   Úobjectr<   r=   ©NÚ FN)
r¤   zIterable[_T] | NonerŸ   r   r    Úboolr¡   ú
int | Noner<   zProgressBarCounter[_T]rM   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r^   r’   rœ   r¦   r©   Ú__static_attributes__r7   r5   r2   r)   r)   [   sí   † ñð8 #'Ø15Ø+/Ø"&Ø+/Ø59Ø"Ø)-Ø $Ø"ð(.àð(.ð /ð(.ð )ð	(.ð
  ð(.ð )ð(.ð 3ð(.ð ð(.ð 'ð(.ð ð(.ð ð(.ð 
õ(.ôTKôZ ð %)Ø"$Ø!&Ø ðà!ðð  ðð ð	ð
 ðð 
 õ÷,r5   c                  óP   • \ rS rSrSr        S	S jrS
S jrSS jrSS jrSr	g)r‡   i  z$
User control for the progress bar.
c                ó<   • Xl         X l        [        U5      U l        g r-   )rm   ro   r@   Ú_key_bindings)r\   rm   ro   r8   s       r2   r^   Ú_ProgressControl.__init__  s   € ð )ÔØ"ŒÜ0°ÓAˆÕr5   c                óJ  ^• / mU R                   R                   HD  n U R                  R                  U R                   X15      nTR                  [        U5      5        MF     SU4S jjn[        U[        T5      SS9$ ! [         a    [
        R                  " 5         Sn N]f = f)NÚERRORc                ó   >• TU    $ r-   r7   )ÚiÚitemss    €r2   Úget_lineÚ1_ProgressControl.create_content.<locals>.get_line/  s   ø€ Ø˜‘8ˆOr5   F)rÀ   Ú
line_countÚshow_cursor)r¾   Úintr<   r   )rm   rQ   ro   Úformatr   r€   r�   r£   r   r   rw   )r\   rs   rf   ÚprÚtextrÀ   r¿   s         @r2   Úcreate_contentÚ_ProgressControl.create_content#  s�   ø€ Ø*,ˆà×#Ñ#×,Ô,ˆBðØ—~‘~×,Ñ,¨T×->Ñ->ÀÓJ�ð
 �L‰LÔ*¨4Ó0Ö1ñ -÷	ô  (´s¸5³zÈuÑUÐUøô !ó Ü×#Ò#Ô%Ø’ðús   ž&A>Á>!B"Â!B"c                ó   • g)NTr7   rc   s    r2   Úis_focusableÚ_ProgressControl.is_focusable4  s   € Ør5   c                ó   • U R                   $ r-   )r¹   rc   s    r2   Úget_key_bindingsÚ!_ProgressControl.get_key_bindings7  s   € Ø×!Ñ!Ð!r5   )r¹   ro   rm   N)rm   r)   ro   r'   r8   r«   r<   r=   )rs   rÄ   rf   rÄ   r<   r   ©r<   r¯   )r<   r   )
r±   r²   r³   r´   rµ   r^   rÈ   rË   rÎ   r¶   r7   r5   r2   r‡   r‡     sG   † ñðBà!ðBð ðBð 3ð	Bð
 
ôBôVô"÷"r5   r‡   Ú_CounterItemT)Ú	covariantc                  ó  • \ rS rSrSr    S           SS jjrSS jrSS jr\SS j5       r	\	R                  SS j5       r	\SS	 j5       r\R                  SS
 j5       r\SS j5       r\SS j5       r\SS j5       rSrg)r¢   i>  zD
An individual counter (A progress bar can have multiple counters).
Nc                ó(  • [         R                   R                  5       U l        S U l        Xl        X l        SU l        X0l        X@l        SU l	        U   Uc    [        [        [        U5      5      U l        g XPl        g ! [         a
    S U l         g f = f)Nr   F)ÚdatetimeÚnowÚ
start_timeÚ	stop_timerm   r¤   Úitems_completedrŸ   r    Ú_donerw   r   r	   r¡   Ú	TypeError)r\   rm   r¤   rŸ   r    r¡   s         r2   r^   ÚProgressBarCounter.__init__C  s…   € ô #×+Ñ+×/Ñ/Ó1ˆŒØ37ˆŒØ(ÔØŒ	Ø ˆÔØŒ
Ø 0ÔØˆŒ
Ùà‰=ð"Ü ¤¤e¨TÓ!2Ó3�•
ð �Jøô ó "Ø!�–
ð"ús   ÁA= Á=BÂBc              #  óÀ   #   • U R                   b7   U R                    H  nUv •  U R                  5         M     SU l        SU l        g [	        S5      e! SU l        f = f7f)NTz No data defined to iterate over.)r¤   Úitem_completedÚdoneÚstoppedÚNotImplementedError)r\   Úitems     r2   Ú__iter__ÚProgressBarCounter.__iter__]  s[   é € Ø�9‰9Ñ ð
$Ø ŸIœI�DØ’JØ×'Ñ'Ö)ñ &ð
 !�”	ð  $�•ä%Ð&HÓIÐIøð  $�•üs   ‚A‘.A ¿AÁ	AÁAc                ób   • U =R                   S-  sl         U R                  R                  5         g)zm
Start handling the next item.

(Can be called manually in case we don't have a collection to loop through.)
r&   N)rÙ   rm   r©   rc   s    r2   rÞ   Ú!ProgressBarCounter.item_completedm  s'   € ð 	×Ò Ñ!ÕØ×Ñ×$Ñ$Õ&r5   c                ó   • U R                   $ )a  Whether a counter has been completed.

Done counter have been stopped (see stopped) and removed depending on
remove_when_done value.

Contrast this with stopped. A stopped counter may be terminated before
100% completion. A done counter has reached its 100% completion.
)rÚ   rc   s    r2   rß   ÚProgressBarCounter.donev  s   € ð �z‰zÐr5   c                óš   • Xl         Xl        U(       a8  U R                  (       a&  U R                  R                  R                  U 5        g g g r-   )rÚ   rà   r    rm   rQ   Úremove©r\   Úvalues     r2   rß   rè   ‚  s8   € àŒ
ØŒæ�T×*×*Ø×Ñ×&Ñ&×-Ñ-¨dÕ3ð +ˆ5r5   c                ó   • U R                   SL$ )ay  Whether a counter has been stopped.

Stopped counters no longer have increasing time_elapsed. This distinction is
also used to prevent the Bar formatter with unknown totals from continuing to run.

A stopped counter (but not done) can be used to signal that a given counter has
encountered an error but allows other counters to continue
(e.g. download X of Y failed). Given how only done counters are removed
(see remove_when_done) this can help aggregate failures from a large number of
successes.

Contrast this with done. A done counter has reached its 100% completion.
A stopped counter may be terminated before 100% completion.
N)rØ   rc   s    r2   rà   ÚProgressBarCounter.stoppedŠ  s   € ð  �~‰~ TÐ)Ð)r5   c                óŒ   • U(       a6  U R                   (       d$  [        R                  R                  5       U l         g g S U l         g r-   )rØ   rÕ   rÖ   rë   s     r2   rà   rî   œ  s0   € æà—>—>Ü!)×!2Ñ!2×!6Ñ!6Ó!8�•ð "ð "ˆD�Nr5   c                ój   • U R                   c  gU R                  S-  [        U R                   S5      -  $ )Nr   éd   r&   )r¡   rÙ   rv   rc   s    r2   Ú
percentageÚProgressBarCounter.percentage¦  s0   € à�:‰:ÑØà×'Ñ'¨#Ñ-´°D·J±JÀÓ0BÑBÐBr5   c                ó¤   • U R                   c+  [        R                  R                  5       U R                  -
  $ U R                   U R                  -
  $ )z8
Return how much time has been elapsed since the start.
)rØ   rÕ   rÖ   r×   rc   s    r2   Útime_elapsedÚProgressBarCounter.time_elapsed­  s?   € ð
 �>‰>Ñ!Ü×$Ñ$×(Ñ(Ó*¨T¯_©_Ñ<Ð<à—>‘> D§O¡OÑ3Ð3r5   c                ó  • U R                   b  U R                  (       d  gU R                  (       d  U R                  (       a  [        R
                  " S5      $ U R                  SU R                  -
  -  U R                  -  $ )z'
Timedelta representing the time left.
Nr   rñ   )r¡   rò   rß   rà   rÕ   Ú	timedeltarõ   rc   s    r2   Ú	time_leftÚProgressBarCounter.time_left·  sX   € ð
 �:‰:Ñ T§_§_ØØ�Y�Y˜$Ÿ,Ÿ,Ü×%Ò% aÓ(Ð(à×$Ñ$¨¨d¯o©oÑ(=Ñ>ÀÇÁÑPÐPr5   )rÚ   r¤   rß   rÙ   rŸ   rm   r    r×   rØ   rà   r¡   r­   )rm   r)   r¤   zIterable[_CounterItem] | NonerŸ   r   r    r¯   r¡   r°   r<   r=   )r<   zIterator[_CounterItem]rM   rÐ   )rì   r¯   r<   r=   )r<   Úfloat)r<   zdatetime.timedelta)r<   zdatetime.timedelta | None)r±   r²   r³   r´   rµ   r^   rã   rÞ   Úpropertyrß   Úsetterrà   rò   rõ   rù   r¶   r7   r5   r2   r¢   r¢   >  s÷   † ñð /3Ø"$Ø!&Ø ðà!ðð ,ðð  ð	ð
 ðð ðð 
õô4Jô 'ð ó	ó ð	ð 
‡[�[ó4ó ð4ð ó*ó ð*ð" ‡^�^ó"ó ð"ð óCó ðCð ó4ó ð4ð ó	Qó ó	Qr5   r¢   )r8   r«   r<   r   )Grµ   Ú
__future__r   rŠ   rÕ   rˆ   rF   rI   rY   r€   Útypingr   r   r   r   r   r	   r
   r   r   Úprompt_toolkit.applicationr   Ú"prompt_toolkit.application.currentr   Úprompt_toolkit.filtersr   r   r   Úprompt_toolkit.formatted_textr   r   r   Úprompt_toolkit.inputr   Úprompt_toolkit.key_bindingr   Ú(prompt_toolkit.key_binding.key_processorr   Úprompt_toolkit.layoutr   r   r   r   r   r   Úprompt_toolkit.layout.controlsr   r   Úprompt_toolkit.layout.dimensionr    r!   Úprompt_toolkit.outputr"   r#   Úprompt_toolkit.stylesr$   Úprompt_toolkit.utilsr%   rO   r'   r(   Ú__all__r;   ÚgetattrÚ	_SIGWINCHr@   rA   r)   r‡   rÑ   r¢   r7   r5   r2   Ú<module>r     sÜ   ðñõ #ã Û Û Û 	Û Û Û ÷
÷ 
õ 
õ 3Ý >ß OÑ O÷ñ õ
 'Ý 2Ý B÷÷ ÷ @ß ;ß 4Ý +Ý /ç <àˆ/€à€á�F˜J¨Ó-€	ôñ, ˆTƒ]€÷vñ vôr$"�yô $"ñN �~°Ñ6€ôCQ˜ Ñ.õ CQr5   