
    C                     `    d Z ddlmZmZmZmZmZmZ ddlm	Z	m
Z
  G d de      Zd Zd Zd	 Zy
)zBundle format support.
    )DictListTupleOptionalUnionSequence   )PackDatawrite_pack_datac                   &    e Zd ZdZi Zg Zi Zg Zd Zy)BundleNc                 4   t        |t        |             sy| j                  |j                  k7  ry| j                  |j                  k7  ry| j                  |j                  k7  ry| j
                  |j
                  k7  ry| j                  |j                  k7  ryy)NFT)
isinstancetypeversioncapabilitiesprerequisites
references	pack_data)selfothers     !lib/third_party/dulwich/bundle.py__eq__zBundle.__eq__%   s    %d,<<5==( 2 22!4!44??e...>>U__,    )	__name__
__module____qualname__r   r   r   r   r   r    r   r   r   r      s     GLMJIr   r   c                 l   i }g }i }| j                         }|dk\  r|j                  d      rq|dd  j                  d      }	 |j                  dd      \  }}|j	                  d      }|||j	                  d      <   | j                         }|j                  d      rq|j                  d      rk|dd  j                  d      j                  dd      \  }}	|j                  ||	j	                  d      f       | j                         }|j                  d      rk|dk7  r?|j                  d      j                  dd      \  }}
|||
<   | j                         }|dk7  r?t        j                  |       }t               }||_
        ||_        ||_        ||_        ||_        |S # t
        $ r |}d }Y Jw xY w)	N      @r	      
   =utf-8   -    )readline
startswithrstripsplitdecode
ValueErrorappendr
   	from_filer   r   r   r   r   r   )fr   r   r   r   linekeyvalueobj_idcommentrefr   rets                r   _read_bundler7   5   s   LMJ::<D!|ood#8??5)D.!ZZa0
U
 W-05LG,-::<D ood# //$
 HOOE288qAfgnnW&=>?zz| //$
 %-E*00q9 
3zz| %- ""1%I
(CCN#C%CCMCKJ-  s   F" "F32F3c                     | j                         }|dk(  rt        | d      S |dk(  rt        | d      S t        d|z        )zRead a bundle file.   # v2 git bundle
      # v3 git bundle
r    z$unsupported bundle format header: %r)r'   r7   AssertionError)r/   	firstlines     r   read_bundler>   X   sJ    

I((Aq!!((Aq!!
?)K
LLr   c                 $   |j                   }||j                  rd}nd}|dk(  r| j                  d       n%|dk(  r| j                  d       nt        d|z        |dk(  r{|j                  j	                         D ]^  \  }}| j                  d|j                  d      z          |#| j                  d|j                  d      z          | j                  d	       ` |j                  D ]*  \  }}| j                  d
||j                  d      fz         , |j                  j	                         D ]  \  }}| j                  d||fz          | j                  d	       t        | t        |j                        t        |j                               y )Nr    r:   r9   r;   zunknown version %dr!   r$   r#   r"   s   -%s %s
s   %s %s
)r   r   writer<   itemsencoder   r   r   lenr   iter)r/   bundler   r1   r2   r3   r4   r5   s           r   write_bundlerF   b   sZ   nnGGG!|	$%	A	$%1G;<<!| --335JCGGD3::g../ u||G445GGEN	 6
 $11	vw~~g'>??@ 2((..0V	
fc]*+ 1GGENAs6++,d63C3C.DEr   N)__doc__typingr   r   r   r   r   r   packr
   r   objectr   r7   r>   rF   r   r   r   <module>rK      s4   * @ ? +V 2 FMFr   