o
    ﯪg@	                     @   s   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 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                       sd   e Zd ZdZdeddddf fddZd	edefd
dZd	ede	fddZ
dedefddZ  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                    s   t  | || _dS )z9Initialize this instance with the root and a git command.N)super__init___git)selfr   r   	__class__ B/var/www/html/chatdoc2/venv/lib/python3.10/site-packages/git/db.pyr   "   s   
zGitCmdObjectDB.__init__binshac                 C   s&   | j t|\}}}tt|||S )z+Get a git object header (using git itself).)r   get_object_headerr   r   r	   )r   r   hexshatypenamesizer   r   r   info'   s   zGitCmdObjectDB.infoc                 C   s*   | 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   streamr   r   r   r    ,   s   zGitCmdObjectDB.streampartial_hexshac              
   C   sD   z| j |\}}}t|W S  ttfy! } zt||d}~w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er   r   r   partial_to_complete_sha_hex3   s   

z*GitCmdObjectDB.partial_to_complete_sha_hex)__name__
__module____qualname____doc__r   r   bytesr   r   r   r    strr&   __classcell__r   r   r   r   r      s    N)r*   __all__
gitdb.baser   r   gitdb.dbr   r   	gitdb.excr   git.utilr   r	   git.excr
   typingr   	git.typesr   git.cmdr   r   r   r   r   r   <module>   s   