
    졇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d dlZd dlmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZ d dlm Z  d Z!d Z"d	 Z#d
 Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+y)    N)GROUPED_UNIT_ALLOCATION HYBRID_GROUPED_DENSE_ROW_INDICES$HYBRID_GROUPED_SPECIALIST_ALLOCATIONgrouped_first_layer_maskhybrid_grouped_first_layer_mask!hybrid_grouped_structure_metadatarandom_sparse_first_layer_mask random_sparse_structure_metadata)FEATURE_COLS)run_mlp_train	train_mlp)flatten_layerspretrainunflatten_layers)effective_artifact_tagc                  
   t        t        d      } | j                  }dt        t              f}||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}}| j                  }d	} ||
      }d	}||kD  }	t        |	      }
d}t        t              }||z  }|
|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  }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                  t              rt	        j                  t              nddt        j                         v st	        j                  t              rt	        j                  t              ndt	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}x}	x}x}
x}x}x}}t        | t              D ]  \  }}t!        t              D ch c]  \  }}||j"                  v s| }}}t$        j&                  } ||      }t)        |      }||k(  }|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                  t$              rt	        j                  t$              ndt	        j                  |      dt        j                         v st	        j                  |      rt	        j                  |      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}x}}  y c c}}w )N   hidden_size==z-%(py2)s
{%(py2)s = %(py0)s.shape
} == %(py5)smaskpy0py2py5assert %(py7)spy7r   axis)T)>)zN%(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.sum
}(axis=%(py5)s)
} > %(py10)s)py1py3r   r   py10)zb%(py14)s
{%(py14)s = %(py0)s(%(py12)s)
} == (%(py17)s * %(py21)s
{%(py21)s = %(py18)s(%(py19)s)
})tuplelenr   )r   py12py14py17py18py19py21assert %(py24)spy24)zp%(py8)s
{%(py8)s = %(py0)s(%(py6)s
{%(py6)s = %(py3)s
{%(py3)s = %(py1)s.flatnonzero
}(%(py4)s)
})
} == %(py10)ssetnprowexpected)r   r#   r$   py4py6py8r%   assert %(py12)sr(   )r   r   shaper'   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationsumr&   zipr   	enumeratefeaturesr1   flatnonzeror0   )r   @py_assert1@py_assert4@py_assert3@py_format6@py_format8@py_assert2@py_assert6@py_assert9@py_assert8@py_assert13@py_assert16@py_assert20@py_assert22@py_assert15@py_format11@py_format23@py_format25r2   familyifeaturer3   @py_assert5@py_assert7@py_format13s                             I/Users/jameslopez/projects/TradingBot25/tests/test_mlp_input_structure.pyCtest_grouped_mask_routes_each_first_layer_unit_to_one_signal_familyr^      s   #LbAD::0"c,/00:00000:000000040004000:00000000000EqEq!EAE!A%E5E&E'EC4EE'4E*EE&*EEEEE!AEEEEEEEEEEEEEEEqEEE!EEEAEEEE&*EEEEEEE5EEE5EEE&EEE'EEEEEECEEECEEEEEEEEEEEE4EEEEEEEEEE4!89V(1,(?^(?*!W7fooC]A(?^>>3>#&3s&'3'83333'8333333s333s33333323332333>333333#333#333&333'3333338333833333333 :^s   9U"U"c                     t        j                  t        d      5  t        t        d       d d d        t        j                  t        d      5  t        g t        dd       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)N16match   r   unknownfuture_featurer   )pytestraises
ValueErrorr   r        r]   @test_grouped_mask_rejects_unsupported_width_and_unknown_featuresrk   "   s\    	z	. 1= 
/	z	3 !B<!B1A!BPRS 
4	3 
/	.	3	3s   A0A<0A9<Bc            
      Z   t        t        d      } t        t        dd      }t        t        dd      }t        t        dd      }|j                  }dt	        t              f}||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}}|j                  } |       }| j                  }	 |	       }
