§
    <„Bjœ  ã                  ód   — d dl mZ d dlZd dlmc mZ d dlm	Z	m
Z
 ddd„Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )é    )ÚannotationsN)Úevaluate_promotion_gatesÚformat_promotion_gate_reporté   ú1.25ú55.00ÚclosedÚintÚpnlÚstrÚwinrateÚreturnÚdictc                ó.   — | ||dœd| ||dœid| ||dœidœS )N)Úclosed_tradesÚnet_pnl_usdÚwinrate_pctÚgaussian_channel_v1ÚBTC)ÚoverallÚ
strategiesÚcoins© ©r	   r   r   s      ú\/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_tradingview_promotion_gates.pyÚ_perfr      sF   € à%+¸CÐPWÐXÐXØ,ÀÐWZÐkrÐ.sÐ.sÐtØ¨6À#ÐV]Ð^Ð^Ð_ðð ð ó    c            	     ó`  — t          t          d¬¦  «        ddddddœ¬¦  «        } | 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}}d}| d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}| 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 S )Né   ©r	   T©Úreconcile_cleanÚalerts_provenÚloss_gates_activeÚkill_switch_readyÚstop_handling_ready©Úoperational_gatesÚfinal_statusÚ
paper_only©ú==©z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6Úsample_too_smallÚblockers©Úin©z%(py1)s in %(py4)sÚlive_allowedF©Úis©z%(py1)s is %(py4)s©r   r   Ú
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanation©ÚresultÚ@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_format5Ú@py_format7s         r   ÚAtest_promotion_gates_keep_strategy_in_paper_when_sample_too_smallrI      sP  € Ý%¥e°1 o¡o¤oÐ]aÐtxð  PTð  koð  HLð  JMð  JMð  Nñ  Nô  N€Fà.Ô!Ð1 \Ð1Ð! \Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð! \Ð1Ñ1Ô1Õ1Ô1Ð!Ñ1Ô1Õ1Ô1 \Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÐ3 ¨
Ô!3Ð3ÐÐ!3Ð3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3ÐÐ!3Ð3Ñ3Ô3Õ3Ô3ÐÑ3Ô3Õ3Ô3Ð!3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ø.Ô!Ð* UÐ*Ð! UÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð! UÐ*Ñ*Ô*Õ*Ô*Ð!Ñ*Ô*Õ*Ô* UÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r   c            	     ó\  — t          t          ¦   «         ddddddœ¬¦  «        } | 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}}| 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}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )NTr!   r'   r)   Úshadow_candidate_not_liver+   r-   r.   r1   r2   r8   Fr9   r;   Úshadow_candidater<   rB   s         r   Ú:test_promotion_gates_allow_shadow_candidate_but_never_liverM      sN  € Ý%¥e¡g¤gÐUYÐlpð  HLð  cgð  @Dð  BEð  BEð  Fñ  Fô  F€Fà.Ô!Ð@Ð%@Ð@Ð!Ð%@Ò@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@Ð!Ð%@Ð@Ñ@Ô@Õ@Ô@Ð!Ñ@Ô@Õ@Ô@Ð%@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ø.Ô!Ð* UÐ*Ð! UÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð! UÐ*Ñ*Ô*Õ*Ô*Ð!Ñ*Ô*Õ*Ô* UÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÐ$Ô%Ð-¨Ð-Ð%¨Ð-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð%¨Ð-Ñ-Ô-Õ-Ô-Ð%Ñ-Ô-Õ-Ô-¨Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r   c            	     óX  — t          t          ¦   «         ddddddœ¬¦  «        } | 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}}d}| d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )NFTr!   r'   r)   r*   r+   r-   r.   r1   r2   Úreconcile_clean_missingr4   r5   r7   r<   rB   s         r   Ú8test_promotion_gates_block_when_operational_gate_missingrP      s£  € Ý%¥e¡g¤gÐUZÐmqð  IMð  dhð  AEð  BFð  BFð  Gñ  Gô  G€Fà.Ô!Ð1 \Ð1Ð! \Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð! \Ð1Ñ1Ô1Õ1Ô1Ð!Ñ1Ô1Õ1Ô1 \Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ø$Ð:¨¨zÔ(:Ð:Ð$Ð(:Ð:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð$Ð(:Ð:Ñ:Ô:Õ:Ô:Ð$Ñ:Ô:Õ:Ô:Ð(:Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r   c            	     ó†  — t          t          d¬¦  «        ddddddœ¬¦  «        } t          | ¦  «        }d}||v }|s—t          j        d|fd||f¦  «        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}}d}||v }|s—t          j        d|fd||f¦  «        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}}d}||v }|s—t          j        d|fd||f¦  «        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}}d}||v }|s—t          j        d|fd||f¦  «        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}}d S )Nr   r    Tr!   r'   zPromotion Gates:r5   )z%(py1)s in %(py3)sÚline)r/   Úpy3zassert %(py5)sÚpy5rK   z source=tradingview_closed_tradesz	live=nein)r   r   r   r=   r>   r?   Ú@py_builtinsÚlocalsÚ_should_repr_global_namer@   rA   )rC   rR   rD   rF   Ú@py_format4Ú@py_format6s         r   Ú0test_promotion_gate_report_is_short_and_explicitrZ   %   ss  € Ý%¥e°2Ð&6Ñ&6Ô&6Ð^bÐuyð  QUð  lpð  IMð  KNð  KNð  Oñ  Oô  O€Få'¨Ñ/Ô/€DàÐ%Ð Ð%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð Ð%Ñ%Ô%Õ%Ô%ÐÑ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô% Ñ%Ô%Ð%Õ%Ô% Ñ%Ô%Ð%Ð%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ø&Ð.Ð&¨$Ð.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð&¨$Ð.Ñ.Ô.Õ.Ô.Ð&Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.¨$Ñ.Ô.Ð.Õ.Ô.¨$Ñ.Ô.Ð.Ð.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ø-Ð5Ð-°Ð5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð-°Ð5Ñ5Ô5Õ5Ô5Ð-Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5°Ñ5Ô5Ð5Õ5Ô5°Ñ5Ô5Ð5Ð5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5ØÐˆ;˜$ÐÐÐÐÕÔÐÐÐÐˆ;˜$ÐÑÔÕÔˆ;ÑÔÐÕÔÑÔÐÐÕÔ˜$ÑÔÐÕÔ˜$ÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr   c            	     ó–  — dddddgdœ} t          t          ddd¬	¦  «        d
d
d
d
d
dœ| d¬¦  «        }|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}}|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}}|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}}|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}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|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 S ) NÚtrue_lifecycle_exits_onlyé   z0.15z50.00Úlifecycle_sample_too_small)Úevidence_sourcer   r   r   r4   éc   Ú99r   Tr!   r   )r(   Úlifecycle_scorecardÚmin_closed_tradesr_   r+   r-   r.   r1   r2   r   r   r)   r*   r4   r5   r7   r3   r8   Fr9   r;   r<   )Ú	lifecyclerC   rD   rE   rF   rG   rH   s          r   Ú:test_promotion_gates_use_lifecycle_scorecard_when_providedre   0   s  € à6ØØØØ1Ð2ðð €Iõ &ÝR˜T¨4Ð0Ñ0Ô0Ø.2ÀTÐ`dÐ{ð  Y]ð  ^ð  ^Ø%Øð	ñ ô €Fð Ð#Ô$ÐCÐ(CÐCÐ$Ð(CÒCÐCÐCÐCÕCÔCÐCÐCÐCÐCÐ$Ð(CÐCÑCÔCÕCÔCÐ$ÑCÔCÕCÔCÐ(CÑCÔCÐCÐCÑCÐCÐCÐCÐCÐCÑCÐCÕCÕCÔCÐCÑCÔCÑCÔCÐCÐCÐCÐCÐCÐCÐCØ/Ô"Ð' aÐ'Ð" aÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð" aÐ'Ñ'Ô'Õ'Ô'Ð"Ñ'Ô'Õ'Ô' aÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ø-Ô Ð* FÐ*Ð  FÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð  FÐ*Ñ*Ô*Õ*Ô*Ð Ñ*Ô*Õ*Ô* FÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø.Ô!Ð1 \Ð1Ð! \Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð! \Ð1Ñ1Ô1Õ1Ô1Ð!Ñ1Ô1Õ1Ô1 \Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ø'Ð=¨6°*Ô+=Ð=Ð'Ð+=Ð=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð'Ð+=Ð=Ñ=Ô=Õ=Ô=Ð'Ñ=Ô=Õ=Ô=Ð+=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØÐ3 ¨
Ô!3Ð3ÐÐ!3Ð3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3ÐÐ!3Ð3Ñ3Ô3Õ3Ô3ÐÑ3Ô3Õ3Ô3Ð!3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ø.Ô!Ð* UÐ*Ð! UÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð! UÐ*Ñ*Ô*Õ*Ô*Ð!Ñ*Ô*Õ*Ô* UÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r   )r   r   r   )r	   r
   r   r   r   r   r   r   )Ú
__future__r   ÚbuiltinsrU   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter=   Ú%src.tools.tradingview_promotion_gatesr   r   r   rI   rM   rP   rZ   re   r   r   r   ú<module>rl      s¸   ðØ "Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € Ð hÐ hÐ hÐ hÐ hÐ hÐ hÐ hðð ð ð ð ð+ð +ð +ð.ð .ð .ð;ð ;ð ;ðð ð ð+ð +ð +ð +ð +r   