o
    h
                     @   s,   d dl Z d dlmZ dZG dd deZdS )    N)
CompoundDB)ReferenceDBc                       sF   e Zd ZdZdZ fddZ fddZdd Zd fd
d	Z  Z	S )r   z7A database consisting of database referred to in a fileNc                    s   t    || _d S N)super__init__	_ref_file)selfref_file	__class__ @/var/www/vscode/kcb/lib/python3.10/site-packages/gitdb/db/ref.pyr      s   

zReferenceDB.__init__c                    s,   |dkrt  | _|   d S t | d S )N_dbs)listr   _update_dbs_from_ref_filer   _set_cache_)r   attrr
   r   r   r      s   zReferenceDB._set_cache_c           
   	      s6  | j }|d u rddlm} |}t  z"tj| jddd}dd |D  W d    n1 s.w   Y  W n	 ty=   Y nw t }dd	 | j	D }|| D ]}t
| j	d d  D ]\}}| |krh| j	|= qYqYqNt||  fd
dd}	|	D ] }z||}t|tr|  | j	| W qx ty   Y qxw d S )Nr   )GitDBrzutf-8)encodingc                 S   s   g | ]}|  qS r   )strip).0lr   r   r   
<listcomp>.       z9ReferenceDB._update_dbs_from_ref_file.<locals>.<listcomp>c                 S   s   h | ]}|  qS r   )	root_path)r   dbr   r   r   	<setcomp>4   r   z8ReferenceDB._update_dbs_from_ref_file.<locals>.<setcomp>c                    s
     | S r   )index)p	ref_pathsr   r   <lambda>A   s   
 z7ReferenceDB._update_dbs_from_ref_file.<locals>.<lambda>)key)ObjectDBClsgitdb.db.gitr   r   codecsopenr   OSErrorsetr   	enumerater   sorted
isinstancer   	databasesappend	Exception)
r   dbclsr   fref_paths_setcur_ref_paths_setpathir   added_pathsr   r    r   r   "   sB   	
z%ReferenceDB._update_dbs_from_ref_fileFc                    s   |    t |S r   )r   r   update_cache)r   forcer
   r   r   r7   O   s   zReferenceDB.update_cache)F)
__name__
__module____qualname____doc__r$   r   r   r   r7   __classcell__r   r   r
   r   r      s    -r   )r&   gitdb.db.baser   __all__r   r   r   r   r   <module>   s   