
    .Ph
                     :    d dl Z d dlmZ dZ G d de          ZdS )    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                 V    t                                                       || _        d S N)super__init__	_ref_file)selfref_file	__class__s     L/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/gitdb/db/ref.pyr	   zReferenceDB.__init__   s$    !    c                     |dk    r)t                      | _        |                                  d S t                                          |           d S )N_dbs)listr   _update_dbs_from_ref_filer   _set_cache_)r   attrr   s     r   r   zReferenceDB._set_cache_   sM    6>>DI**,,,,,GG%%%%%r   c                   
 | j         }|ddlm} |}t                      
	 t	          j        | j        dd          5 }d |D             
d d d            n# 1 swxY w Y   n# t          $ r Y nw xY wt          
          }d | j	        D             }||z
  D ]E}t          | j	        d d                    D ]&\  }}|                                |k    r	| j	        |= &'Ft          ||z
  
fd	          }	|	D ]a}	  ||          }t          |t                    r|                                 | j	                            |           R# t"          $ r Y ^w xY wd S )
Nr   )GitDBrzutf-8)encodingc                 6    g | ]}|                                 S  )strip).0ls     r   
<listcomp>z9ReferenceDB._update_dbs_from_ref_file.<locals>.<listcomp>.   s     2221QWWYY222r   c                 6    h | ]}|                                 S r   )	root_path)r   dbs     r   	<setcomp>z8ReferenceDB._update_dbs_from_ref_file.<locals>.<setcomp>4   s     @@@R\\^^@@@r   c                 .                         |           S r   )index)p	ref_pathss    r   <lambda>z7ReferenceDB._update_dbs_from_ref_file.<locals>.<lambda>A   s    ioo^_N`N` r   )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'   s             @r   r   z%ReferenceDB._update_dbs_from_ref_file"   s    =******E FF		T^S7CCC 3q22222	3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 	 	 	D	 I@@di@@@ '6 	 	D"49QQQ<00  2<<>>T))	! * ]->>D`D`D`D`aaa 
	 
	D	U4[[b*-- #LLNNN	  $$$$   
	 
	sG   A# AA# AA# AA# #
A0/A0:AE		
EEFc                 n    |                                   t                                          |          S r   )r   r   update_cache)r   forcer   s     r   r>   zReferenceDB.update_cacheO   s-    &&(((ww##E***r   )F)
__name__
__module____qualname____doc__r*   r	   r   r   r>   __classcell__)r   s   @r   r   r      s        AA
 K" " " " "& & & & &* * *Z+ + + + + + + + + +r   r   )r,   gitdb.db.baser   __all__r   r   r   r   <module>rG      ss   
       E+ E+ E+ E+ E+* E+ E+ E+ E+ E+r   