Ë
    ­«ëj°  ã                   ó’   — 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 d dlmZ defd„Zdefd„Zdefd„Zdefd	„Zdefd
„Zdefd„Zy)é    N)ÚPath)Úingest_worker)Úensure_shared_rootÚtmp_pathc                 ó0  — | dz  }|j                  d«       t        j                  } ||«      }t        j                  }d} ||«      }|j
                  } |«       }||k(  }	|	�s£t        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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                  |«      d	œ
z  }
d
d|
iz  }t        t        j                  |«      «      ‚d x}x}x}	x}x}x}x}}y )Nzf.txtÚabcs   abc©ú==)zË%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.compute_sha256
}(%(py3)s)
} == %(py17)s
{%(py17)s = %(py15)s
{%(py15)s = %(py13)s
{%(py13)s = %(py9)s
{%(py9)s = %(py7)s.sha256
}(%(py11)s)
}.hexdigest
}()
}ÚiwÚpÚhashlib)
Úpy0Úpy2Úpy3Úpy5Úpy7Úpy9Úpy11Úpy13Úpy15Úpy17zassert %(py19)sÚpy19)Ú
write_textr   Úcompute_sha256r   Úsha256Ú	hexdigestÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)r   r   Ú@py_assert1Ú@py_assert4Ú@py_assert8Ú@py_assert10Ú@py_assert12Ú@py_assert14Ú@py_assert16Ú@py_assert6Ú@py_format18Ú@py_format20s               ú:/home/oem/CyberBrain26-unified/tests/test_ingest_worker.pyÚtest_compute_sha256r0      s;  € Ø�7Ñ€AØ‡L�L�ÔÜ×ÑÐEÑ˜QÓÐE¤7§>¡>ÐE°&ÐE¡>°&Ó#9ÐEÐ#9×#CÑ#CÐEÑ#CÓ#EÐEÐÐ#EÑE×E×EÖEÐÐ#E×E×E×E×E×EÑEŒ2×E×EÓEŒ2×E×EÔEÐ×E×E×E×E×EÐE˜Q×E×EÓE˜Q×E×EÔEÐ×E×E×E×E×EÐE¤7×E×EÓE¤7×E×EÔE >×E×EÒE°&×E×EÒEÐ#9×E×EÒEÐ#C×E×EÒEÐ#E×E×E×E×E×E×E×EÖEó    c                 óˆ  — t        | dz  «      }t        j                  } ||«      }g }||k(  }|�s
t        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t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}y )	NÚsharedr	   )z[%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.read_manifest_entries
}(%(py3)s)
} == %(py8)sr   Úroot©r   r   r   r   Úpy8úassert %(py10)sÚpy10)r   r   Úread_manifest_entriesr   r   r   r    r!   r"   r#   r$   )r   r4   r%   r&   Ú@py_assert7r,   Ú@py_format9Ú@py_format11s           r/   Ú test_read_manifest_entries_emptyr=      s¹   € Ü˜h¨Ñ1Ó2€DÜ×#Ñ#Ð/Ñ# DÓ)Ð/¨RÐ/Ð)¨RÑ/×/×/Ö/Ð)¨R×/×/×/×/×/Ñ/Œ2×/×/Ó/Œ2×/×/Ô/Ð#×/×/×/×/×/Ð/ D×/×/Ó/ D×/×/Ô/Ð)×/×/Ò/¨R×/×/×/×/×/×/Ö/r1   c                 ó  — | dz  }|j                  d«       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t        j                  |«      dœz  }t        t        j                  |«      «      ‚d x}}y )Núconversations.jsonz{}úNassert %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.is_ai_export
}(%(py3)s)
}r   r   ©r   r   r   r   ©
r   r   Úis_ai_exportr   r    r   r!   r"   r#   r$   ©r   r   r%   r&   Ú@py_format6s        r/   Útest_is_ai_export_namerF      s”   € ØÐ'Ñ'€AØ‡L�L�ÔÜ�?‰?Ð‰?˜1ÓÐÑ××××ÕŒ2××ÓŒ2××Ôˆ?×××××Ð˜1××Ó˜1××ÔÐ×××××Ór1   c                 ó  — | dz  }|j                  d«       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t        j                  |«      dœz  }t        t        j                  |«      «      ‚d x}}y )Nz	data.jsonz{"messages": [{"role":"user"}]}r@   r   r   rA   rB   rD   s        r/   Útest_is_ai_export_contentrH      s”   € Ø�;Ñ€AØ‡L�LÐ2Ô3Ü�?‰?Ð‰?˜1ÓÐÑ××××ÕŒ2××ÓŒ2××Ôˆ?×××××Ð˜1××Ó˜1××ÔÐ×××××Ór1   c                 ó,  — | dz  }|j                  d«       t        j                  } ||«      }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                  |«      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}x}}| dz  }|j                  d«       t        j                  } ||«      }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                  |«      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}x}}y )Nzn.mdÚxÚnoter	   )zS%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.classify_file
}(%(py3)s)
} == %(py8)sr   r   r5   r7   r8   r?   z{"messages":[]}z	ai-exportÚp2)r   r   Úclassify_filer   r   r   r    r!   r"   r#   r$   )	r   r   r%   r&   r:   r,   r;   r<   rL   s	            r/   Útest_classify_filerN      s€  € Ø�6Ñ€AØ‡L�L�ÔÜ×ÑÐ(Ñ˜AÓÐ( &Ð(Ð &Ñ(×(×(Ö(Ð &×(×(×(×(×(Ñ(Œ2×(×(Ó(Œ2×(×(Ô(Ð×(×(×(×(×(Ð(˜A×(×(Ó(˜A×(×(Ô(Ð×(×(Ò( &×(×(×(×(×(×(Õ(Ø	Ð(Ñ	(€BØ‡M�MÐ#Ô$Ü×ÑÐ.Ñ˜BÓÐ. ;Ð.Ð ;Ñ.×.×.Ö.Ð ;×.×.×.×.×.Ñ.Œ2×.×.Ó.Œ2×.×.Ô.Ð×.×.×.×.×.Ð.˜B×.×.Ó.˜B×.×.Ô.Ð×.×.Ò. ;×.×.×.×.×.×.Ö.r1   c                 ó„  — t        | dz  «      }|dz  dz  }|j                  d¬«       |dz  j                  d«       |dz  j                  d«       d	d l} |j                  d
«      j                  «       }d	dlm}  ||ddœ|¬«       t        j                  d|¬«      }|d   }|d   }||z   }	d}
|	|
k(  }|s€t        j                  d|fd|	|
f«      t        j                  |«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d 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}}y )Nr3   Ú
processingÚb1T)Úparentsza.txtÚsamezb.txtr   s   same)Úmanifest_writeÚ
classified)r   Ústatus)Úshared_rootÚ	processedÚ
duplicatesé   r	   )z(%(py1)s + %(py3)s) == %(py7)s)Úpy1r   r   zassert %(py9)sr   é   )ú>=)z%(py1)s >= %(py4)s)r[   Úpy4zassert %(py6)sÚpy6)r   Úmkdirr   r   r   r   Ú cyberbrain26.product.shared_rootrT   r   Úprocess_batchr   r   r"   r#   r$   )r   r4   Úprocr   ÚhrT   ÚresÚ@py_assert0Ú@py_assert2r&   r,   Ú@py_assert5Ú@py_format8Ú@py_format10Ú@py_assert3Ú@py_format5Ú@py_format7s                    r/   Útest_process_batch_deduprn   (   sX  € Ü˜h¨Ñ1Ó2€DØ�,Ñ Ñ%€DØ‡J�J�t€JÔØ	ˆG�^×Ñ Ô'Ø	ˆG�^×Ñ Ô'ãØˆ�‰�wÓ×)Ñ)Ó+€AÝ?Ù˜a¨<Ñ8ÀdÕKÜ
×
Ñ
˜4¨TÔ
2€CØˆ{ÑÐ4˜c ,Ñ/Ð4ÐÐ/Ñ/Ð4°1Ð4Ð/°1Ñ4×4×4Õ4Ð/°1×4×4Ó4Ð×4×4Ò4Ð/×4×4Ò4°1×4×4×4×4×4×4×4àˆ|ÑÐ! Ð!Ð Ñ!×!×!Õ!Ð ×!×!Ó!Ð×!×!Ò! ×!×!×!×!×!×!Ô!r1   )Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   r   Úpathlibr   Úcyberbrain26.productr   r   ra   r   r0   r=   rF   rH   rN   rn   © r1   r/   ú<module>rv      s_   ðß  „ ƒÝ å 4Ý ?ðF $ó Fð0¨tó 0ð
 Tó ð¨ó ð/ ó /ð" tô "r1   