Ë
    Bp±j“  ã                   óª  — d dl Zd dlmc mZ d dlZd dlZd dlZd dl	Z	ej                  j                  ej                  j                  ej                  j                  e«      d«      «      Ze	j                  j!                  d e«       d dlmZmZmZmZmZ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„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,y)é    Nz..)	ÚPineParseErrorÚbuild_parserÚcopy_to_clipboardÚlatest_fileÚ
parse_pineÚrun_preflightÚslugifyÚverify_text_contentÚwrite_source_copyc                  ó	  — t        t        j                  j                  t        d«      «      } | j
                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}| j                  }d	}||k(  }|s­t        j                  d|fd
||f«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}| j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}| j                   }d}||kD  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}| j"                  }t%        |«      }d}||k(  }|�s
t        j                  d|fd||f«      dt        j                  «       v st        j                  t$        «      rt        j                  t$        «      nddt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      t        j                  |«      dœz  }	dd|	iz  }
t        t        j                  |
«      «      ‚d x}x}x}}y )Nú#strategies/strategy_mlp_scores.pineÚstrategy©ú==©z,%(py2)s
{%(py2)s = %(py0)s.kind
} == %(py5)sÚinfo©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7Ú	MLPScores©z-%(py2)s
{%(py2)s = %(py0)s.title
} == %(py5)sé   ©z/%(py2)s
{%(py2)s = %(py0)s.version
} == %(py5)séd   )Ú>)z1%(py2)s
{%(py2)s = %(py0)s.line_count
} > %(py5)sé@   )zL%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.sha256
})
} == %(py8)sÚlen)r   Úpy1Úpy3r   Úpy8zassert %(py10)sÚpy10)r   ÚosÚpathÚjoinÚREPOÚkindÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚtitleÚversionÚ
line_countÚsha256r    )r   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8Ú@py_assert2Ú@py_assert7Ú@py_assert6Ú@py_format9Ú@py_format11s              ún/Users/jameslopez/projects/TradingBot25/.worktrees/mlp-comparable-measurement/tests/test_tradingview_update.pyÚ#test_parse_strategy_title_named_argrA      st  € Ü”b—g‘g—l‘l¤4Ð)NÓOÓP€Dà�9‰9Ð"˜
Ð"ˆ9˜
Ñ"×"×"Õ"ˆ9˜
×"×"×"×"×"Ñ"ˆ4×"×"Ó"ˆ4×"×"Ô"ˆ9×"×"Ò"˜
×"×"×"×"×"×"Ó"Ø�:‰:Ð$˜Ð$ˆ:˜Ñ$×$×$Õ$ˆ:˜×$×$×$×$×$Ñ$ˆ4×$×$Ó$ˆ4×$×$Ô$ˆ:×$×$Ò$˜×$×$×$×$×$×$Ó$Ø�<‰<Ð˜1Ðˆ<˜1Ñ××Õˆ<˜1×××××Ñˆ4××Óˆ4××Ôˆ<××Ò˜1××××××ÓØ�?‰?Ð ˜SÐ ˆ?˜SÑ × × Õ ˆ?˜S× × × × × Ñ ˆ4× × Ó ˆ4× × Ô ˆ?× × Ò ˜S× × × × × × Ó Ø�{‰{Ð!Œ3ˆ{ÓÐ!˜rÐ!Ð˜rÑ!×!×!Ö!Ð˜r×!×!×!×!×!Ñ!Œ3×!×!Ó!Œ3×!×!×!×!×!Ò!ˆt×!×!Ó!ˆt×!×!Ô!ˆ{×!×!Ò!Ð×!×!Ò!˜r×!×!×!×!×!×!Ö!ó    c                  ó  — t        t        j                  j                  t        d«      «      } | j
                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}| j                  }d	}||k(  }|s­t        j                  d|fd
