
    Sjo                     H    d dl Zd dlmc mZ d dlmZmZ d Z	d Z
d Zd ZdS )    N)_candidate_promotion_okevaluate_live_preview_preflightc                  *   t          i           } | j        }d}||k    }|st          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}}d	D ]}| j
        }||v }|st          j        d
|fd||f          dt	          j                    v st          j        |          rt          j        |          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}}| j        }|j        }d}	 ||	          }
|
sddt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          t          j        |	          t          j        |
          dz  }t          t          j	        |                    d x}x}x}	}
d S )N)evidenceFAIL==z.%(py2)s
{%(py2)s = %(py0)s.status
} == %(py5)srpy0py2py5assert %(py7)spy7)tests_greencompileall_greenmainnet_readonly_reconciletestnet_alo_canceltestnet_schedule_canceltestnet_fill_stopdata_quality_gateapi_health_handledv76_net_scorecard_gatesnonce_managertelegram_alerts_testedlegacy_autotrader_blockedin)z4%(py0)s in %(py4)s
{%(py4)s = %(py2)s.failed_gates
}gate)r   r   py4zassert %(py6)spy6BLOCKzpassert %(py8)s
{%(py8)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.recommendation
}.startswith
}(%(py6)s)
})r   r   r!   r"   py8)r   status
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationfailed_gatesrecommendation
startswith)r   @py_assert1@py_assert4@py_assert3@py_format6@py_format8r    @py_format5@py_format7@py_assert5@py_assert7@py_format9s               W/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_preflight_live_preview.py>test_preflight_blocks_missing_required_evidence_and_live_flagsr<      s   '444A8v8v8v118v f & &~%t~%%%%%%%%%%t~%%%%%%%%%%%%t%%%%%t%%%%%%%%%%%%%q%%%%%q%%%%%%~%%%%%%%%%%%%%%%%%%%%%%%%%%/&/w/&&w///////////////1/////1//////////&////w//////////////////////////////    c                    |                      dd           |                      dd           d dD             }t          |d          }|j        }d}||k    }|st          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}}d}|j        }||v }	|	st          j        d|	fd||f          t          j        |          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}	}d S )NCTB_LIVE_TRADING_ALLOWEDtrueCTB_LIVE_CONFIRMATIONtokenc                     i | ]}|d S T .0ks     r;   
<dictcomp>zRtest_preflight_pass_is_only_permission_to_request_sir_approval.<locals>.<dictcomp>   s,      r  r  rA4  r  r  rr=   )r   r   r   r   r   r    position_without_stop_impossibler   r   r   r   r   secrets_scan_cleanr   r   expected_confirmationPASSr   r
   r   r   r   r   zSir may approver   )z6%(py1)s in %(py5)s
{%(py5)s = %(py3)s.recommendation
}py1py3r   )setenvr   r%   r&   r'   r(   r)   r*   r+   r,   r-   r/   
monkeypatchr   r   r1   r2   r3   r4   r5   @py_assert0@py_assert2s
             r;   >test_preflight_pass_is_only_permission_to_request_sir_approvalrW      s0   16:::.888 r  r  "q  r  r  rH'QXYYYA8v8v8v118v0 00 00000000000 0000000000000000000000000000 000000000000000000000000000000r=   c                 $   |                      dd           |                      dd           d dD             }d|d<   t          |d	          }|j        }d
}||k    }|st          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}}d}|j        }||v}	|	st          j        d|	fd||f          t          j        |          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}	}|j        }d}||k    }|st          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}}d S )Nr?   r@   rA   rB   c                     i | ]}|d S rD   rE   rF   s     r;   rI   zUtest_preflight_treats_schedule_cancel_volume_limit_as_conditional.<locals>.<dictcomp>   s,      #j  #j  #jq1d  #j  #j  #jr=   )r   r   r   r   r   rJ   r   r   r   r   r   rK   r   4conditional_unavailable_due_to_exchange_volume_limitr   rL   $PASS_WITH_CONDITIONAL_SCHEDULECANCELr   r
   r   r   r   r   )not in)z8%(py1)s not in %(py5)s
{%(py5)s = %(py3)s.failed_gates
}rO   )r   )z9%(py2)s
{%(py2)s = %(py0)s.conditional_gates
} == %(py5)s)rR   r   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   conditional_gatesrS   s
             r;   Atest_preflight_treats_schedule_cancel_volume_limit_as_conditionalr^      s    16:::.888 #j  #j  5i  #j  #j  #jH*`H&''QXYYYA8===8===========8=============1=====1======8================================$:AN:$N::::::::::$N:::::$:::::::::::A:::::A::::::N:::::::::::::::::::::::::::>">>">>>>>>>>>>>">>>>>>>>>>>>>1>>>>>1>>>>>>>>>>">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>r=   c                     dddddddd} t          |           }d}||u }|st          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}}i | ddi}t          |          }d}||u }|st          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}}i | ddi}t          |          }d}||u }|st          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 S )Nzv77_promotion_report.v2*candidate_v77_trend_retest_anti_chase_longzv77.1.0TF)schema_versionstrategy_idstrategy_versionpromotion_eligibleexecution_allowedlive_order_allowedmainnet_signed_action)is)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} is %(py6)sr   report)r   rP   rQ   r"   zassert %(py8)sr$   rf   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} is %(py7)s)r   r   r!   r   zassert %(py9)spy9rc   zv77.0.0)	r   r&   r'   r(   r)   r*   r+   r,   r-   )ri   rV   r8   r2   r7   r:   r1   r3   @py_assert6r5   @py_format10s              r;   Btest_v77_candidate_promotion_gate_requires_non_executing_v2_reportrm       sy   3C%""#!& F #6**2d2*d2222222222*d222222222222"22222"22222222222226222226222222*2222d222222222222222222222222222#If#I.BD#I#IS"#IJJSeSJeSSSSSSSSSSJeSSSSSSSSSSSS"SSSSS"SSSSSS#ISSSSJSSSSeSSSSSSSSSSSSSSSSSSSSSSSSSSSSS#Lf#L.@)#L#LV"#LMMVQVVMQVVVVVVVVVVVMQVVVVVVVVVVVVV"VVVVV"VVVVVV#LVVVVMVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVr=   )builtinsr(   _pytest.assertion.rewrite	assertionrewriter&   src.tools.preflightr   r   r<   rW   r^   rm   rE   r=   r;   <module>rs      s                  X X X X X X X X0 0 01 1 1? ? ?W W W W Wr=   