Ë
    Š_±jr
  ã                   ó¸   — d dl Zd dlmc mZ d dlZd dlmZ	 dd„Z
d„ Zd„ Zd„ Zej                  j                  d ed«       ed	«      g«      d
„ «       Zd„ Zd„ Zy)é    N)Úrun_mlp_adaptivec                 ó   — | |dœS )N)zCalmar RatioÚComparison_Fingerprint© )ÚcalmarÚfingerprints     úM/Users/jameslopez/projects/TradingBot25/tests/test_mlp_adaptive_comparison.pyÚevidencer
      s   € Ø"¸kÑJÐJó    c           	      óz  — | j                  t        dd„ «       t        j                  }d}d} |||«      }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                  |«      t        j                  |«      t        j                  |«      d	œz  }d
d|iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}}y )NÚread_winner_evidencec                  ó   — t        d«      S )Nç      ô?)r
   ©Úargss    r	   Ú<lambda>z>test_adaptive_uses_replay_not_stored_metrics.<locals>.<lambda>   s	   € ÌÐQUÌr   ÚBTCÚ6Hr   ©ú==)zb%(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.read_winner_calmar
}(%(py4)s, %(py6)s)
} == %(py11)sÚadaptive)Úpy0Úpy2Úpy4Úpy6Úpy8Úpy11zassert %(py13)sÚpy13)Úsetattrr   Úread_winner_calmarÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)	ÚmonkeypatchÚ@py_assert1Ú@py_assert3Ú@py_assert5Ú@py_assert7Ú@py_assert10Ú@py_assert9Ú@py_format12Ú@py_format14s	            r	   Ú,test_adaptive_uses_replay_not_stored_metricsr2   
   sÄ   € Ø×ÑœÐ"8Ñ:VÔWÜ×&Ñ&Ð; uÐ;¨dÐ;Ñ& u¨dÓ3Ð;°tÐ;Ð3°tÑ;×;×;Õ;Ð3°t×;×;×;×;×;Ñ;Œ8×;×;Ó;Œ8×;×;Ô;Ð&×;×;Ò; u×;×;Ò;¨d×;×;Ò;Ð3×;×;Ò;°t×;×;×;×;×;×;×;Ò;r   c                 óÄ   — d„ }| j                  t        d|«       t        j                  t        d¬«      5  t        j
                  dd«       d d d «       y # 1 sw Y   y xY w)Nc                  ó   — t        d«      ‚)Nzincumbent incomplete)Ú
ValueErrorr   s    r	   Úfailz,test_failed_replay_is_not_zero.<locals>.fail   s   € ÜÐ/Ó0Ð0r   r   Ú
incomplete©Úmatchr   r   )r   r   ÚpytestÚraisesr5   r    )r)   r6   s     r	   Útest_failed_replay_is_not_zeror<      sD   € ò1à×ÑœÐ"8¸$Ô?Ü	�‰”z¨Ö	6Ü×#Ñ# E¨4Ô0÷ 
7×	6Ñ	6ús   ¶AÁAc                  óô  — t        j                  ddd¬«      } t         j                  }t        «       }d}t        |«      } || ||«      }t        j
                  }d} ||«      }||k(  }	|	�sIt        j                  d|	fd||f«      d	t        j                  «       v st        j                  t         «      rt        j                  t         «      nd	t        j                  |«      d
t        j                  «       v st        j                  | «      rt        j                  | «      nd
dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      t        j                  |«      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}x}x}x}	x}x}}t	        j                  t        d¬«      5  t        j                  | t        «       t        dd«      «       d d d «       t	        j                  t        d¬«      5  t        j                  | t        d«      t        d«      «       d d d «       y # 1 sw Y   ŒWxY w# 1 sw Y   y xY w)Nr   Úsameç      ð?©Úcomparison_fingerprintÚlast_calmargš™™™™™ñ?gš™™™™™¹?r   )zá%(py13)s
{%(py13)s = %(py2)s
{%(py2)s = %(py0)s.comparison_delta
}(%(py3)s, %(py6)s
{%(py6)s = %(py4)s()
}, %(py11)s
{%(py11)s = %(py7)s(%(py9)s)
})
} == %(py21)s
{%(py21)s = %(py17)s
{%(py17)s = %(py15)s.approx
}(%(py19)s)
}r   Ústater
   r:   )r   r   Úpy3r   r   Úpy7Úpy9r   r   Úpy15Úpy17Úpy19Úpy21zassert %(py23)sÚpy23r   r8   g       @zchanged-dataÚ	reproduceg333333ó?gÍÌÌÌÌÌô?)r   ÚTFStateÚcomparison_deltar
   r:   Úapproxr!   r"   r#   r$   r%   r&   r'   r(   r;   r5   )rC   r*   r,   Ú@py_assert8r.   Ú@py_assert12Ú@py_assert16Ú@py_assert18Ú@py_assert20Ú@py_assert14Ú@py_format22Ú@py_format24s               r	   Ú#test_progress_requires_same_contextrX      sõ  € Ü×Ñ˜T¸&ÈbÔQ€EÜ×$Ñ$Ð[¬H«JÐ[ÀÐ[¼À»Ð[Ñ$ U¨J¸ÓFÐ[Ì&Ï-É-Ð[ÐXZÐ[É-ÐXZÓJ[Ð[ÐFÐJ[Ñ[×[×[Ö[ÐFÐJ[×[×[×[×[×[Ñ[Œ8×[×[Ó[Œ8×[×[Ô[Ð$×[×[×[×[×[Ð[ U×[×[Ó[ U×[×[×[×[×[Ò[¬H×[×[Ó[¬H×[×[Ô[¨J×[×[×[×[×[Ð[¼×[×[Ó[¼×[×[Ô[À×[×[Ò[¸×[×[Ò[ÐF×[×[×[×[×[Ð[Ì&×[×[Ó[Ì&×[×[Ô[È-×[×[Ò[ÐXZ×[×[Ò[ÐJ[×[×[×[×[×[×[×[×[Ü	�‰”z¨Ö	7Ü×!Ñ! %¬«´X¸bÀ.Ó5QÔR÷ 
