ó
    ±“,j_  ã                   ó–   • S r SSKJrJrJrJrJr  SSKJrJ	r	J
r
JrJrJr  SSKJr  SSKrSSKJr  SSKrSSKrSSKJr   " S S	\5      rg)
zTest for object dbé    )ÚTestBaseÚDummyStreamÚ
make_bytesÚmake_objectÚfixture_path)ÚDecompressMemMapReaderÚFDCompressedSha1WriterÚLooseObjectDBÚ
Sha1WriterÚMemoryDBÚIStream)Ú
hex_to_binN)Ústr_blob_type)ÚBytesIOc                   óB   • \ rS rSrSrSrS 4S jrS rS rS r	S	 r
S
rg)Ú
TestStreamé#   zTest stream classes)é   i'  i ¢ c                 ó   • g )N© )Úss    Ú¤C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\gitdb/test/test_stream.pyÚ<lambda>ÚTestStream.<lambda>)   s   € È4ó    c                 ó~  • Sn[        U5      US-
  :”  d   SU[        U5      4-  5       e[        U5      U-  n[        U5       H(  nUR                  U5      nX&U-  US-   U-   nXx:X  a  M(   e   UR                  5       n	U	(       a  X’[        U	5      * S :X  d   e[        U[        5      (       a-  [        UR                  5       5      UR                  5       :X  d   eU" U5        UR                  5       n
X¢:X  d   e[        U[        5      (       a.  [        UR                  5       5      UR                  5       :X  d   egg)zòMake stream tests - the orig_stream is seekable, allowing it to be
rewound and reused
:param cdata: the data we expect to read from stream, the contents
:param rewind_stream: function called to rewind the stream to make it ready
    for reuseé
   é   z#Data must be larger than %i, was %iN)ÚlenÚrangeÚreadÚ
isinstancer   ÚdataÚcompressed_bytes_read)ÚselfÚstreamÚcdataÚrewind_streamÚnsÚssÚir#   ÚchunkÚrestÚrdatas              r   Ú_assert_stream_readerÚ TestStream._assert_stream_reader)   s2  € ð ˆÜ�5‹z˜B ™FÓ"Ð\Ð$IÈRÔQTÐUZÓQ[ÐL\Ñ$\Ó\Ð"ô �‹Z˜2ÑˆÜ�r–ˆAØ—;‘;˜r“?ˆDØ˜b™& ! a¡%¨2¡Ð.ˆEØ•=Ð �=ñ ð
 �{‰{‹}ˆÞØ¤# d£)  Ð-Ó-Ð-Ð-ô �fÔ4×5Ñ5Ü�v—{‘{“}Ó%¨×)EÑ)EÓ)GÓGÐGÐGñ 	�fÔð —‘“ˆØ‹~Ðˆ~ä�fÔ4×5Ñ5Ü�v—{‘{“}Ó%¨×)EÑ)EÓ)GÓGÐGÑGð 6r   c           
      ó¾  • [        S5       GHM  n[        S5       GH9  nU R                   GH$  n[        USS9nU(       a€  [        R                  " [        [        U5      5      n[        R                  " XQ5      u  pgnU[        U5      :X  d   eU[        :X  d   e[        USS9n	U	R                  [        U5      :X  d   eOF[        R                  " U5      n[        XQ[        U5      5      nUR                  [        U5      :X  d   eU R                  X„S 5        [        5       n
X¨l        U
R                  (       a   eAU
R                  U:X  a  GM%   e   GM<     GMP     g )Né   F©Ú	randomize)Úclose_on_deletionc                 ó$   • U R                  S5      $ )Nr   )Úseek)Úrs    r   r   Ú3TestStream.test_decompress_reader.<locals>.<lambda>g   s   € ÈÏÉÈqÌ	r   )r    Ú
data_sizesr   ÚzlibÚcompressr   r   r   Únewr   Ú_sr/   r   Ú_mÚclosed)r%   r5   Ú	with_sizeÚdsr'   ÚzdataÚtypÚsizeÚreaderÚtest_readerÚdummys              r   Útest_decompress_readerÚ!TestStream.test_decompress_readerL   s+  € Ü!& q§ÐÜ" 1ŸX�	ØŸ/�/�BÜ& r°UÑ;�Eö !ä $§¢¬k¼-ÈÓ.OÓ P˜Ü,B×,FÒ,FÀuÓ,`Ñ)˜ 6Ø#¤s¨5£zÓ1Ð1Ð1Ø"¤mÓ3Ð3Ð3ô '=¸UÐV[Ñ&\˜Ø*Ÿ~™~´°U³Ó;Ð;Ñ;ô !%§¢¨eÓ 4˜Ü!7¸ÔRUÐV[ÓR\Ó!]˜Ø%Ÿy™y¬C°«JÓ6Ð6Ð6ð ×.Ñ.¨vÑ>QÔRô (›M�EØ %”Ià$Ÿ|Ÿ|Ð+Ð+ØØ Ÿ<™<Ð+<Ö<Ð<Ð<ôA *ô &ò "*r   c                 ó,  • [        5       nSUR                  S5      :X  d   e[        UR                  SS95      S:X  d   e[        UR                  SS95      S:X  d   eUR                  5       nUR                  S5        UR                  5       U:w  d   eg )	Nr2   s   hir   )Úas_hexé(   r   é   s   hi again)r   Úwriter   Úsha)r%   ÚwriterÚprev_shas      r   Útest_sha_writerÚTestStream.test_sha_writert   s‰   € Ü“ˆØ�F—L‘L Ó'Ó'Ð'Ð'Ü�6—:‘: Q�:Ð'Ó(¨BÓ.Ð.Ð.Ü�6—:‘: Q�:Ð'Ó(¨BÓ.Ð.Ð.ð —:‘:“<ˆØ�‰�[Ô!Ø�z‰z‹|˜xÓ'Ð'Ñ'r   c           
      óô  • U R                    GHg  n[        R                  " 5       u  p#[        U5      n[	        USS9n[        U5      UR                  U5      :X  d   eUR                  5         U R                  [        [        R                  U5        [        R                  " U[        R                  [        [        SS5      -  5      n[        R                  " U[        R                  R!                  U5      5      n[        U5      [        R                  R!                  U5      :X  d   e[        R                  " U5        U["        R$                  " US5      :X  d   e[        R&                  " U5        GMj     g )NFr3   ÚO_BINARYr   r   )r:   ÚtempfileÚmkstempr	   r   r   rO   ÚcloseÚassertRaisesÚOSErrorÚosÚopenÚO_RDONLYÚgetattrr!   ÚpathÚgetsizer;   r<   Úremove)r%   rB   Úfdr`   Úostreamr#   Úwritten_datas          r   Útest_compressed_writerÚ!TestStream.test_compressed_writer   s  € Ø—/•/ˆBÜ×'Ò'Ó)‰HˆBÜ,¨RÓ0ˆGÜ˜b¨EÑ2ˆDô �t“9 §¡¨dÓ 3Ó3Ð3Ð3Ø�M‰MŒOð ×Ñœg¤r§x¡x°Ô4ô —’˜œrŸ{™{¬W´R¸ÀQÓ-GÑGÓHˆBÜŸ7š7 2¤r§w¡w§¡°tÓ'<Ó=ˆLÜ�|Ó$¬¯©¯©¸Ó(=Ó=Ð=Ð=Ü�HŠH�RŒLØ¤4§=¢=°°qÓ#9Ó9Ð9Ð9ä�IŠI�d�Oò' "r   c           
      ór  • [        [        S5      5      n[        5       nS H“  nUR                  [	        U5      5      nUR                  5       n[        U5      UR                  :X  d   eUR                  [        UR                  UR                  [        U5      5      5      nUR                  U:X  a  M“   e   g )NÚobjects)s(   888401851f15db0eed60eb1bc29dec5ddcace911s(   7bb839852ed5e3a069966281bb08d50012fb309b)r
   r   r   r&   r   r!   r   rE   Ústorer   Útyper   Úhexsha)r%   ÚodbÚmdbrP   rd   r#   Údumps          r   Ú#test_decompress_reader_special_caseÚ.TestStream.test_decompress_reader_special_case–   s’   € ÜœL¨Ó3Ó4ˆÜ‹jˆóBˆCà—j‘j¤¨C£Ó1ˆGð —<‘<“>ˆDÜ�t“9 §¡Ó,Ð,Ð,ð —9‘9œW W§\¡\°7·<±<ÄÈÃÓOÓPˆDØ—;‘; #Õ%Ð%Ð%òBr   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r:   r/   rI   rS   rf   rp   Ú__static_attributes__r   r   r   r   r   #   s)   † áà/€JáAOô  HòF#=òP	(òõ.&r   r   )rv   Úgitdb.test.libr   r   r   r   r   Úgitdbr   r	   r
   r   r   r   Ú
gitdb.utilr   r;   Ú	gitdb.typr   rW   r\   Úior   r   r   r   r   Ú<module>r}      sD   ðñ
 ÷õ ÷÷ õ "ã õó Û 	Ý ô@&�õ @&r   