U
    )3g@	                     @   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                       sZ   e Zd ZdZeddd fddZeeddd	Zee	dd
dZ
eed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.
    r   N)	root_pathgitreturnc                    s   t  | || _dS )z9Initialize this instance with the root and a git command.N)super__init___git)selfr   r   	__class__ */tmp/pip-unpacked-wheel-3opeica4/git/db.pyr   "   s    zGitCmdObjectDB.__init__)binshar   c                 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   Zstream_object_datar   r   r	   )r   r   r   r   r   streamr   r   r   r   ,   s    zGitCmdObjectDB.stream)partial_hexshar   c              
   C   sR   z| j |\}}}t|W S  ttfk
rL } zt||W 5 d}~X Y nX dS )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   Z	_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__Z
gitdb.baser   r   Zgitdb.dbr   r   Z	gitdb.excr   Zgit.utilr   r	   Zgit.excr
   typingr   Z	git.typesr   Zgit.cmdr   r   r   r   r   r   <module>   s   