
    gj
                     n    d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlZdZ G d d	eee      Zy)
    )
CompoundDB	ObjectDBW
FileDBBase)LooseObjectDB)PackedDB)ReferenceDB)InvalidDBRootN)GitDBc                        e Zd ZdZeZeZeZ	dZ
dZej                  j                  dd      Z fdZ fdZd Zd	 Zd
 Z xZS )r
   a  A git-style object database, which contains all objects in the 'objects'
    subdirectory

    ``IMPORTANT``: The usage of this implementation is highly discouraged as it fails to release file-handles.
    This can be a problem with long-running processes and/or big repositories.
    pack info
alternatesc                 $    t         |   |       y)z/Initialize ourselves on a git objects directoryN)super__init__)self	root_path	__class__s     A/var/www/openai/venv/lib/python3.12/site-packages/gitdb/db/git.pyr   zGitDB.__init__(   s    #    c                 ^   |dk(  s|dk(  rt               | _        d }| j                  | j                  f| j                  | j
                  f| j                  | j                  ffD ]u  \  }}| j                  |      }t        j                  j                  |      s7| j                  j                   ||             || j
                  u sg| j                  d   }w | j                  st        | j                               |t        |d      sJ d       || _        y t"        | I  |       y )N_dbs	_loose_dbstorez(First database needs store functionality)listr   	packs_dir	PackDBCls	loose_dir
LooseDBClsalternates_dirReferenceDBClsdb_pathospathexistsappendr	   r   hasattrr   r   _set_cache_)r   attrloose_dbsubpathdbclsr&   r   s         r   r*   zGitDB._set_cache_,   s   6>T[0DIH$(NNDNN#C$(NNDOO#D$($7$79L9L#M#O ||G,77>>$'II$$U4[1/#'99R=#O 99#DNN$455 'GHg,FrHrrF &DNG%r   c                 8    | j                   j                  |      S N)r   r   )r   istreams     r   r   zGitDB.storeL   s    ~~##G,,r   c                 6    | j                   j                         S r0   )r   ostream)r   s    r   r3   zGitDB.ostreamO   s    ~~%%''r   c                 8    | j                   j                  |      S r0   )r   set_ostream)r   r3   s     r   r5   zGitDB.set_ostreamR   s    ~~))'22r   )__name__
__module____qualname____doc__r   r   r   r!   r   r#   r   r    r%   r&   joinr"   r   r*   r   r3   r5   __classcell__)r   s   @r   r
   r
      sS     IJ N IIWW\\&,7N$&@-(3r   r
   )gitdb.db.baser   r   r   gitdb.db.looser   gitdb.db.packr   gitdb.db.refr   	gitdb.excr	   r%   __all__r
    r   r   <module>rC      s5   
  ) " $ # 	
=3J	: =3r   