||
k(  }d}|
|k(  }|r|s,t        j                  d||fd||
|f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      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}x}x}	x}
}t        j                  j!                  |j                  d      | j                  d             t        j                  j!                  ||       t        j"                  } |||      }| }|sd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                  |      rt        j                  |      ndt        j                  |      dz  }t        t        j                  |            d x}x}}y )Nr   r   2  r   	mask_seedi.3  r   r   firstr   r   r      )r   r   )zt%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.sum
}()
} == %(py11)s
{%(py11)s = %(py9)s
{%(py9)s = %(py7)s.sum
}()
}zE%(py11)s
{%(py11)s = %(py9)s
{%(py9)s = %(py7)s.sum
}()
} == %(py13)sgrouped)r   r   r4   r   py9py11py13zassert %(py15)spy15   r    zZassert not %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.array_equal
}(%(py3)s, %(py4)s)
}r1   	different)r   r   r$   r4   r5   )r   r   r	   r8   r'   r9   r:   r;   r<   r=   r>   r?   r@   rA   r1   testingassert_array_equalarray_equal)rr   rp   againrx   rF   rG   rH   rI   rJ   rN   @py_assert10rZ   @py_assert12rL   @py_format14@py_format16r[   s                    r]   Htest_random_sparse_mask_matches_grouped_row_sparsity_and_is_reproducibler   )   sn   &|DG*<RSXYE*<RSXYE.|W\]I;;12s<011;11111;111111151115111;1111111111199.9;.'++.+-.;-..3.-3.....;-3......5...5...9...;......'...'...+...-...3........JJ!!%)))"3W[[a[5HIJJ!!%/~~/~eY///////////r///r///~//////e///e//////Y///Y//////////rj   c                      t        t        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   }g 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   }t        |      }d}||k(  }|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}}y )Nr   rm   rn   namerandom_sparse_first_layer_v1r   z%(py1)s == %(py4)sr#   r4   assert %(py6)sr5   ro   active_edgesrq   row_active_edges)   r   r   
   r   r      r   r      r   r   r      r   rw   row_feature_indices)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sr'   )r   r   r4   r   zassert %(py9)srs   )r
   r   r9   r:   r>   r?   r@   r'   r;   r<   r=   )metadata@py_assert0rH   rK   @py_format5@py_format7rF   rL   rZ   rJ   @py_format10s              r]   @test_random_sparse_metadata_records_reproducible_mask_provenancer   6   s   /"X]^HF=======================K )E) E)))) E))) )))E)))))))N#*s*#s****#s***#***s*******&'g+gg'+ggggg'+gggg'ggg+gggggggg-.53./525/25555/255555535553555.555/55525555555rj   c                  `   t        t        d      } | j                  }dt        t              f}||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}}| 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                  |      t	        j                  |      dz  }