||f«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}| j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )Nú)indicators/IndicatorActivationScores.pineÚ	indicatorr   r   r   r   r   r   zIndicator: Activation Scoresr   r   r   )r   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   )r   r6   r7   r8   r9   r:   s         r@   Ú)test_parse_indicator_title_positional_argrF   !   sg  € Ü”b—g‘g—l‘l¤4Ð)TÓUÓV€Dà�9‰9Ð#˜Ð#ˆ9˜Ñ#×#×#Õ#ˆ9˜×#×#×#×#×#Ñ#ˆ4×#×#Ó#ˆ4×#×#Ô#ˆ9×#×#Ò#˜×#×#×#×#×#×#Ó#Ø�:‰:Ð7Ð7Ð7ˆ:Ð7Ñ7×7×7Õ7ˆ:Ð7×7×7×7×7×7Ñ7ˆ4×7×7Ó7ˆ4×7×7Ô7ˆ:×7×7Ò7Ð7×7×7×7×7×7×7Ó7Ø�<‰<Ð˜1Ðˆ<˜1Ñ××Õˆ<˜1×××××Ñˆ4××Óˆ4××Ôˆ<××Ò˜1××××××ÔrB   c                 ój  — | dz  }|j                  dd¬«       t        |«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      d	œz  }d
d|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      d	œz  }d
d|iz  }t        t        j                  |«      «      ‚d x}x}}y )Nzcustom.pinez[//@version=6
strategy(
    title="My Multi Line Strategy",
    overlay=false
)
plot(close)
úutf-8©Úencodingr   r   r   r   r   r   r   zMy Multi Line Strategyr   )Ú
write_textr   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   )Útmp_pathÚpiner   r6   r7   r8   r9   r:   s           r@   Ú test_parse_multiline_named_titlerN   )   s  € Ø�mÑ#€DØ‡O�Oð	ð ð ô 	ô �dÓ€Dà�9‰9Ð"˜
Ð"ˆ9˜
Ñ"×"×"Õ"ˆ9˜
×"×"×"×"×"Ñ"ˆ4×"×"Ó"ˆ4×"×"Ô"ˆ9×"×"Ò"˜
×"×"×"×"×"×"Ó"Ø�:‰:Ð1Ð1Ð1ˆ:Ð1Ñ1×1×1Õ1ˆ:Ð1×1×1×1×1×1Ñ1ˆ4×1×1Ó1ˆ4×1×1Ô1ˆ:×1×1Ò1Ð1×1×1×1×1×1×1Ô1rB   c                 ó¬  — | dz  }|j                  dd¬«       	 t        |«       t        d«      ‚# t        $ �r}d}t	        |«      }||v }|söt        j                  d|fd||f«      t        j                  |«      d	t        j                  «       v st        j                  t        «      rt        j                  t        «      nd	d
t        j                  «       v st        j                  |«      rt        j                  |«      nd
t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}Y d }~y d }~ww xY w)Nzlibrary.pinez//@version=6
library("Nope")
rH   rI   zExpected PineParseErrorr   )Úin)z0%(py1)s in %(py6)s
{%(py6)s = %(py3)s(%(py4)s)
}ÚstrÚexc)r!   r"   Úpy4Úpy6úassert %(py8)sr#   )rK   r   r0   r   rQ   r*   r+   r/   r,   r-   r.   r1   )rL   rM   rR   Ú@py_assert0Ú@py_assert5r;   Ú@py_format7r>   s           r@   Ú)test_parse_requires_strategy_or_indicatorrY   <   sÙ   € Ø�nÑ$€DØ‡O�OÐ7À'€OÔJð8Ü�4Ôô Ð6Ó7Ð7øô ó &ØÐ%œS ›XÐ%ˆz˜XÐ%×%×%Õ%ˆz˜X×%×%Ó%ˆz×%×%×%×%×%Ð%œS×%×%Ó%œS×%×%×%×%×%Ò% ×%×%Ó% ×%×%Ô%˜X×%×%×%×%×%×%×%Ð%ûð&ús   š0 °
EºDEÅEc                  óZ  — ddl m}  ddlm} t        j
                  } |«       t        _        	  | ddg«      }t        j
                  j                  «       }|t        _        t        j                  |«      }d}||k(  }|s™t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      d	œz  }d
