
    Aj	                    j    d dl mZ d dlZd dlmc mZ d dlZd dl	m
Z
 d dlmZmZ ddZd Zd Zd ZdS )    )annotationsN)Path)load_operational_gatesformat_operational_gate_reportpathr   payloaddictreturnNonec                    | j                             dd           |                     t          j        |          d           d S )NT)parentsexist_okzutf-8)encoding)parentmkdir
write_textjsondumps)r   r   s     ^/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_tradingview_operational_gates.py_writer   	   sC    KdT222OODJw'''O:::::    c           	        t          | dz  dz  ddddddi           t          | dz  dz  d	d	d	d
           t          | dz  dz  ddg dd           t          |           }|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         }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 S )Nreports!hl_reconcile_watchdog_latest.jsonwatchdogFr   okcriticalblock_new_entriesstops_missing_countstatuspreflight_evidence_latest.jsonTtelegram_alerts_tested position_without_stop_impossibletestnet_fill_stopconfig tiny_autonomous_live_limits.json      )daily_loss_exceededweekly_loss_exceededkill_switch_activeposition_without_stop)max_daily_loss_usdcmax_weekly_loss_usdcblock_new_entries_ifgates)reconcile_cleanalerts_provenloss_gates_activekill_switch_readystop_handling_ready)==)z%(py1)s == %(py4)spy1py4assert %(py6)spy6blockersr   r   
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanationtmp_pathr2   @py_assert0@py_assert3@py_assert2@py_format5@py_format7s          r   :test_load_operational_gates_all_green_from_runtime_reportsrL      s   
8i"EE
af  ~C  \]  im  Un  Un  Ho  p  p  p
8i"BB_c  JN  ei  Ej  Ej  k  k  k
8h!CC]^xy  Tr  Tr  Tr  Fs  Fs  t  t  t"8,,E> !!#  >         >                                   """"""""""""""""""""""""""""""""""""""""""""""""""r   c           	        t          | dz  dz  ddddddi           t          | dz  dz  d	d	d	d
           t          | dz  dz  dg i           t          |           }|d         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         }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         }||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 S )Nr   r   r   T   r   r   r"   Fr#   r'   r(   r1   r2   r3   )is)z%(py1)s is %(py4)sr9   r<   r=   r4   reconcile_clean_missingr>   in)z%(py1)s in %(py4)salerts_proven_missingr?   rE   s          r   Etest_load_operational_gates_blocks_dirty_reconcile_and_missing_alertsrT      s|   
8i"EE
ae  }A  Z[  gq  Ur  Ur  Hs  t  t  t
8i"BB_d  KP  gl  Em  Em  n  n  n
8h!CCF\^`Eabbb"8,,E>+,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>/*3e3*e3333333333*e33333*3333e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$9j(99$(99999999999$(999999$9999(9999999999999999999999999999"7eJ&77"&77777777777"&777777"7777&777777777777777777777777777777r   c                   dddddgd}t          |          }|j        }d} ||          }|sddt          j                    v st	          j        |          rt	          j        |          ndt	          j        |          t	          j        |          t	          j        |          d	z  }t          t	          j        |                    d x}x}}d}||v }|st	          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 )NF)r3   r4   rP   rS   )r2   r>   zOperational Gates:zLassert %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.startswith
}(%(py4)s)
}line)py0py2r;   r=   rQ   )z%(py1)s in %(py3)s)r:   py3zassert %(py5)spy5)
r   
startswith@py_builtinslocalsr@   _should_repr_global_namerB   rC   rD   rA   )rF   r2   rV   @py_assert1rH   @py_assert5rK   rG   rI   @py_format4@py_format6s              r   %test_operational_gate_report_is_shortrc   ,   s   */%HHWp  sJ  WK  L  LE)%00D?0/0??/0000000000000004000004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$,$,,,,,,,,,,$,,,,,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,r   )r   r   r   r	   r
   r   )
__future__r   builtinsr\   _pytest.assertion.rewrite	assertionrewriter@   r   pathlibr   'src.tools.tradingview_operational_gatesr   r   r   rL   rT   rc    r   r   <module>rl      s    " " " " " "                     j j j j j j j j; ; ; ;
# # #"
8 
8 
8- - - - -r   