8ä	�‰”z¨Ö	5Ü×!Ñ! %¬°#«¼À»ÔF÷ 
6Ð	5÷ 
8Ð	7úç	5Ð	5ús   Ë"*M"Ì/*M.Í"M+Í.M7r   ÚnanÚinfc                 óä   — t        j                  ddd¬«      }t        j                  t        d¬«      5  t        j
                  |t        «       t        | «      «       d d d «       y # 1 sw Y   y xY w)Nr   r>   r?   r@   Úfiniter8   )r   rM   r:   r;   r5   rN   r
   )r   rC   s     r	   Ú.test_nonfinite_replay_cannot_count_as_progressr]       sI   € ä×Ñ˜T¸&ÈbÔQ€EÜ	�‰”z¨Ö	2Ü×!Ñ! %¬«´X¸fÓ5EÔF÷ 
3×	2Ñ	2ús   ´)A&Á&A/c                 ó„  — |j                  t        d| «       t        j                  dd¬«      }t        j                  t
        d¬«      5  t        j                  d|gdd	d
«       d d 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}}y # 1 sw Y   ŒÒxY w)NÚWEIGHTS_DIRr   r>   )rA   zconvergence not measuredr8   r   Úbb50é   Fr   r   )z9%(py2)s
{%(py2)s = %(py0)s.no_improve_rounds
} == %(py5)srC   )r   r   Úpy5zassert %(py7)srE   )r   r   rM   r:   r;   ÚRuntimeErrorÚsweep_roundÚno_improve_roundsr!   r"   r#   r$   r%   r&   r'   r(   )Útmp_pathr)   rC   r*   Ú@py_assert4r+   Ú@py_format6Ú@py_format8s           r	   Ú-test_failed_sweep_does_not_become_convergencerj   '   sÏ   € Ø×Ñœ -°Ô:Ü×Ñ˜T¸&ÔA€EÜ	�‰”|Ð+EÖ	FÜ×Ñ˜U U G¨V°Q¸Ô>÷ 
Gà×"Ñ"Ð' aÐ'Ð" aÑ'×'×'Õ'Ð" a×'×'×'×'×'Ñ'ˆ5×'×'Ó'ˆ5×'×'Ô'Ð"×'×'Ò' a×'×'×'×'×'×'Ô'÷ 
GÐ	Fús   Á
D6Ä6D?c                 ót  ‡	— | dz  j                  d«       |j                  t        d| «       g Š	ˆ	fd„}|j                  t        j                  d|«       t        j                  dt        j
                  ddd	¬
«      gddd«       ‰	d   j                  d«      }‰	d   |dz      }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   j                  d«      }‰	d   |dz      }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 )Nz$mlp_weights_BTC_6H_bb50_seed101.jsonz{}r_   c                 óN   •— ‰j                  | «        t        ddddi«      «       S )NÚResultr   Ú
returncoder   )ÚappendÚtype)ÚcommandÚkwargsÚcallss     €r	   Úrunz;test_sweep_passes_locked_context_to_subprocess.<locals>.run4   s(   ø€ Ø�‰�WÔØ4Œt�H˜b <°Ð"3Ó4Ó6Ð6r   rt   r   r   Úlockedzmodel-and-params)rA   Úincumbent_identityr`   ra   Fr   z!--expected-comparison-fingerprintr   )z%(py1)s == %(py4)s)Úpy1r   zassert %(py6)sr   z--expected-incumbent-identity)Ú
write_textr   r   Ú
subprocessrd   rM   Úindexr!   r"   r&   r'   r(   )
rf   r)   rt   rz   Ú@py_assert0r+   Ú@py_assert2Ú@py_format5Ú@py_format7rs   s
            @r	   Ú.test_sweep_passes_locked_context_to_subprocessr   /   sZ  ø€ ØÐ6Ñ6×BÑBÀ4ÔHØ×Ñœ -°Ô:Ø€Eô7ð ×Ñœ×+Ñ+¨U°CÔ8Ü×Ñ˜¤×!1Ñ!1°$ÈxÐl~Ô!ð  !AØ  Eô+à�!‰H�N‰NÐ>Ó?€EØ�‰8�E˜A‘IÑÐ* (Ð*Ð (Ñ*×*×*Õ*Ð (×*×*Ó*Ð×*×*Ò* (×*×*×*×*×*×*Ó*Ø�!‰H�N‰NÐ:Ó;€EØ�‰8�E˜A‘IÑÐ4Ð"4Ð4ÐÐ"4Ñ4×4×4Õ4ÐÐ"4×4×4Ó4Ð×4×4Ò4Ð"4×4×4×4×4×4×4Ô4r   )r?   r>   )Úbuiltinsr#   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter!   r:   Útoolsr   r   r
   r2   r<   rX   ÚmarkÚparametrizeÚfloatr]   rj   r   r   r   r	   Ú<module>rˆ      sd   ðß  „ ƒå .óKò<ò
1òGð ‡�×Ñ˜¡E¨%£L±%¸³,Ð#?Ó@ñGó AðGò(ó5r   