
    g
                     2    d dl Z d dlmZ dZ G d de      Zy)    N)
CompoundDB)ReferenceDBc                   B     e Zd ZdZdZ fdZ fdZd Zd fd	Z xZ	S )r   z7A database consisting of database referred to in a fileNc                 0    t         |           || _        y N)super__init__	_ref_file)selfref_file	__class__s     A/var/www/openai/venv/lib/python3.12/site-packages/gitdb/db/ref.pyr	   zReferenceDB.__init__   s    !    c                 n    |dk(  r t               | _        | j                          y t        |   |       y )N_dbs)listr   _update_dbs_from_ref_filer   _set_cache_)r   attrr   s     r   r   zReferenceDB._set_cache_   s,    6>DI**,G%r   c                    | j                   }|ddlm} |}t               	 t	        j
                  | j                  dd      5 }|D cg c]  }|j                          c}d d d        t              }| j                  D ch c]  }|j                          }}||z
  D ]C  }t        | j                  d d        D ]&  \  }	}|j                         |k(  s| j                  |	= ( E t        ||z
  fd      }
|
D ]F  }	  ||      }t        |t              r|j!                          | j                  j#                  |       H y c c}w # 1 sw Y   xY w# t        $ r Y w xY wc c}w # t$        $ r Y zw xY w)Nr   )GitDBrzutf-8)encodingc                 &    j                  |       S r   )index)p	ref_pathss    r   <lambda>z7ReferenceDB._update_dbs_from_ref_file.<locals>.<lambda>A   s    ioo^_N`r   )key)ObjectDBClsgitdb.db.gitr   r   codecsopenr
   stripOSErrorsetr   	root_path	enumeratesorted
isinstancer   	databasesappend	Exception)r   dbclsr   flref_paths_setdbcur_ref_paths_setpathiadded_pathsr   s              @r   r   z%ReferenceDB._update_dbs_from_ref_file"   s\     =*E F		T^^S7Cq0121QWWY2	 D I6:ii@iR\\^i@ '6D"499Q<02<<>T)		! 1 7 ]->>D`aD	4[b*-LLN		  $  ) 3 DC 		
 A,  sT   "E E
E!E$E E(AE-EEE 	E%$E%-	E98E9c                 B    | j                          t        | 	  |      S r   )r   r   update_cache)r   forcer   s     r   r8   zReferenceDB.update_cacheO   s    &&(w#E**r   )F)
__name__
__module____qualname____doc__r    r	   r   r   r8   __classcell__)r   s   @r   r   r      s'    A
 K"&*Z+ +r   r   )r"   gitdb.db.baser   __all__r    r   r   <module>rB      s$   
  E+* E+r   