Ë
    ómxi_  ã                   ó–   — d Z ddlmZmZmZmZmZ ddlmZm	Z	m
Z
mZmZmZ ddlmZ ddlZddlmZ ddlZddlZddlmZ  G d„ d	e«      Zy)
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                   ó8   — e Zd ZdZdZd„ fd„Zd„ Zd„ Zd„ Zd„ Z	y	)
Ú
TestStreamzTest stream classes)é   i'  i ¢ c                  ó   — y )N© )Úss    úM/home/htdocs/ttos/venv/lib/python3.12/site-packages/gitdb/test/test_stream.pyú<lambda>zTestStream.<lambda>)   s   � ó    c                 óX  — d}t        |«      |dz
  kD  sJ d|t        |«      fz  «       ‚t        |«      |z  }t        |«      D ](  }|j                  |«      }|||z  |dz   |z   }||k(  rŒ(J ‚ |j                  «       }	|	r|	|t        |	«       d k(  sJ ‚t        |t        «      r,t        |j                  «       «      |j                  «       k(  sJ ‚ ||«       |j                  «       }
|
|k(  sJ ‚t        |t        «      r-t        |j                  «       «      |j                  «       k(  sJ ‚yy)a  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_readerz TestStream._assert_stream_reader)   s9  € ð ˆÜ�5‹z˜B ™FÒ"Ð\Ð$IÈRÔQTÐUZÓQ[ÐL\Ñ$\Ó\Ð"ô �‹Z˜2ÑˆÜ�r“ò 	!ˆAØ—;‘;˜r“?ˆDØ˜!˜b™& ! a¡%¨2¡Ð.ˆEØ˜5“=Ð �=ð	!ð
 �{‰{‹}ˆÙØ˜5¤# d£)  Ð-Ò-Ð-Ð-ô �fÔ4Ô5Ü�v—{‘{“}Ó%¨×)EÑ)EÓ)GÒGÐGÐGñ 	�fÔð —‘“ˆØ˜Š~Ðˆ~ä�fÔ4Ô5Ü�v—{‘{“}Ó%¨×)EÑ)EÓ)GÒGÐGÑGð 6r   c           
      ó¢  — t        d«      D �]@  }t        d«      D �].  }| j                  D �]  }t        |d¬«      }|rt        j                  t        t        |«      «      }t        j                  ||«      \  }}}|t        |«      k(  sJ ‚|t        k(  sJ ‚t        |d¬«      }	|	j                  t        |«      k(  sGJ ‚t        j                  |«      }t        ||t        |«      «      }|j                  t        |«      k(  sJ ‚| j                  ||d„ «       t        «       }
|
|_        |
j                  rJ ‚~|
j                  |k(  r�ŒJ ‚ �Œ1 �ŒC y )Né   F©Ú	randomize)Úclose_on_deletionc                 ó$   — | j                  d«      S )Nr   )Úseek)Úrs    r   r   z3TestStream.test_decompress_reader.<locals>.<lambda>g   s   € ÈÏÉÈqË	€ r   )r   Ú
data_sizesr   ÚzlibÚcompressr   r   r   Únewr   Ú_sr-   r   Ú_mÚclosed)r#   r2   Ú	with_sizeÚdsr%   ÚzdataÚtypÚsizeÚreaderÚtest_readerÚdummys              r   Útest_decompress_readerz!TestStream.test_decompress_readerL   sF  € Ü!& q£ó "	=ÐÜ" 1›Xó !=�	ØŸ/™/ó  =�BÜ& r°UÔ;�Eñ !ä $§¡¬k¼-ÈÓ.OÓ P˜Ü,B×,FÑ,FÀuÐN_Ó,`Ñ)˜˜T 6Ø#¤s¨5£zÒ1Ð1Ð1Ø"¤mÒ3Ð3Ð3ô '=¸UÐV[Ô&\˜Ø*Ÿ~™~´°U³Ò;Ð;Ð;ô !%§¡¨eÓ 4˜Ü!7¸Ð?PÔRUÐV[ÓR\Ó!]˜Ø%Ÿy™y¬C°«JÒ6Ð6Ð6ð ×.Ñ.¨v°uÑ>QÔRô (›M�EØ %�F”Ià$Ÿ|š|Ð+Ð+ØØ Ÿ<™<Ð+<Ô<Ð<Ð<òA =ò!=ñ"	=r   c                 ó0  — t        «       }d|j                  d«      k(  sJ ‚t        |j                  d¬«      «      dk(  sJ ‚t        |j                  d¬«      «      dk(  sJ ‚|j                  «       }|j                  d«       |j                  «       |k7  sJ ‚y )	Nr/   s   hir   )Úas_hexé(   r   é   s   hi again)r   Úwriter   Úsha)r#   ÚwriterÚprev_shas      r   Útest_sha_writerzTestStream.test_sha_writert   s‰   € Ü“ˆØ�F—L‘L Ó'Ò'Ð'Ð'Ü�6—:‘: Q�:Ó'Ó(¨BÒ.Ð.Ð.Ü�6—:‘: Q�:Ó'Ó(¨BÒ.Ð.Ð.ð —:‘:“<ˆØ�‰�[Ô!Ø�z‰z‹|˜xÒ'Ð'Ñ'r   c           
      óæ  — | j                   D �]a  }t        j                  «       \  }}t        |«      }t	        |d¬«      }t        |«      |j                  |«      k(  sJ ‚|j                  «        | j                  t        t        j                  |«       t        j                  |t        j                  t        t        dd«      z  «      }t        j                  |t        j                  j!                  |«      «      }t        |«      t        j                  j!                  |«      k(  sJ ‚t        j                  |«       |t#        j$                  |d«      k(  sJ ‚t        j&                  |«       �Œd y )NFr0   ÚO_BINARYr   r   )r6   ÚtempfileÚmkstempr	   r   r   rJ   ÚcloseÚassertRaisesÚOSErrorÚosÚopenÚO_RDONLYÚgetattrr   ÚpathÚgetsizer7   r8   Úremove)r#   r>   ÚfdrZ   Úostreamr!   Úwritten_datas          r   Útest_compressed_writerz!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           
      ój  — t        t        d«      «      }t        «       }dD ]�  }|j                  t	        |«      «      }|j                  «       }t        |«      |j                  k(  sJ ‚|j                  t        |j                  |j                  t        |«      «      «      }|j                  |k(  rŒ�J ‚ y )NÚobjects)s(   888401851f15db0eed60eb1bc29dec5ddcace911s(   7bb839852ed5e3a069966281bb08d50012fb309b)r
   r   r   r$   r   r   r   rA   Ústorer   Útyper   Úhexsha)r#   ÚodbÚmdbrK   r^   r!   Údumps          r   Ú#test_decompress_reader_special_casez.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Ø—;‘; #Ó%Ð%Ð%ñ
	&r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r6   r-   rE   rN   r`   ri   r   r   r   r   r   #   s)   „ áà/€JáAOó  HòF#=òP	(òó.&r   r   )rm   Úgitdb.test.libr   r   r   r   r   Úgitdbr   r	   r
   r   r   r   Ú
gitdb.utilr   r7   Ú	gitdb.typr   rQ   rV   Úior   r   r   r   r   ú<module>rs      sD   ðñ
 ÷õ ÷÷ õ "ã õó Û 	Ý ô@&�õ @&r   