d|iz  }	t        t        j                   |	«      «      ‚d x}}|d   }
d}|
|k(  }|slt        j                  d|fd|
|f«      t        j                  |
«      t        j                  |«      dœz  }dd|iz  }t        t        j                   |«      «      ‚d x}
x}}y # |t        _        w xY w)Nr   )Úmain)ÚStringIOÚinspectr   r   )z%(py0)s == %(py3)sÚrc)r   r"   zassert %(py5)sr   r2   r   ©z%(py1)s == %(py4)s©r!   rS   úassert %(py6)srT   )Útools.tradingview_updater[   Úior\   ÚsysÚstdoutÚgetvalueÚjsonÚloadsr*   r+   r,   r-   r.   r/   r0   r1   )r[   r\   Ú
old_stdoutr^   ÚoutputÚpayloadr;   r6   Ú@py_format4r9   rV   r8   Ú@py_format5rX   s                 r@   Ú!test_inspect_command_outputs_jsonrn   H   sô   € Ý-Ýä—‘€JÙ“„C„Jð Ù�9ÐCÐDÓEˆÜ—‘×$Ñ$Ó&ˆàŒŒ
ä�j‰j˜Ó €GØ€Nˆ2�‰7‡N‡N…Nˆ2�‡N‡N‡N‡N‡N�Nˆ2‡N‡NƒNˆ2‡N‡N„N�‡N‡N‡N‡N‡N‡N�NØ�7ÑÐ*˜{Ð*Ð˜{Ñ*×*×*Õ*Ð˜{×*×*Ó*Ð×*×*Ò*˜{×*×*×*×*×*×*Ô*øð	  Œ�
ús   ®(F ÆF*c                  óœ  — t        t        j                  j                  t        d«      «      } t        | «      }d}||k(  }|söt        j                  d|fd||f«      dt        j                  «       v st        j                  t
        «      rt        j                  t
        «      nddt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }dd	|iz  }t        t        j                  |«      «      ‚d x}x}}| d
   j                  dd  }ddg}||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )Nr   é   r   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr    Úchecks)r   r!   r"   rT   rU   r#   r   éþÿÿÿztools/check_pine_duplicates.pyr_   r`   ra   rT   )r   r%   r&   r'   r(   r    r*   r+   r,   r-   r.   r/   r0   r1   Úcommand)	rq   r;   rW   r7   rX   r>   rV   r8   rm   s	            r@   Ú0test_preflight_runs_duplicate_check_for_any_pinert   Y   s  € Üœ2Ÿ7™7Ÿ<™<¬Ð.SÓTÓU€Fäˆv‹;Ð˜!Ðˆ;˜!Ñ××Õˆ;˜!×××××ÑŒ3××ÓŒ3×××××Òˆv××Óˆv××Ôˆ;××Ò˜!××××××ÓØ�!‰9×Ñ˜R˜SÐ!ÐnÐ&FÐHmÐ%nÐnÐ!Ð%nÑn×n×nÕnÐ!Ð%n×n×nÓnÐ!×n×nÒnÐ%n×n×n×n×n×n×nÔnrB   c                 ó   — | j                  dd„ «       d„ }| j                  d|«       d}t        |«      }d}||u }|sÉt        j                  d|fd||f«      d	t	        j
                  «       v st        j                  t        «      rt        j                  t        «      nd	t        j                  |«      t        j                  |«      t        j                  |«      d
