
    .Ph@	                         d Z ddgZddlmZmZ ddlmZmZ ddlm	Z	 ddl
mZmZ ddlmZ dd	lmZ dd
lmZ erddlmZ  G d de          ZdS )zCModule with our own gitdb implementation - it uses the git command.GitCmdObjectDBGitDB    )OInfoOStream)r   LooseObjectDB)	BadObject)
bin_to_hex
hex_to_bin)GitCommandError)TYPE_CHECKING)PathLike)Gitc                   `     e Zd ZdZdeddddf fdZdedefd	Zdede	fd
Z
dedefdZ xZS )r   zA database representing the default git object store, which includes loose
    objects, pack files and an alternates file.

    It will create objects only in the loose object database.
    	root_pathgitr   returnNc                 X    t                                          |           || _        dS )z9Initialize this instance with the root and a git command.N)super__init___git)selfr   r   	__class__s      F/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/git/db.pyr   zGitCmdObjectDB.__init__"   s&    ###			    binshac                     | j                             t          |                    \  }}}t          t	          |          ||          S )z+Get a git object header (using git itself).)r   get_object_headerr	   r   r
   )r   r   hexshatypenamesizes        r   infozGitCmdObjectDB.info'   s@    !%!<!<Z=O=O!P!P$Z''4888r   c                     | j                             t          |                    \  }}}}t          t	          |          |||          S )zIGet git object data as a stream supporting ``read()`` (using git itself).)r   stream_object_datar	   r   r
   )r   r   r   r   r    streams         r   r$   zGitCmdObjectDB.stream,   sE    )-)E)EjQWFXFX)Y)Y&$z&))8T6BBBr   partial_hexshac                     	 | j                             |          \  }}}t          |          S # t          t          f$ r}t          |          |d}~ww xY w)aF  
        :return:
            Full binary 20 byte sha from the given partial hexsha

        :raise gitdb.exc.AmbiguousObjectName:

        :raise gitdb.exc.BadObject:

        :note:
            Currently we only raise :exc:`~gitdb.exc.BadObject` as git does not
            communicate ambiguous objects separately.
        N)r   r   r
   r   
ValueErrorr   )r   r%   r   	_typename_sizees         r   partial_to_complete_sha_hexz*GitCmdObjectDB.partial_to_complete_sha_hex3   se    	3'+y'B'B>'R'R$FIuf%%%, 	3 	3 	3N++2	3s   ,/ A AA)__name__
__module____qualname____doc__r   r   bytesr   r!   r   r$   strr+   __classcell__)r   s   @r   r   r      s         (  4      
95 9U 9 9 9 9
CU Cw C C C C3# 3% 3 3 3 3 3 3 3 3r   N)r/   __all__
gitdb.baser   r   gitdb.dbr   r   	gitdb.excr   git.utilr	   r
   git.excr   typingr   	git.typesr   git.cmdr   r    r   r   <module>r=      s    J IW
% % % % % % % % % ) ) ) ) ) ) ) )       + + + + + + + + # # # # # # !                 
)3 )3 )3 )3 )3] )3 )3 )3 )3 )3r   