dd|
iz  }t        t	        j                  |            d x}x}x}x}	}| j                  }| j                  } |       }||z
  }t        |      }d}||k(  }|sst	        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                  |      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}x}x}}t        t               D ]  \  }}t        t              D ch c]  \  }}||j"                  v s| }}}t$        j&                  }| |   } ||      }t)        |      }	|	|k(  }|sgt	        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                  t$              rt	        j                  t$              ndt	        j                  |      t	        j                  |      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}x}x}	} t*        D ]  }| |   }|j,                  } |       }|s`dt	        j                  |      t	        j                  |      t	        j                  |      dz  }t        t	        j                  |            d x}x}} t/        j0                  t2        d      5  t        t        d       d d d        y c c}}w # 1 sw Y   y xY w) Nr   r   r   r   r   r   r   r     )za%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.sum
}()
})
} == %(py10)sint)r   r#   r$   r   r   r%   r7   r(   t  )z%(py11)s
{%(py11)s = %(py0)s((%(py3)s
{%(py3)s = %(py1)s.size
} - %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s.sum
}()
}))
} == %(py14)s)r   r#   r$   r4   r5   r6   rt   r)   zassert %(py16)spy16)zp%(py9)s
{%(py9)s = %(py0)s(%(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.flatnonzero
}(%(py5)s)
})
} == %(py11)sr0   r1   r3   )r   r#   r$   r   r   rs   rt   assert %(py13)sru   >assert %(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.all
}()
}r#   r$   r   r`   ra   rc   )r   r   r8   r'   r9   r:   r;   r<   r=   r>   r?   r@   rA   r   sizerC   r   rD   r1   rE   r0   r   allrf   rg   rh   )r   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rT   r\   rZ   r[   r}   rO   r~   @py_format15@py_format17r2   rW   rX   rY   r3   @py_format12r   r   s                              r]   Jtest_hybrid_grouped_mask_preserves_specialists_and_dense_cross_family_rowsr   @   s   *<RHD::0"c,/00:00000:000000040004000:00000000000xx!xz!3z?!c!?c!!!!?c!!!!!!3!!!3!!!!!!t!!!t!!!x!!!z!!!?!!!c!!!!!!!yy-488-8:-y:%-3%&-#-&#----&#------3---3------t---t---y------4---4---8---:---&---#-------- !EFV(1,(?^(?*!W7fooC]A(?^>>9$s)9>),9s,-9-9999-999999s999s99999929992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 G 0Cyy}}}y} 0	z	.'!D 
/	.	 _ 
/	.s   Z2ZZ$$Z-c                  P   t        t        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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}d}t        ||      }t        |      }	||	k(  }|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                  t              rt        j                  t              ndt        j                  |      t        j                  |      t        j                  |      t        j                  |	      dz  }
dd|
iz  }t        t        j                  |            d x}x}x}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!   }g d"}d#g}d}||z  }||z   }||k(  }|st        j                  d|fd$||f      t        j                  |      t        j                  |      t        j                  |      t        j                  |      d%z  }d&d'|iz  }
t        t        j                  |
            d x}x}x}x}x}x}}| d(   }t        j                  }d)}|j                  } |t              }	|	j                  } |       } ||      }|j                   } |       }||k(  }|st        j                  d|fd*||f      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                  |      t        j                  |      t        j                  |      t        j                  |      d-z  }d.d/|iz  }t        t        j                  |            d x}x}x}x}x}x}	x}x}x}x}}t#        t        d      }| d0   }|D cg c]%  }t%        j&                  |      j)                         ' }}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}}y c c}w )1Nr   r   r   hybrid_grouped_first_layer_v1r   r   r   r   r5   versionrw   specialist_row_familieslocal_technicalon_chainmacrocandlesticksrsid_structuremarket_flowcross_asset)01234567dense_row_indicesrc   )z[%(py1)s == %(py12)s
{%(py12)s = %(py3)s(%(py10)s
{%(py10)s = %(py4)s(%(py6)s, %(py8)s)
})
}listrange)r#   r$   r4   r5   r6   r%   r(   zassert %(py14)sr)   r   r   blocked_edgesr   r   )r   r   r   r   r   r   r   rw   7   )z*%(py1)s == (%(py4)s + (%(py6)s * %(py8)s)))r#   r4   r5   r6   r7   r(   feature_cols_sha256)z%(py1)s == %(py22)s
{%(py22)s = %(py20)s
{%(py20)s = %(py18)s
{%(py18)s = %(py5)s
{%(py5)s = %(py3)s.sha256
}(%(py16)s
{%(py16)s = %(py14)s
{%(py14)s = %(py12)s
{%(py12)s = %(py9)s
{%(py9)s = %(py7)s.join
}(%(py10)s)
}.encode
}()
})
}.hexdigest
}()
}hashlibr   )r#   r$   r   r   rs   r%   r(   r)   r   r+   py20py22r.   r/   r   )r   r   r9   r:   r>   r?   r@   r   r   r;   r<   r=   r   sha256joinencode	hexdigestr   r1   rE   tolist)r   r   rH   rK   r   r   rZ   r[   rM   @py_assert11r\   r   r}   rT   rG   rL   rN   rO   rS   @py_assert17@py_assert19@py_assert21rU   rV   r   r2   s                             r]   1test_hybrid_grouped_metadata_audits_exact_v1_maskr   O   s+   02NHF>>>>>>>>>>>>>>>>>>>>>>>I#!#!####!######!#######-. %6Z>0@3 . 3   	. 3   	 /   	3     	 
 '(>q>">q">D,>>(,>>>>>(,>>>>(>>>>>>D>>>D>>>>>>>>>>>>q>>>">>>>>>,>>>>>>>>>N#*s*#s****#s***#***s*******O$++$++++$+++$++++++++++&'S+HSB4SRSS4RS8S+H8+SS'+SSSSS'+SSSS'SSS+HSSS4SSSRSSSSSSSSS)*lgnnlVlV[[l[=Vl=V=]=]l=]=_ln=_.`l.`.j.jl.j.ll*.lllll*.llll*llllllglllglllnlllVlll[llllllllllll=Vlll=]lll=_lll.`lll.jlll.llllllllll*<RHD)*\W[.\W[PSr~~c/B/I/I/KW[\.\*.\\\\\*.\\\\*\\\.\\\\\\\\.\s   =*^#c                     t         j                  j                  d      } t        t        d      }| j                  dt        t              f      }| j                  d      }t        j                  dt              }t        j                  t        j                  ddd	            }t        ||||dd