œz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}y )Nz%tools.tradingview_update.shutil.whichc                  ó   — y)Nz/usr/bin/pbcopy© )Únames    r@   Ú<lambda>zHtest_copy_to_clipboard_returns_false_when_pbcopy_fails.<locals>.<lambda>a   s   € ÐN_rB   c                  ó0   — t        j                  ddg«      ‚)Nrp   Úpbcopy)Ú
subprocessÚCalledProcessError)ÚargsÚkwargss     r@   ÚfailzDtest_copy_to_clipboard_returns_false_when_pbcopy_fails.<locals>.failc   s   € Ü×+Ñ+¨A°¨zÓ:Ð:rB   z'tools.tradingview_update.subprocess.runÚcodeF©Úis©z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} is %(py7)sr   ©r   r   rS   r   úassert %(py9)sÚpy9)
Úsetattrr   r*   r+   r,   r-   r.   r/   r0   r1   )Úmonkeypatchr€   r6   r8   r=   rW   r:   Ú@py_format10s           r@   Ú6test_copy_to_clipboard_returns_false_when_pbcopy_failsr‹   `   s°   € Ø×ÑÐ?ÑA_Ô`ò;ð ×ÑÐAÀ4ÔHà#Ð-Ô˜VÓ$Ð-¨Ð-Ð$¨Ð-×-×-Õ-Ð$¨×-×-×-×-×-Ñ-Ô×-×-Ó-Ô×-×-Ô-˜V×-×-Ò-Ð$×-×-Ò-¨×-×-×-×-×-×-Ö-rB   c                  ó   — d} t        | «      }d}||k(  }|sÉt        j                  d|fd||f«      dt        j                  «       v st        j
                  t         «      rt        j                  t         «      ndt        j                  | «      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x} x}x}}d	} t        | «      }d
}||k(  }|sÉt        j                  d|fd||f«      dt        j                  «       v st        j
                  t         «      rt        j                  t         «      ndt        j                  | «      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x} x}x}}y )Nz0https://www.tradingview.com/chart/?symbol=BTCUSDz-https_www.tradingview.com_chart_symbol_BTCUSDr   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sr	   r…   r†   r‡   z   Úcapture)	r	   r*   r+   r,   r-   r.   r/   r0   r1   )r6   r8   r=   rW   r:   rŠ   s         r@   Ú&test_slugify_produces_filesystem_labelrŽ   k   s  € ØEÐyŒ7ÐEÓFÐyÐJyÐyÐFÐJyÑy×y×yÕyÐFÐJy×y×y×y×y×yÑyŒ7×y×yÓyŒ7×y×yÔyÐE×y×yÒyÐF×y×yÒyÐJy×y×y×y×y×y×yÕyØÐ&Œ7�5‹>Ð&˜YÐ&ˆ>˜YÑ&×&×&Õ&ˆ>˜Y×&×&×&×&×&Ñ&Œ7×&×&Ó&Œ7×&×&Ô&�5×&×&Ò&ˆ>×&×&Ò&˜Y×&×&×&×&×&×&Ö&rB   c                  óè  — t        «       } | j                  dg«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d	}||u }|s­t        j                  d
