
    #Cc`c
                     :    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                 d    t          t          |                                            || _        d S N)superr   __init__	_ref_file)selfref_file	__class__s     ,lib/python3.11/site-packages/gitdb/db/ref.pyr	   zReferenceDB.__init__   s*    k4  ))+++!    c                     |dk    r)t                      | _        |                                  d S t          t          |                               |           d S )N_dbs)listr   _update_dbs_from_ref_filer   r   _set_cache_)r   attrr   s     r   r   zReferenceDB._set_cache_   sS    6>>DI**,,,,,+t$$0066666r   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          t          f$ 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IOError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# #A76A7AE
EEFc                 |    |                                   t          t          |                               |          S r   )r   r   r   update_cache)r   forcer   s     r   r?   zReferenceDB.update_cacheO   s3    &&((([$''44U;;;r   )F)
__name__
__module____qualname____doc__r*   r	   r   r   r?   __classcell__)r   s   @r   r   r      s        AA
 K" " " " "7 7 7 7 7* * *Z< < < < < < < < < <r   r   )r,   gitdb.db.baser   __all__r   r   r   r   <module>rH      ss   
       E< E< E< E< E<* E< E< E< E< E<r   