gdd|j                  d   |j                  d   d |      \  }}t         j                  }|d   d   |    }	 ||	      }
d}|
|k(  }|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(                  |
      t        j(                  |      dz  }dd|iz  }t+        t        j,                  |            d x}x}	x}
x}}|d
d  }|j.                  } |       }|s`dt        j(                  |      t        j(                  |      t        j(                  |      dz  }t+        t        j,                  |            d x}x}}|t        j                  dt              t        j                  dt              g}t1        ||      }t3        |g d|      }t        |      }d}
||
k(  }|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}}
t1        |      }	t        |	      }
d$}|
|k(  }|sSt        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&                  t0              rt        j(                  t0              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}}t         j                  }|d   d   |    }	 ||	      }
d}|
|k(  }|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(                  |
      t        j(                  |      dz  }dd|iz  }t+        t        j,                  |            d x}x}	x}
x}}y ))Nr   r   r   H   r   dtypez
2020-01-01h)periodsfreqrc      r   <   c                      y )Nri   )_s    r]   <lambda>zOtest_hybrid_phase1_and_cma_masking_preserve_specialist_blocks.<locals>.<lambda>l   s    rj   )epochsseed	val_startval_endlogfirst_layer_maskr   r   )zS%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.count_nonzero
}(%(py4)s)
} == %(py9)sr1   )r   r   r4   r5   rs   zassert %(py11)srt   r   r   rc   r   rw   rc   r   r   rc   rw   i  )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr'   theta)r   r#   r$   r5   zassert %(py8)sr6   i  )zN%(py6)s
{%(py6)s = %(py0)s(%(py4)s
{%(py4)s = %(py1)s(%(py2)s)
})
} == %(py9)sr   layers)r   r#   r   r4   r5   rs   )r1   randomdefault_rngr   r   normalr'   onesboolpdSeries
date_ranger   iloccount_nonzeror9   r:   r;   r<   r=   r>   r?   r@   r   r   r   )rngr   Xyvalidtimesr   r   rF   rH   rZ   rN   r[   r   r   r   rK   rG   rI   masksr   restoredr   @py_format9s                           r]   =test_hybrid_phase1_and_cma_masking_preserve_specialist_blocksr   b   s   
))


#C*<RHD

S./
0A


AGGBd#EIIbmmL"3GHE	1eURGAB**R.%**R.nIFA
 5F1IaL$/5/05A50A55550A55555525552555555/5550555A555555588<<<>>8<>2777$/t1LME65)E~u=Hu:::33uu:f%.3%&.$.&$....&$......3...3......~...~......f...f...%...&...$.......7HQKND517127a72a77772a7777772777277777717772777a77777777rj   c                     t        t        d      } t        j                  j	                  d      }|j                  dt        t              f      |j                  d      f|j                  d      |j                  d      f|j                  d      |j                  d      fg}| t        j                  dt        	      t        j                  dt        	      g}t        ||      }t        |g d
|      }t        j                  }|d   d   |     }d}||k(  }	 ||	      }
|
st        j                  d|	fd||f      t        j                  |      t        j                  |      dz  }ddt        j                          v st        j"                  t              rt        j                  t              ndt        j                  |      |t        j                  |
      dz  }t%        t        j&                  |            d x}x}x}	x}}
t        j(                  j+                  |d   d   |    |d   d   |           y )Nr   r   r   r   r   rc   r   rw   r   r   r   g        r   )z%(py4)s == %(py7)s)r4   r   zGassert %(py11)s
{%(py11)s = %(py2)s
{%(py2)s = %(py0)s.all
}(%(py9)s)
}r1   )r   r   rs   rt   )r   r   r1   r   r   r   r'   r   r   r   r   r   r9   r:   r>   r;   r<   r=   r?   r@   ry   rz   )r   r   r   r   r   r   rF   rH   rL   rZ   r}   rJ   r   s                r]   Btest_masked_parameter_roundtrip_never_restores_blocked_connectionsr   z   s   #LbAD
))


"C	"c,/0	13::2:3FG		!3::1:#56		 #**!*"45F
 2777$/t1LME65)E~u=H66/(1+a.$'/3/'3./6///////'3///'///3//////2///2///6///////////JJ!!(1+a."6q	!T8JKrj   c            	      f   d} d}d}t        | ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}x}}d} d}d}t        | ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}x}}d} d}d}t        | ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}x}}d} d}d}t        | ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}x}}d} d}d}t        | ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}x}}d} d}d}t        | ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}x}}d} d}d}t        | ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}x}}d} d}d}t        | ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}x}}d} d}d}t        | ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}x}}d} d}d}t        | ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}x}}t        j                  t        d      5  t        ddd       d d d        t        j                  t        d      5  t        ddd       d d d        t        j                  t        d      5  t        ddd       d d d        y # 1 sw Y   lxY w# 1 sw Y   GxY w# 1 sw Y   y xY w)Nbb50r   rr   bb50_groupedr   )zC%(py8)s
{%(py8)s = %(py0)s(%(py2)s, %(py4)s, %(py6)s)
} == %(py11)sr   )r   r   r4   r5   r6   rt   r   ru   bullbb50_grouped_bull
grouped_v1denserandom_sparsebb50_random_sparsebb50_random_sparse_bullhybrid_groupedbb50_hybrid_groupedbb50_hybrid_grouped_bullhybrid_grouped_v1reservedra   random_sparse_v1grouped_v1_bull)r   r9   r:   r;   r<   r=   r>   r?   r@   rf   rg   rh   )rF   rH   rZ   r[   r}   rM   r   r   s           r]   ;test_grouped_training_uses_an_isolated_default_artifact_tagr
     sO   "(M%MM!&%;M~M;~MMMM;~MMMMMM!MMM!MMM&MMM%MMMMMM;MMM~MMMMMMMM"(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S)SSS<SSS@SSSSSSSSS".QQyQ!,yAQ\QA\QQQQA\QQQQQQ!QQQ!QQQ,QQQQQQyQQQAQQQ\QQQQQQQQ"(C%CC!&%9CVC9VCCCC9VCCCCCC!CCC!CCC&CCC%CCCCCC9CCCVCCCCCCCC"(Y%YY!&%AYEYYAEYYYYYAEYYYYYYY!YYY!YYY&YYY%YYYYYYAYYYEYYYYYYYYY"(_&_/_!&&/B_F__BF_____BF_______!___!___&___&___/___B___F_________".WWW!,GW<WG<WWWWG<WWWWWW!WWW!WWW,WWWWWWWWWGWWW<WWWWWWWW"([%[1A[!&%1AB[F[[BF[[[[[BF[[[[[[[![[[![[[&[[[%[[[1A[[[B[[[F[[[[[[[[["(a&a2Ba!&&2BCaGaaCGaaaaaCGaaaaaaa!aaa!aaa&aaa&aaa2BaaaCaaaGaaaaaaaaa"5fuf>Nf!"5u>NOfSffOSfffffOSfffffff!fff!fff"5fffufff>NfffOfffSfffffffff	z	4|U4DE 
5	z	415:JK 
5	z	40%9IJ 
5	4	 
5	4	4	4	4	4s$   nn8n'nn$'n0c                     | j                  t        dg d       t        j                  t        d      5  t        j                          d d d        y # 1 sw Y   y xY w)Nargv)ztrain_mlp.pyz--dataz
unused.csv--input-structurer  r   ra   )setattrsysrf   rg   
SystemExitr   mainmonkeypatchs    r]   6test_hybrid_direct_trainer_requires_an_isolated_outputr     s?    V &  
z	- 
.	-	-   AAc                     | j                  t        dg d       t        j                  t        d      5  t        j                          d d d        y # 1 sw Y   y xY w)Nr  )zrun_mlp_train.pyr  r  z--sweepr   ra   )r  r  rf   rg   r  r   r  r  s    r]   >test_hybrid_orchestrator_rejects_shared_sweep_and_preset_pathsr     sA    V &  
z	- 
.	-	-r  ),builtinsr;   _pytest.assertion.rewrite	assertionrewriter9   r   r  numpyr1   pandasr   rf   strategies.mlp_feature_groupsr   r   r   r   r   r   r	   r
   strategies.strategy_mlp_scoresr   toolsr   r   tools.train_mlpr   r   r   tools.run_mlp_trainr   r^   rk   r   r   r   r   r   r   r
  r  r  ri   rj   r]   <module>r#     st       
   	 	 	 8 * F F 64T
06E]&80L"K&rj   