a
    (ºDf
  ã                   @   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)ÚselfZref_file©Ú	__class__© úY/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/gitdb/db/ref.pyr      s    
zReferenceDB.__init__c                    s*   |dkrt ƒ | _|  ¡  ntƒ  |¡ d S )NÚ_dbs)Úlistr   Ú_update_dbs_from_ref_filer   Ú_set_cache_)r   Úattrr	   r   r   r      s    
zReferenceDB._set_cache_c           
   	      s<  | j }|d u rddlm} |}tƒ ‰ zDtj| jddd}dd„ |D ƒ‰ W d   ƒ n1 s\0    Y  W n tyz   Y n0 tˆ ƒ}dd	„ | j	D ƒ}|| D ]6}t
| j	d d … ƒD ]\}}| ¡ |kr²| j	|= q²q²qœt|| ‡ fd
d„d}	|	D ]F}z,||ƒ}t|tƒr| ¡  | j	 |¡ W qð ty4   Y qð0 qð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©Z	ref_pathsr   r   Ú<lambda>A   r   z7ReferenceDB._update_dbs_from_ref_file.<locals>.<lambda>)Úkey)ÚObjectDBClsZgitdb.db.gitr   r   ÚcodecsÚopenr   ÚOSErrorÚsetr   Ú	enumerater   ÚsortedÚ
isinstancer   Z	databasesÚappendÚ	Exception)
r   Zdbclsr   ÚfZref_paths_setZcur_ref_paths_setÚpathÚir   Zadded_pathsr   r   r   r   "   s4    0z%ReferenceDB._update_dbs_from_ref_fileFc                    s   |   ¡  tƒ  |¡S r   )r   r   Úupdate_cache)r   Úforcer	   r   r   r/   O   s    zReferenceDB.update_cache)F)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r"   r   r   r   r/   Ú__classcell__r   r   r	   r   r      s   -r   )r#   Zgitdb.db.baser   Ú__all__r   r   r   r   r   Ú<module>   s   