
    	^c                         d dl Z d dlmZ d dlmZmZ d dlmZ  G d dej                  Z	 G d de
          Zej        ZdS )	    N)_)errorpycompat)
stringutilc                       e Zd ZdS )InvalidPointerN)__name__
__module____qualname__     3/usr/lib/python3/dist-packages/hgext/lfs/pointer.pyr   r      s        Dr   r   c                       e Zd ZdZ fdZed             Zd Zd Zd Z	 e
j        d          Z e
j        d          Z e
j        d	           e
j        d
           e
j        d ej        e          z            dZd Z xZS )gitlfspointers"   https://git-lfs.github.com/spec/v1c                     | j         | d<    t          t          |           j        |  |                     t          j        |                     d S )N   version)VERSIONsuperr   __init__updater   byteskwargs)selfargskwargs	__class__s      r   r   zgitlfspointer.__init__   sL    <Z+mT""+T22H(0011111r   c                     	  | d |                                 D                                                       S # t          $ r2 t          t	          d          t          j        |          z            w xY w)Nc              3   B   K   | ]}|                     d d          V  dS )       Nsplit).0ls     r   	<genexpr>z,gitlfspointer.deserialize.<locals>.<genexpr>#   s0      CCAqwwtQ''CCCCCCr   s   cannot parse git-lfs text: %s)
splitlinesvalidate
ValueErrorr   r   r   pprint)clstexts     r   deserializezgitlfspointer.deserialize    s    	3CC1B1BCCCCCLLNNN 	 	 	 233j6G6M6MM  	s	   8; <A7c                     d }t          |                                                                 |          }d                    d |D                       S )Nc                     | d         dk    | fS )Nr   r   r   )xs    r   <lambda>z)gitlfspointer.serialize.<locals>.<lambda>*   s    1!3Q 7 r   )keyr   c              3   *   K   | ]\  }}d ||fz  V  dS )s   %s %s
Nr   )r"   kvs      r   r$   z*gitlfspointer.serialize.<locals>.<genexpr>,   s/      >>1
aV+>>>>>>r   )sortedr&   itemsjoin)r   sortkeyfuncr5   s      r   	serializezgitlfspointer.serialize)   sQ    77t}},,..K@@@xx>>>>>>>>r   c                 D    | d                              d          d         S )N   oid   :r    r   s    r   oidzgitlfspointer.oid.   s    F|!!$''++r   c                 ,    t          | d                   S )N   size)intr=   s    r   sizezgitlfspointer.size1   s    4=!!!r   s   \A[a-z0-9.-]+\Zs
   \A[^\n]*\Zs
   \A[0-9]+\Zs   \Asha256:[0-9a-f]{64}\Zs   \A%s\Z)r@   r:   r   c                 R   d}|                                  D ]\  }}|| j        v rY| j        |                             |          s3t          t	          d          |t          j        |          fz            |dz  }n9| j                            |          st          t	          d          |z            | j                            |          s3t          t	          d          |t          j        |          fz            t          | j                  |k    rt          t          | j                                                                      |                                                     }t          t	          d          d                    |          z            | S )z?raise InvalidPointer on error. return self if there is no errorr   s#   unexpected lfs pointer value: %s=%sr   s   unexpected lfs pointer key: %ss   missing lfs pointer keys: %ss   , )r5   _requiredrematchr   r   r   r(   _keyre_valuerelenr4   setkeys
differencer6   )r   requiredcountr2   r3   misss        r   r&   zgitlfspointer.validate>   s   JJLL 	 	DAqD$$$'*0033 (@AAj/2234   "[&&q)) O$Q'H%I%IA%MNNN=&&q)) $<==*+A../0  
 t  M11#d.335566AA$))++NNOOD 122UZZ5E5EE   r   )r	   r
   r   r   r   classmethodr+   r8   r>   rB   recompilerF   rG   r   reescaperD   r&   __classcell__)r   s   @r   r   r      s       3G2 2 2 2 2
   [? ? ?
, , ," " "
 RZ+,,Frz.))HN++
677BJz,?J,?,H,HHII K      r   r   )rO   mercurial.i18nr   	mercurialr   r   mercurial.utilsr   StorageErrorr   dictr   r+   r   r   r   <module>rX      s    
			              ' & & & & &	 	 	 	 	U' 	 	 	= = = = =D = = =@ 'r   