|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d	}||u }|s­t        j                  d
|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )Nr�   ú"https://www.tradingview.com/chart/r   ©z+%(py2)s
{%(py2)s = %(py0)s.url
} == %(py5)sr~   r   r   r   Fr‚   ©z.%(py2)s
{%(py2)s = %(py0)s.headed
} is %(py5)s)z1%(py2)s
{%(py2)s = %(py0)s.save_text
} is %(py5)s)r   Ú
parse_argsÚurlr*   r+   r,   r-   r.   r/   r0   r1   ÚheadedÚ	save_text©Úparserr~   r6   r7   r8   r9   r:   s          r@   Ú1test_capture_parser_defaults_to_tradingview_chartr™   p   sf  € Ü‹^€FØ×Ñ˜i˜[Ó)€Dà�8‰8Ð;Ð;Ð;ˆ8Ð;Ñ;×;×;Õ;ˆ8Ð;×;×;×;×;×;Ñ;ˆ4×;×;Ó;ˆ4×;×;Ô;ˆ8×;×;Ò;Ð;×;×;×;×;×;×;Ó;Ø�;‰;Ð˜%Ðˆ;˜%Ð××Õˆ;˜%×××××Ñˆ4××Óˆ4××Ôˆ;××Ò˜%××××××ÓØ�>‰>Ð"˜UÐ"ˆ>˜UÐ"×"×"Õ"ˆ>˜U×"×"×"×"×"Ñ"ˆ4×"×"Ó"ˆ4×"×"Ô"ˆ>×"×"Ò"˜U×"×"×"×"×"×"Ô"rB   c                 ó  — t        t        j                  j                  t        d«      «      }t        | |d«      }|j                  } |«       }|s�ddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }t        t        j                  |«      «      ‚d x}}|j                  }d} ||¬«      }d}||k(  }|sÕt        j                  d|fd	||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      d
œz  }	dd|	iz  }
t        t        j                  |
«      «      ‚d x}x}x}x}}| dz  dz  }|j                  } |«       }|s�ddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }t        t        j                  |«      «      ‚d x}}|j                  }d} ||¬«      }d}||k(  }|sÕt        j                  d|fd	||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      d
œz  }	dd|	iz  }
t        t        j                  |
«      «      ‚d x}x}x}x}}y )NrD   z// pine source
zAassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}Úsource_path)r   r   rS   rH   rI   r   )zX%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.read_text
}(encoding=%(py4)s)
} == %(py9)s)r   r   rS   rT   r‡   zassert %(py11)sÚpy11Úsourcez'latest_Indicator_Activation_Scores.pineÚlatest)r   r%   r&   r'   r(   r   Úexistsr,   r-   r*   r.   r/   r0   r1   Ú	read_textr+   )rL   r   r›   r6   r8   rm   rW   Ú@py_assert8r<   rŠ   Ú@py_format12rž   s               r@   Ú;test_write_source_copy_creates_timestamped_and_latest_filesr£   y   s-  € Ü”b—g‘g—l‘l¤4Ð)TÓUÓV€DÜ# H¨dÐ4FÓG€Kà×ÑÐÑÓÐÑ××××Õˆ;××Óˆ;××ÔÐ××ÒÐ×××××ÒØ× Ñ ÐH¨'ÐHÑ ¨'Ô2ÐHÐ6HÐHÐ2Ð6HÑH×H×HÕHÐ2Ð6H×H×H×H×H×HÑHˆ;×H×HÓHˆ;×H×HÔHÐ ×H×HÒH¨'×H×HÒHÐ2×H×HÒHÐ6H×H×H×H×H×H×H×HØ˜Ñ Ð#LÑL€FØ�=‰=Ð‰=‹?Ð‰?××××Õˆ6××Óˆ6××Ôˆ=××Òˆ?×××××ÒØ×ÑÐC WÐCÑ WÔ-ÐCÐ1CÐCÐ-Ð1CÑC×C×CÕCÐ-Ð1C×C×C×C×C×CÑCˆ6×C×CÓCˆ6×C×CÔCÐ×C×CÒC W×C×CÒCÐ-×C×CÒCÐ1C×C×C×C×C×C×C×CÐCrB   c                  ó$  — t        ddgddg¬«      } | d   }d}||u }|slt        j                  d|fd	||f«      t        j                  |«      t        j                  |«      d
œz  }dd|iz  }t	        t        j
                  |«      «      ‚d x}x}}| d   }g }||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      d
œz  }dd|iz  }t	        t        j
                  |«      «      ‚d x}x}}| d   }g }||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      d
œz  }dd|iz  }t	        t        j
                  |«      «      ‚d x}x}}y )NzPine Editor
