wL idZddlmZddlZddlZddlmZmZddlm Z m Z m Z ddl m Z ddlmZddlmZmZdd lmZej*d fd Ze Gd d e Zy)zExtra magics for terminal use.)errorN)TryNext UsageError)Magics magics_class line_magic)ClipboardEmpty) skip_doctest)SListstrip_email_quotes) py3compatFc#K|std|zd}nd} ||}||k(ry| #t$rtdYywxYww)zH Yield pasted lines until the user enters the given sentinel value. zAPasting code; enter '%s' alone on the line to stop or use Ctrl-D.:Nz)printEOFError)sentinell_inputquietpromptls ]/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/IPython/terminal/magics.pyget_pasted_linesrsg  Q   AH}   'N  s.A .A.AAAAAceZdZfdZd dZdZd dZed dZe ed dZ ed dZ e jdk(r ed ZxZSxZS) TerminalMagicsc,tt| |y)N)superr__init__)selfshell __class__s rrzTerminalMagics.__init__)s nd,U3c|r?t|j|jj|<t d|zy|j |}||jjd<d|j_ |jj||d|j_y#d|j_wxYw)zM Execute a block, or store it in a variable, per the user's request. zBlock assigned to '%s' pasted_blockTFN)r splitlinesr user_nsrpreclean_inputusing_paste_magicsrun_cell)rblockname store_historybs rstore_or_executezTerminalMagics.store_or_execute,s ',U-=-=-?'@DJJ  t $ *T1 2##E*A12DJJ  ~ .,0DJJ ) 6 ##A}505 - -s >B,,B?c|j}|r.|djs|dd}|r|djstdj|S)Nr )r%stripr join)rr*liness rr'zTerminalMagics.preclean_input<sQ  "E!HNN,!"IEE!HNN,!$))E"233r"c,|jjj|}| tdt |t s tdt d|jdddt|fz|jj|y)z, Rerun a previously pasted command. Nz"No previous pasted block availablez6Variable 'pasted_block' is not a string, can't executezRe-executing '%s...' (%d chars)r1r0r) r r&getr isinstancestrrsplitlenr))rr+r-s r rerun_pastedzTerminalMagics.rerun_pastedBs JJ   " "4 ( 9AB B!S!HJ J /!''$q/!2Dc!f1MMN Ar"c|jjtdddg|jjy)z%Toggle autoindent on/off (deprecated)zAutomatic indentation is:OFFONN)r set_autoindentr autoindent)r parameter_ss rr@zTerminalMagics.autoindentQs2 !!# )5,tzz7L7L*MNr"c|j|dd\}}d|vr|jyd|v}|jdd}d jt || }|j ||d y) uPaste & execute a pre-formatted code block from clipboard. You must terminate the block with '--' (two minus-signs) or Ctrl-D alone on the line. You can also provide your own sentinel with '%paste -s %%' ('%%' is the new sentinel for this operation). The block is dedented prior to execution to enable execution of method definitions. '>' and '+' characters at the beginning of a line are ignored, to allow pasting directly from e-mails, diff files and doctests (the '...' continuation prompt is also stripped). The executed block is also assigned to variable named 'pasted_block' for later editing with '%edit pasted_block'. You can also pass a variable name as an argument, e.g. '%cpaste foo'. This assigns the pasted block to variable 'foo' as string, without dedenting or executing it (preceding >>> and + is still stripped) '%cpaste -r' re-executes the block previously entered by cpaste. '%cpaste -q' suppresses any additional output messages. Do not be alarmed by garbled output on Windows (it's a readline bug). Just press enter and type -- (and press enter again) and the block will be what was just pasted. Shell escapes are not supported (yet). See Also -------- paste : automatically pull code from clipboard. Examples -------- :: In [8]: %cpaste Pasting code; enter '--' alone on the line to stop. :>>> a = ["world!", "Hello"] :>>> print(" ".join(sorted(a))) :-- Hello world! :: In [8]: %cpaste Pasting code; enter '--' alone on the line to stop. :>>> %alias_magic t timeit :>>> %t -n1 pass :-- Created `%t` as an alias for `%timeit`. Created `%%t` as an alias for `%%timeit`. 354 ns ± 224 ns per loop (mean ± std. dev. of 7 runs, 1 loop each) zrqs:stringmoderNqsz--r1)rTr,) parse_optionsr;r6r3rr.)rrAoptsr+rrr*s rcpastezTerminalMagics.cpasteWszl'' V('K d $;     88C' *85AB eT>r"c|j|dd\}}d|vr|jy |jjj }d |vrtjj|jj||jd stjjd tjjd |j||d y#t $r2}t |d}|rt|dn tdYd}~yd}~wt$r}td |d}~wwxYw)aPaste & execute a pre-formatted code block from clipboard. The text is pulled directly from the clipboard without user intervention and printed back on the screen before execution (unless the -q flag is given to force quiet mode). The block is dedented prior to execution to enable execution of method definitions. '>' and '+' characters at the beginning of a line are ignored, to allow pasting directly from e-mails, diff files and doctests (the '...' continuation prompt is also stripped). The executed block is also assigned to variable named 'pasted_block' for later editing with '%edit pasted_block'. You can also pass a variable name as an argument, e.g. '%paste foo'. This assigns the pasted block to variable 'foo' as string, without executing it (preceding >>> and + is still stripped). Options: -r: re-executes the block previously entered by cpaste. -q: quiet mode: do not echo the pasted text back to the terminal. IPython statements (magics, shell escapes) are not supported (yet). See Also -------- cpaste : manually paste code into terminal until you mark its end. rqrCrDrFNargsrz&Could not get text from the clipboard.z!The clipboard appears to be emptyrGr1z## -- End pasted text -- TrI)rJr;r hooks clipboard_getrgetattrrr rsysstdoutwrite pycolorizeendswithr.)rrArKr+r* clipboard_excmessagees rpastezTerminalMagics.pastes>'' T'I d $;      IJJ$$224E d? JJ  TZZ2259 :>>$'   & JJ  9 : eT># mV4Ggaj!>?  I@Aq H Is#$C22 E;(D(( E4 EEwin32c.tjdy)zClear screen. clsN)ossystem)rrHs rr^zTerminalMagics.clss IIe r")F)r$)r)__name__ __module__ __qualname__rr.r'r;rr@r rLr[rSplatformr^ __classcell__)r!s@rrr's46 4 OO =?=?~5?5?p ||w    r"r)__doc__loggingrr_rSIPython.core.errorrrIPython.core.magicrrrIPython.lib.clipboardr IPython.testing.skipdoctestr IPython.utils.textr r IPython.utilsr inputrrr"rrpsT$  2??048#'0e*nVnnr"