
    g@	                         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y)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                 2    t         |   |       || _        y)z9Initialize this instance with the root and a git command.N)super__init___git)selfr   r   	__class__s      ;/var/www/openai/venv/lib/python3.12/site-packages/git/db.pyr   zGitCmdObjectDB.__init__"   s    #	    binshac                 ~    | j                   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'   s6    !%!<!<Z=O!P$Z'488r   c                     | j                   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,   s;    )-)E)EjQWFX)Y&$z&)8T6BBr   partial_hexshac                     	 | j                   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   sO    	3'+yy'B'B>'R$FIuf%%, 	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
CU Cw C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W
% % )  + # ! 
)3] )3r   