MLPScores
No errorsr   úCompilation errorzUndeclared identifier©ÚexpectedÚrejectedÚokTr‚   ©z%(py1)s is %(py4)sr`   ra   rT   Úmissing_expectedr   r_   Úfound_rejected©r
   r*   r+   r/   r0   r1   ©ÚresultrV   r8   r;   rm   rX   s         r@   Ú=test_verify_text_content_requires_expected_and_rejects_errorsr°   „   s  € Ü Ø+Ø�Ø%Ð'>Ð?ô€Fð �$‰<Ð˜4Ðˆ<˜4Ð××Õˆ<˜4××Óˆ<××Ò˜4××××××ÓØÐ$Ñ%Ð+¨Ð+Ð%¨Ñ+×+×+Õ+Ð%¨×+×+Ó+Ð%×+×+Ò+¨×+×+×+×+×+×+Ó+ØÐ"Ñ#Ð) rÐ)Ð# rÑ)×)×)Õ)Ð# r×)×)Ó)Ð#×)×)Ò) r×)×)×)×)×)×)Ô)rB   c                  ó&  — t        ddgdg¬«      } | d   }d}||u }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      d	œz  }d
d|iz  }t	        t        j
                  |«      «      ‚d x}x}}| d   }dg}||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      d	œz  }d
d|iz  }t	        t        j
                  |«      «      ‚d x}x}}| d   }dg}||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      d	œz  }d
d|iz  }t	        t        j
                  |«      «      ‚d x}x}}y )NzPine Editor
Compilation error
r   r¥   r¦   r©   Fr‚   rª   r`   ra   rT   r«   r   r_   r¬   r­   r®   s         r@   Ú5test_verify_text_content_reports_missing_and_rejectedr²   �   s  € Ü Ø*Ø�Ø%Ð&ô€Fð �$‰<Ð ˜5Ð ˆ<˜5Ð × × Õ ˆ<˜5× × Ó ˆ<× × Ò ˜5× × × × × × Ó ØÐ$Ñ%Ð6¨+¨Ð6Ð%¨Ñ6×6×6Õ6Ð%¨×6×6Ó6Ð%×6×6Ò6¨×6×6×6×6×6×6Ó6ØÐ"Ñ#Ð<Ð(;Ð'<Ð<Ð#Ð'<Ñ<×<×<Õ<Ð#Ð'<×<×<Ó<Ð#×<×<Ò<Ð'<×<×<×<×<×<×<Ô<rB   c                  ób  — t        «       } | j                  g d¢«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d	d
g}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )N)zverify-textz--textú
screen.txtú--expectr   rµ   úPine Editorr´   r   )z,%(py2)s
{%(py2)s = %(py0)s.text
} == %(py5)sr~   r   r   r   r   r¶   ©z.%(py2)s
{%(py2)s = %(py0)s.expect
} == %(py5)s)r   r“   Útextr*   r+   r,   r-   r.   r/   r0   r1   Úexpectr—   s          r@   Ú6test_verify_text_parser_collects_repeated_expectationsrº   œ   sü   € Ü‹^€FØ×ÑÒxÓy€Dà�9‰9Ð$˜Ð$ˆ9˜Ñ$×$×$Õ$ˆ9˜×$×$×$×$×$Ñ$ˆ4×$×$Ó$ˆ4×$×$Ô$ˆ9×$×$Ò$˜×$×$×$×$×$×$Ó$Ø�;‰;Ð6˜;¨Ð6Ð6ˆ;Ð6Ñ6×6×6Õ6ˆ;Ð6×6×6×6×6×6Ñ6ˆ4×6×6Ó6ˆ4×6×6Ô6ˆ;×6×6Ò6Ð6×6×6×6×6×6×6Ô6rB   c                  ó  — t        «       } | j                  ddg«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d	}||k(  }|s­t        j                  d|fd
||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }g }||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }g }||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )Nzmanual-updater   r   ©z,%(py2)s
{%(py2)s = %(py0)s.pine
} == %(py5)sr~   r   r   r   r�   r‘   r·   )z.%(py2)s
{%(py2)s = %(py0)s.reject
} == %(py5)siè  ©z/%(py2)s
{%(py2)s = %(py0)s.wait_ms
} == %(py5)s)r   r“   rM   r*   r+   r,   r-   r.   r/   r0   r1   r”   r¹   ÚrejectÚwait_msr—   s          r@   ÚEtest_manual_update_parser_defaults_to_script_title_verification_laterrÀ   ¤   sH  € Ü‹^€FØ×Ñ˜oÐ/TÐUÓV€Dà�9‰9Ð=Ð=Ð=ˆ9Ð=Ñ=×=×=Õ=ˆ9Ð=×=×=×=×=×=Ñ=ˆ4×=×=Ó=ˆ4×=×=Ô=ˆ9×=×=Ò=Ð=×=×=×=×=×=×=Ó=Ø�8‰8Ð;Ð;Ð;ˆ8Ð;Ñ;×;×;Õ;ˆ8Ð;×;×;×;×;×;Ñ;ˆ4×;×;Ó;ˆ4×;×;Ô;ˆ8×;×;Ò;Ð;×;×;×;×;×;×;Ó;Ø�;‰;Ð˜"Ðˆ;˜"Ñ××Õˆ;˜"×××××Ñˆ4××Óˆ4××Ôˆ;××Ò˜"××××××ÓØ�;‰;Ð˜"Ðˆ;˜"Ñ××Õˆ;˜"×××××Ñˆ4××Óˆ4××Ôˆ;××Ò˜"××××××ÓØ�<‰<Ð˜4Ðˆ<˜4Ñ××Õˆ<˜4×××××Ñˆ4××Óˆ4××Ôˆ<××Ò˜4××××××ÔrB   c                  óx  — t        «       } | j                  dg«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d	}||u }|s­t        j                  d
|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d	}||u }|s­t        j                  d
|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )NÚdoctorr   r   r¼   r~   r   r   r   Fr‚   )z/%(py2)s
{%(py2)s = %(py0)s.browser
} is %(py5)s)z3%(py2)s
{%(py2)s = %(py0)s.tradingview
} is %(py5)sé¸  r½   )r   r“   rM   r*   r+   r,   r-   r.   r/   r0   r1   ÚbrowserÚtradingviewr¿   r—   s          r@   Ú,test_doctor_parser_defaults_to_static_checksrÆ   ¯   sØ  € Ü‹^€FØ×Ñ˜h˜ZÓ(€Dà�9‰9Ð=Ð=Ð=ˆ9Ð=Ñ=×=×=Õ=ˆ9Ð=×=×=×=×=×=Ñ=ˆ4×=×=Ó=ˆ4×=×=Ô=ˆ9×=×=Ò=Ð=×=×=×=×=×=×=Ó=Ø�<‰<Ð ˜5Ð ˆ<˜5Ð × × Õ ˆ<˜5× × × × × Ñ ˆ4× × Ó ˆ4× × Ô ˆ<× × Ò ˜5× × × × × × Ó Ø×ÑÐ$˜uÐ$Ð˜uÐ$×$×$Õ$Ð˜u×$×$×$×$×$Ñ$ˆ4×$×$Ó$ˆ4×$×$Ô$Ð×$×$Ò$˜u×$×$×$×$×$×$Ó$Ø�<‰<Ð˜4Ðˆ<˜4Ñ××Õˆ<˜4×××××Ñˆ4××Óˆ4××Ôˆ<××Ò˜4××××××ÔrB   c                 ó´  — | dz  }| dz  }|j                  dd¬«       |j                  dd¬«       t        j                  |d«       t        j                  |d«       ||g}t        |«      }||k(  }|söt	        j
                  d|fd	||f«      d
t        j                  «       v st	        j                  t        «      rt	        j                  t        «      nd
t	        j                  |«      t	        j                  |«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      nddœz  }dd|iz  }t        t	        j                  |«      «      ‚d x}x}}| dz  g}t        |«      }d }||u }|sÉt	        j
                  d|fd||f«      d
t        j                  «       v st	        j                  t        «      rt	        j                  t        «      nd
t	        j                  |«      t	        j                  |«      t	        j                  |«      dœz  }	dd|	iz  }
t        t	        j                  |
«      «      ‚d x}x}x}}y )Nzold.jsonznew.jsonz{}rH   rI   )rp   rp   )é   rÈ   r   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py6)sr   Únew)r   r   rS   rT   rU   r#   zmissing.jsonr‚   r„   r…   r†   r‡   )rK   r%   Úutimer   r*   r+   r,   r-   r.   r/   r0   r1   )rL   ÚoldrÉ   r6   r8   rW   rX   r>   r=   r:   rŠ   s              r@   Ú$test_latest_file_returns_newest_pathrÌ   ¹   sq  € Ø
�ZÑ
€CØ
�ZÑ
€CØ‡N�N�4 '€NÔ*Ø‡N�N�4 '€NÔ*Ü‡H�HˆS�&ÔÜ‡H�HˆS�&Ôà˜S�zÐ)Œ;�zÓ"Ð)Ð" cÑ)×)×)Õ)Ð" c×)×)×)×)×)Ñ)Œ;×)×)Ó)Œ;×)×)Ô)�z×)×)Ò)Ð"×)×)×)×)×)Ð) c×)×)Ó) c×)×)×)×)×)×)Õ)Ø  >Ñ1Ð2Ð;Œ;Ð2Ó3Ð;°tÐ;Ð3°tÐ;×;×;Õ;Ð3°t×;×;×;×;×;Ñ;Œ;×;×;Ó;Œ;×;×;Ô;Ð2×;×;Ò;Ð3×;×;Ò;°t×;×;×;×;×;×;Ö;rB   c                  óÌ  — t        «       } | j                  dg«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )	NÚstatusz.tradingview_e2er   )z/%(py2)s
{%(py2)s = %(py0)s.out_dir
} == %(py5)sr~   r   r   r   )r   r“   Úout_dirr*   r+   r,   r-   r.   r/   r0   r1   r—   s          r@   Ú+test_status_parser_defaults_to_artifact_dirrÐ   Å   sŒ   € Ü‹^€FØ×Ñ˜h˜ZÓ(€Dà�<‰<Ð-Ð-Ð-ˆ<Ð-Ñ-×-×-Õ-ˆ<Ð-×-×-×-×-×-Ñ-ˆ4×-×-Ó-ˆ4×-×-Ô-ˆ<×-×-Ò-Ð-×-×-×-×-×-×-Ô-rB   c                  óx  — t        «       } | j                  dg«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d	}||u }|s­t        j                  d
|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d	}||u }|s­t        j                  d
|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )Nzprofile-statusr�   r   r‘   r~   r   r   r   Fr‚   r’   )z5%(py2)s
{%(py2)s = %(py0)s.wait_for_user
} is %(py5)srÃ   r½   )r   r“   r”   r*   r+   r,   r-   r.   r/   r0   r1   r•   Úwait_for_userr¿   r—   s          r@   Ú@test_profile_status_parser_defaults_to_persistent_headless_checkrÓ   Ì   sÚ  € Ü‹^€FØ×ÑÐ.Ð/Ó0€Dà�8‰8Ð;Ð;Ð;ˆ8Ð;Ñ;×;×;Õ;ˆ8Ð;×;×;×;×;×;Ñ;ˆ4×;×;Ó;ˆ4×;×;Ô;ˆ8×;×;Ò;Ð;×;×;×;×;×;×;Ó;Ø�;‰;Ð˜%Ðˆ;˜%Ð××Õˆ;˜%×××××Ñˆ4××Óˆ4××Ôˆ;××Ò˜%××××××ÓØ×ÑÐ& Ð&Ð Ð&×&×&Õ&Ð ×&×&×&×&×&Ñ&ˆ4×&×&Ó&ˆ4×&×&Ô&Ð×&×&Ò& ×&×&×&×&×&×&Ó&Ø�<‰<Ð˜4Ðˆ<˜4Ñ××Õˆ<˜4×××××Ñˆ4××Óˆ4××Ôˆ<××Ò˜4××××××ÔrB   )-Úbuiltinsr,   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter*   rg   r%   r|   rd   r&   Úabspathr'   ÚdirnameÚ__file__r(   Úinsertrb   r   r   r   r   r   r   r	   r
   r   rA   rF   rN   rY   rn   rt   r‹   rŽ   r™   r£   r°   r²   rº   rÀ   rÆ   rÌ   rÐ   rÓ   rw   rB   r@   Ú<module>rÜ      sÂ   ðß  „ ƒÛ 	Û Û 
ð 
‡w�w‡��r—w‘w—|‘| B§G¡G§O¡O°HÓ$=¸tÓDÓE€Ø ‡�‡���4Ô ÷
÷ 
õ 
ò"òò2ò&	8ò+ò"oò.ò'ò
#òDò	*ò	=ò7ò ò ò	<ò.ó rB   