§
    øÛg1«  ã                   ó  — d Z ddlZddlZddlZddlZddlZddlZddlZddlm	Z	  G d„ d¦  «        Z
 G d„ d¦  «        Z G d„ d	¦  «        Z e¦   «         Zd
Zej        dk    redz  Zedz   Zg fd„Zd„ Zefd„Zd„ Z G d„ de	j        ¦  «        Zd„ Z G d„ de¦  «        Zd„ Zd                     d¦  «        Zej        ev re                     ej        ¦  «         ej        dk    Z ej         dej!        ¦  «        Z"d„ Z#d0d„Z$d„ Z% G d„ d e&¦  «        Z' ej         d!¦  «        Z( G d"„ d#e	j        ¦  «        Z) G d$„ d%¦  «        Z* G d&„ d'e*¦  «        Z+ G d(„ d)¦  «        Z,d*„ Z- ej         d+¦  «        fd,„Z.g fd-„Z/ G d.„ d/¦  «        Z0dS )1zm
svn-Command based Implementation of a Subversion WorkingCopy Path.

  SvnWCCommandPath  is the main class.

é    N)Úcommonc                   ó   — e Zd Zi Zi Zi Zi ZdS )ÚcacheN)Ú__name__Ú
__module__Ú__qualname__ÚproplistÚinfoÚentriesÚprop© ó    úD/granary/edev/quantum/lib/python3.11/site-packages/py/_path/svnwc.pyr   r      s"   € € € € € Ø€HØ€DØ€GØ€D€D€Dr   r   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú	RepoEntryc                 ó0   — || _         || _        || _        d S ©N©ÚurlÚrevÚ	timestamp)Úselfr   r   r   s       r   Ú__init__zRepoEntry.__init__   s   € ØˆŒØˆŒØ"ˆŒˆˆr   c                 ó6   — d| j         ›d| j        ›d| j        ›�S )Nzrepo: ú;ú  r   ©r   s    r   Ú__str__zRepoEntry.__str__    s!   € € Ø#'¤8 8 8¨T¬X¨X¨X°t´~°~ÐFÐFr   N)r   r   r   r   r   r   r   r   r   r      s7   € € € € € ð#ð #ð #ð
Gð Gð Gð Gð Gr   r   c                   ó0   — e Zd ZdZdZd„ Zd„ Zdd„Zd„ ZdS )	Ú	RepoCachezž The Repocache manages discovered repository paths
    and their revisions.  If inside a timeout the cache
    will even return the revision of the root.
    é   c                 ó   — g | _         d S r   ©Úreposr   s    r   r   zRepoCache.__init__*   ó   € ØˆŒ
ˆ
ˆ
r   c                 ó   — g | _         d S r   r#   r   s    r   ÚclearzRepoCache.clear-   r%   r   Nc                 óÚ   — |€d S |€t          j         ¦   «         }| j        D ]}||j        k    r||_        ||_         d S Œt          |||¦  «        }| j                             |¦  «         d S r   )Útimer$   r   r   r   r   Úappend)r   r   r   r   Úentrys        r   ÚputzRepoCache.put0   s„   € Øˆ;ØˆFØÐÝœ	™œˆIà”Zð 	%ð 	%ˆEØ�e”iÒÐØ"+�”Ø�”	à��ð	  õ ˜c 3¨	Ñ2Ô2ˆEØŒJ×Ò˜eÑ$Ô$Ð$Ð$Ð$r   c                 óÔ   — t          j         ¦   «         }| j        D ]J}|                     |j        ¦  «        r.||j        | j        z   k     r|j        |j        fc S |j        dfc S ŒK|dfS )Néÿÿÿÿ)r)   r$   Ú
startswithr   r   Útimeoutr   )r   r   Únowr+   s       r   ÚgetzRepoCache.getA   s   € ÝŒi‰kŒkˆØ”Zð 	%ð 	%ˆEØ�~Š~˜eœiÑ(Ô(ð %Ø˜œ¨4¬<Ñ7Ò7Ð7à œ9 e¤iÐ/Ð/Ð/Ð/Ø”y "�}Ð$Ð$Ð$ð	%ð
 �Bˆwˆr   r   )	r   r   r   Ú__doc__r0   r   r'   r,   r2   r   r   r   r    r    #   sf   € € € € € ðð ð €Gðð ð ðð ð ð%ð %ð %ð %ð"ð ð ð ð r   r    z_ -/\=$.~+%Úwin32ú:z@:c                 ó(  — 	 | d         S # t           $ r} t          j                             d¦  «        }|                     ¦   «          d                     |                     d¦  «        d d…         ¦  «        }|                      |¦  «         |cY S w xY w)Nr   zsvn -q --versionú.é   )Ú
IndexErrorÚpyÚprocessÚcmdexecÚstripÚjoinÚsplitr*   )ÚverÚvs     r   Ú_getsvnversionrB   U   sŠ   € ðØ�1ŒvˆøÝð ð ð ÝŒJ×ÒÐ1Ñ2Ô2ˆØ	�Š‰	Œ	ˆ	Ø�HŠH�Q—W’W˜S‘\”\ " 1 "Ô%Ñ&Ô&ˆØ�
Š
�1‰ŒˆØˆˆˆðøøøs   ‚
 ŠBBÂBc                 óŠ   — t          | ¦  «        } t          j        dk    r#t          | ¦  «                             dd¦  «        } | S )Nr4   ú$z\$)ÚstrÚsysÚplatformÚreplace)Útexts    r   Ú_escape_helperrJ   _   s:   € Ýˆt‰9Œ9€DÝ
„|�wÒÐÝ�4‰yŒy× Ò   eÑ,Ô,ˆØ€Kr   c                 ób   — t          | ¦  «        D ]}|                     ¦   «         rŒ||v rŒ dS dS ©NTF)rE   Úisalnum)rI   Úallowed_charsÚcs      r   Ú_check_for_bad_charsrP   e   sD   € Ý�‰YŒYð ð ˆØ�9Š9‰;Œ;ð 	ØØ�ÐÐØØˆtˆtØˆ5r   c                 óò   — |                       dd¦  «        \  }}|dk    rU|                      dd¦  «        \  }}t          |t          ¦  «        st          |t          ¦  «        rt	          d| ›�¦  «        ‚d S d S )Nz://é   Úfileú/zbad char in )r?   rP   ÚALLOWED_CHARS_HOSTÚALLOWED_CHARSÚ
ValueError)r   ÚprotoÚuriÚhostÚuripaths        r   Úcheckbadcharsr\   n   s„   € à—’˜5 !Ñ$Ô$�J€Eˆ3Ø�‚€ØŸ	š	 # qÑ)Ô)‰ˆˆgå  Õ'9Ñ:Ô:ð 	9Ý# G­]Ñ;Ô;ð	9å�*°°Ð7Ñ8Ô8Ð8ð €ð	9ð 	9r   c                   ó¦   — e Zd ZdZdZd„ Z eeddd¦  «        Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z G d„ dej        ¦  «        ZdS )ÚSvnPathBasez2 Base implementation for SvnPath implementations. rT   c                 ó   — | j         S r   ©Ústrpathr   s    r   Ú_geturlzSvnPathBase._geturl   s
   € ØŒ|Ðr   Nzurl of this svn-path.c                 ó   — | j         S )z7 return a string representation (including rev-number) r`   r   s    r   r   zSvnPathBase.__str__ƒ   s
   € àŒ|Ðr   c                 ó*   — t          | j        ¦  «        S r   )Úhashra   r   s    r   Ú__hash__zSvnPathBase.__hash__‡   s   € Ý�D”LÑ!Ô!Ð!r   c                 ór  — t                                | j        ¦  «        }|                     d| j        ¦  «        |_        |                     d| j        ¦  «        |_        |                      d¦  «        \  }}}}d|v rd|v sd|v rt          d|z  ¦  «        ‚nP|                     d|¦  «        }|                     d|¦  «        }|r| 	                    d¦  «        sd|z   }||z   |d<   |                     d	|¦  «         |                     d
| j
        ¦  «         |d         rd|z  |_        n
d|z  |_        |S )aÈ   create a modified version of this path. A 'rev' argument
            indicates a new revision.
            the following keyword arguments modify various path parts::

              http://host.com/repo/path/file.ext
              |-----------------------|          dirname
                                        |------| basename
                                        |--|     purebasename
                                            |--| ext
        r   Úauthz!dirname,basename,purebasename,extÚbasenameÚpurebasenameÚextzinvalid specification %rr7   ÚdirnameÚsepz%(dirname)s%(sep)s%(basename)sz%(dirname)s)ÚobjectÚ__new__Ú	__class__r2   r   rh   Ú
_getbyspecrW   Ú
setdefaultr/   rm   ra   )r   ÚkwÚobjrl   ri   rj   rk   Úpbs           r   ÚnewzSvnPathBase.newŠ   sI  € õ �nŠn˜Tœ^Ñ,Ô,ˆØ—&’&˜ ¤Ñ)Ô)ˆŒØ—6’6˜& $¤)Ñ,Ô,ˆŒØ/3¯ªØ0ñ02ô 02Ñ,ˆ�˜<¨à˜ÐÐØ Ð#Ð# u° { {Ý Ð!;¸bÑ!@ÑAÔAÐAð (3ð —’˜~¨|Ñ<Ô<ˆBØ—-’-  sÑ+Ô+ˆCØð  ˜3Ÿ>š>¨#Ñ.Ô.ð  Ø˜C‘i�Ø #™XˆBˆz‰Nà
�Š�i Ñ)Ô)Ð)Ø
�Š�e˜TœXÑ&Ô&Ð&ØˆjŒ>ð 	-Ø:¸RÑ?ˆCŒKˆKà'¨"Ñ,ˆCŒKØˆ
r   c                 óf  — g }| j                              | j        ¦  «        }|                     d¦  «        D ]ù}|                     ¦   «         }|dk    r6|                     | j                             |dd…         ¦  «        ¦  «         ŒR|dk    r|                     |d         ¦  «         Œt|d         }|                     d¦  «        }|dk    r|d}}n|d|…         ||d…         }}|dk    r|                     |¦  «         ŒÌ|d	k    r|                     |¦  «         Œèt          d
|z  ¦  «        ‚|S )aø   get specified parts of the path.  'arg' is a string
            with comma separated path parts. The parts are returned
            in exactly the order of the specification.

            you may specify the following parts:

            http://host.com/repo/path/file.ext
            |-----------------------|          dirname
                                      |------| basename
                                      |--|     purebasename
                                          |--| ext
        ú,rl   Nr.   ri   r7   Ú rj   rk   zDon't know part %r)ra   r?   rm   r=   r*   r>   ÚrfindÚ	NameError)	r   ÚspecÚresÚpartsÚnameri   Úirj   rk   s	            r   rq   zSvnPathBase._getbyspec¬   s<  € ð ˆØ”×"Ò" 4¤8Ñ,Ô,ˆØ—J’J˜s‘O”Oð 	Að 	AˆDØ—:’:‘<”<ˆDØ�yÒ Ð Ø—
’
˜4œ8Ÿ=š=¨¨s°¨s¬Ñ4Ô4Ñ5Ô5Ð5Ð5Ø˜Ò#Ð#Ø—
’
˜5 œ9Ñ%Ô%Ð%Ð%à  œ9�Ø—N’N 3Ñ'Ô'�Ø˜’7�7Ø(0°" #�L�Là(0°°!°¬°h¸q¸r¸r´l #�LØ˜>Ò)Ð)Ø—J’J˜|Ñ,Ô,Ð,Ð,Ø˜U’]�]Ø—J’J˜s‘O”O�O�Oå#Ð$8¸4Ñ$?Ñ@Ô@Ð@Øˆ
r   c                 ó‚   — t          | ¦  «        t          |¦  «        k    o| j        |j        k    p| j        |j        k    S )z3 return true if path and rev attributes each match )rE   r   ©r   Úothers     r   Ú__eq__zSvnPathBase.__eq__Ð   s<   € å�D‘	”	�S ™ZœZÒ'ð @Ø”˜EœIÒ%Ð>¨¬°U´YÒ)>ð	Ar   c                 ó   — | |k     S r   r   r‚   s     r   Ú__ne__zSvnPathBase.__ne__Õ   s   € Ø˜5’=Ð Ð r   c                 óÎ   ‡ — |s‰ S t          ˆ fd„|D ¦   «         ¦  «        }‰ j        f|z   }‰                      ‰ j                             |¦  «        ‰ j        ‰ j        ¦  «        }|S )ú‡ return a new Path (with the same revision) which is composed
            of the self Path followed by 'args' path components.
        c                 óD   •— g | ]}|                      ‰j        ¦  «        ‘ŒS r   )r=   rm   )Ú.0Úargr   s     €r   ú
<listcomp>z$SvnPathBase.join.<locals>.<listcomp>ß   s'   ø€ Ð:Ð:Ð:¨c�c—i’i ¤Ñ)Ô)Ð:Ð:Ð:r   )Útuplera   rp   rm   r>   r   rh   )r   Úargsr~   Únewpaths   `   r   r>   zSvnPathBase.joinØ   so   ø€ ð ð 	ØˆKåÐ:Ð:Ð:Ð:°TÐ:Ñ:Ô:Ñ;Ô;ˆØ”Ð  4Ñ'ˆØ—.’. ¤§¢¨uÑ!5Ô!5°t´xÀÄÑKÔKˆØˆr   c                 ó0   — |                       |¦  «        }|S )z+ return the content of the given property. )Ú_propget)r   r   Úvalues      r   ÚpropgetzSvnPathBase.propgetä   s   € à—’˜dÑ#Ô#ˆØˆr   c                 ó.   — |                       ¦   «         }|S )z list all property names. )Ú	_proplist)r   Úcontents     r   r	   zSvnPathBase.proplisté   s   € à—.’.Ñ"Ô"ˆØˆr   c                 ó4   — |                       ¦   «         j        S ©z2 Return the size of the file content of the Path. ©r
   Úsizer   s    r   rš   zSvnPathBase.sizeî   ó   € à�yŠy‰{Œ{ÔÐr   c                 ó4   — |                       ¦   «         j        S ©z0 Return the last modification time of the file. ©r
   Úmtimer   s    r   rŸ   zSvnPathBase.mtimeò   ó   € à�yŠy‰{Œ{Ô Ð r   c                 ó    — t          |¦  «        S r   ©rJ   ©r   Úcmds     r   Ú_escapezSvnPathBase._escapeø   ó   € Ý˜cÑ"Ô"Ð"r   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )úSvnPathBase.Checkersc                 ó¤   — 	 | j                              ¦   «         j        dk    S # t          j        j        $ r |                      ¦   «         cY S w xY w)NÚdir)Úpathr
   Úkindr:   ÚerrorÚErrorÚ_listdirworksr   s    r   rª   zSvnPathBase.Checkers.dir  sX   € ð,Ø”y—~’~Ñ'Ô'Ô,°Ò5Ð5øÝ”8”>ð ,ð ,ð ,Ø×)Ò)Ñ+Ô+Ð+Ð+Ð+ð,øøøs   ‚!$ ¤(AÁAc                 óp   — 	 | j                              ¦   «          dS # t          j        j        $ r Y dS w xY wrL   )r«   Úlistdirr:   r­   ÚENOENTr   s    r   r¯   z"SvnPathBase.Checkers._listdirworks  sJ   € ðØ”	×!Ò!Ñ#Ô#Ð#ð �tøõ ”8”?ð ð ð Ø�u�uðøøøs   ‚ �5´5c                 ó~   — 	 | j                              ¦   «         j        dk    S # t          j        j        $ r Y dS w xY w)NrS   F)r«   r
   r¬   r:   r­   r²   r   s    r   rS   zSvnPathBase.Checkers.file#  sG   € ðØ”y—~’~Ñ'Ô'Ô,°Ò6Ð6øÝ”8”?ð ð ð Ø�u�uðøøøs   ‚!$ ¤<»<c                 ó’   — 	 | j                              ¦   «         S # t          j        j        $ r |                      ¦   «         cY S w xY wr   )r«   r
   r:   r­   r²   r¯   r   s    r   ÚexistszSvnPathBase.Checkers.exists)  sP   € ð,Ø”y—~’~Ñ'Ô'Ð'øÝ”8”?ð ,ð ,ð ,Ø×)Ò)Ñ+Ô+Ð+Ð+Ð+ð,øøøs   ‚ ›(AÁAN)r   r   r   rª   r¯   rS   rµ   r   r   r   ÚCheckersr¨     sP   € € € € € ð	,ð 	,ð 	,ð	ð 	ð 	ð	ð 	ð 	ð	,ð 	,ð 	,ð 	,ð 	,r   r¶   )r   r   r   r3   rm   rb   Úpropertyr   r   rf   rv   rq   r„   r†   r>   r“   r	   rš   rŸ   r¥   r   r¶   r   r   r   r^   r^   {   s)  € € € € € Ø<Ð<Ø
€Cðð ð à
ˆ(�7˜D $Ð(?Ñ
@Ô
@€Cðð ð ð"ð "ð "ð ð  ð  ðD"ð "ð "ðHAð Að Að
!ð !ð !ð
ð 
ð 
ðð ð ð
ð ð ð
 ð  ð  ð!ð !ð !ð#ð #ð #ð8,ð ,ð ,ð ,ð ,�6”?ñ ,ô ,ð ,ð ,ð ,r   r^   c                 óÂ   — |                       d¦  «        }|dk    rt          d| z  ¦  «        ‚| d |…         } t          j        | d¦  «        }t          j        |¦  «        S )Nr7   r.   zcould not parse %sz%Y-%m-%dT%H:%M:%S)rz   rW   r)   ÚstrptimeÚmktime)Útimestrr€   Ú
parsedtimes      r   Úparse_apr_timer½   /  s_   € Ø�Š�cÑÔ€AØˆB‚w€wÝÐ-°Ñ7Ñ8Ô8Ð8Ø�b�q�bŒk€GÝ”˜wÐ(;Ñ<Ô<€JÝŒ;�zÑ"Ô"Ð"r   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚPropListDictzD a Dictionary which fetches values (InfoSvnCommand instances) lazilyc                 ó^   — t                                | d„ |D ¦   «         ¦  «         || _        d S )Nc                 ó   — g | ]}|d f‘ŒS r   r   ©rŠ   Úxs     r   rŒ   z)PropListDict.__init__.<locals>.<listcomp>:  s   € Ð9Ð9Ð9¨1˜a ˜YÐ9Ð9Ð9r   )Údictr   r«   )r   r«   Úkeynamess      r   r   zPropListDict.__init__9  s0   € Ý�Š�dÐ9Ð9°Ð9Ñ9Ô9Ñ:Ô:Ð:ØˆŒ	ˆ	ˆ	r   c                 ó¬   — t                                | |¦  «        }|€6| j                             |¦  «        }t                                | ||¦  «         |S r   )rÄ   Ú__getitem__r«   r“   Ú__setitem__)r   Úkeyr’   s      r   rÇ   zPropListDict.__getitem__=  sN   € Ý× Ò   sÑ+Ô+ˆØˆ=Ø”I×%Ò% cÑ*Ô*ˆEÝ×Ò˜T 3¨Ñ.Ô.Ð.Øˆr   N)r   r   r   r3   r   rÇ   r   r   r   r¿   r¿   7  s8   € € € € € ØNÐNðð ð ðð ð ð ð r   r¿   c                  ó*   — t           j        dk    rdS dS )Nr4   z	LC_ALL=C ry   )rF   rG   r   r   r   Ú	fixlocalerË   D  s   € Ý
„|�wÒÐØˆ{Øˆ2r   z* | \ / : < > ? 	 
   ú z^([a-z]\:\\)?[^:]+$c                 ó  — t           d d …         }| j        }t          r>|                     d¦  «         t                               |¦  «        st          d¦  «        ‚|D ]'}|t          j        vs||v rt          d|›d�¦  «        ‚Œ(d S )Nr5   z path may not contain a colon (:)zillegal character z in path)	ÚILLEGAL_CHARSra   Ú	ISWINDOWSÚremoveÚ_reg_allow_diskÚmatchrW   ÚstringÚ	printable)r«   ÚillegalÚspÚchars       r   Ú_check_pathrØ   O  s§   € Ý˜A˜A˜AÔ€GØ	Œ€BÝð AØ�Š�sÑÔÐÝ×$Ò$ RÑ(Ô(ð 	AÝÐ?Ñ@Ô@Ð@Øð Gð GˆØ•vÔ'Ð'Ð'¨4°7¨?¨?Ý�*¸t¸t¸tÐEÑFÔFÐFð ,;ðGð Gr   Tc                 ót   — t          | ¦  «         | j        }|r| j        dk    r|›d| j        ›�}n|r|›d�}|S )Nr.   ú@ú@HEAD)rØ   ra   r   )r«   ÚaddatrÖ   s      r   Úpath_to_fspathrÝ   Z  sV   € Ý�ÑÔÐØ	Œ€BØð �”˜R’�Ø˜˜˜DœH˜HÐ%ˆˆØ	ð Ø˜"˜"ÐˆØ€Ir   c           
      óø  — t          | d¦  «        }ddlm} t          r±t                               |¦  «        }|                     dd¦  «        }|                     d¦  «        r`d|                     d¦  «                             dd¦  «        › ||t          |                     d¦  «        ¦  «        d …         ¦  «        ›�}n ||¦  «        }n ||¦  «        }| j	        dk    r|›d| j	        ›�}n|›d	�}d
|›�S )NFr   )Úquoteú\rT   rR   r.   rÚ   rÛ   zfile://)
rÝ   Úurllibrß   rÏ   rÑ   rÒ   rH   ÚgroupÚlenr   )r«   Úfspathrß   rÒ   s       r   Úurl_from_pathrå   c  s  € Ý˜D %Ñ(Ô(€FØÐÐÐÐÐÝð 	Ý×%Ò% fÑ-Ô-ˆØ—’  cÑ*Ô*ˆØ�;Š;�q‰>Œ>ð 	#ð 	#Ø %§¢¨A¡¤× 6Ò 6°t¸SÑ AÔ AÐ AØ %  f­S°·²¸Q±´Ñ-@Ô-@Ð-AÐ-AÔ&BÑ CÔ CÐ CðEˆFˆFð �U˜6‘]”]ˆFˆFà��v‘”ˆØ„x�2‚~€~Ø"˜F˜F D¤H HÐ-ˆˆà$˜f˜fÐ&ˆøØ ˜&Ð"Ð"r   c                   ó&   — e Zd ZdZdd„Zd„ Zd„ ZdS )ÚSvnAuthz/ container for auth information for Subversion Tc                 ó>   — || _         || _        || _        || _        d S r   )ÚusernameÚpasswordÚ
cache_authÚinteractive)r   ré   rê   rë   rì   s        r   r   zSvnAuth.__init__x  s%   € Ø ˆŒØ ˆŒØ$ˆŒØ&ˆÔÐÐr   c                 óx  — | j                              dd¦  «        }| j                             dd¦  «        }g }|r|                     d|›d�¦  «         |r|                     d|›d�¦  «         | j        s|                     d¦  «         | j        s|                     d¦  «         d                     |¦  «        S )Nú"ú\"z--username="z--password="z--no-auth-cacheú--non-interactiverÌ   )ré   rH   rê   r*   rë   rì   r>   )r   ÚunameÚpasswdÚrets       r   ÚmakecmdoptionszSvnAuth.makecmdoptions~  sÆ   € Ø”×%Ò% c¨5Ñ1Ô1ˆØ”×&Ò& s¨EÑ2Ô2ˆØˆØð 	5Ø�JŠJˆJ¨E¨E¨EÐ3Ñ4Ô4Ð4Øð 	6Ø�JŠJˆJ¨F¨F¨FÐ4Ñ5Ô5Ð5ØŒð 	*Ø�JŠJÐ(Ñ)Ô)Ð)ØÔð 	,Ø�JŠJÐ*Ñ+Ô+Ð+Ø�xŠx˜‰}Œ}Ðr   c                 ó   — d| j         ›d�S )Nz<SvnAuth username=z ...>)ré   r   s    r   r   zSvnAuth.__str__Œ  s   € € Ø-1¬]¨]¨]Ð<Ð<r   N)TT)r   r   r   r3   r   rô   r   r   r   r   rç   rç   v  sL   € € € € € Ø9Ð9ð'ð 'ð 'ð 'ðð ð ð=ð =ð =ð =ð =r   rç   z\s*(\d+)\s+(\S+) (.*)c                   ó
  — e Zd ZdZej        Zd@d„Z ed„ ddd¦  «        Z ed„ ddd¦  «        Z	d„ Z
d	„ Z eeddd
¦  «        Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdAd„Zd„ Zd„ Zd@d„ZdBd„ZdCd„Zd„ Zd„ Zd„ Zd„ Zd„ ZdDd „Zd!„ Zd"„ Z d#„ Z!d$„ Z"d%„ Z#dEd'„Z$dAd(„Z%d)„ Z& e'j(        d*e'j)        ¦  «        Z*dFd,„Z+d-„ Z,d.„ Z-d/„ Z.dGd0„Z/dGd1„Z0d2„ Z1d3„ Z2dHd4„Z3d@d5„Z4dId7„Z5d8„ Z6 G d9„ d:e7j8        j9        j:        ¦  «        Z:dJd<„Z;d=„ Z<d>„ Z=d?„ Z>dS )KÚSvnWCCommandPathz¿ path implementation offering access/modification to svn working copies.
        It has methods similar to the functions in os.path and similar to the
        commands of the svn client.
    Nc                 ó@  — t                                | ¦  «        }t          || ¦  «        r|j        | k    r|S |j        }t          t          |¦  «        t          ¦  «        rt          d|›�¦  «        ‚t          j
                             |¦  «        |_        ||_        |S )Nzbad char in wcpath )rn   ro   Ú
isinstancerp   Ú	localpathrP   rE   rV   rW   r:   r«   Úlocalrh   )ÚclsÚwcpathrh   r   s       r   ro   zSvnWCCommandPath.__new__˜  s”   € Ý�~Š~˜cÑ"Ô"ˆÝ�f˜cÑ"Ô"ð 	&ØÔ 3Ò&Ð&Ø�ØÔ%ˆFÝ¥ F¡¤Ý*7ñ9ô 9ð 	Cå�*¸¸ÐAÑBÔBÐBÝœŸš vÑ.Ô.ˆŒØˆŒ	Øˆr   c                 ó*   — t          | j        ¦  «        S r   ©rE   rú   ©rÃ   s    r   ú<lambda>zSvnWCCommandPath.<lambda>¥  s   € ¥ Q¤[Ñ!1Ô!1€ r   zstring pathc                 ó8   — |                       d¬¦  «        j        S )Nr   )Úusecache)r
   r   r   s    r   r  zSvnWCCommandPath.<lambda>¦  s   € ˜QŸVšV¨Q˜VÑ/Ô/Ô3€ r   Úrevisionc                 ó6   — | j         t          |dd ¦  «        k    S )Nrú   )rú   Úgetattrr‚   s     r   r„   zSvnWCCommandPath.__eq__¨  s   € ØŒ~¥¨°¸TÑ!BÔ!BÒBÐBr   c                 ó¾   — t          | dd ¦  «        € |                      ¦   «         }|j        | _        t	          | j        t
          j        j        ¦  «        sJ ‚| j        S )NÚ_url)r  r
   r   r  rù   r:   ÚbuiltinÚ_basestring©r   r
   s     r   rb   zSvnWCCommandPath._geturl«  sO   € Ý�4˜ Ñ&Ô&Ð.Ø—9’9‘;”;ˆDØœˆDŒIÝ˜$œ)¥R¤ZÔ%;Ñ<Ô<Ð<Ð<Ð<ØŒyÐr   zurl of this WC itemc                 ó    — t          |¦  «        S r   r¢   r£   s     r   r¥   zSvnWCCommandPath._escape´  r¦   r   c                 ó6   — | j                              |¦  «        S )z! pickle object into path location)rú   Údump)r   rt   s     r   r  zSvnWCCommandPath.dump·  s   € àŒ~×"Ò" 3Ñ'Ô'Ð'r   c                 ór   — |                       ¦   «         }t          j                             |j        ¦  «        S )z* return current SvnPath for this WC-item. )r
   r:   r«   Úsvnurlr   r  s     r   r  zSvnWCCommandPath.svnurl»  s%   € à�yŠy‰{Œ{ˆÝŒw�~Š~˜dœhÑ'Ô'Ð'r   c                 ó   — d| j         z  S )Nz	svnwc(%r)r`   r   s    r   Ú__repr__zSvnWCCommandPath.__repr__À  s   € Ø˜dœlÑ+Ð+r   c                 ó*   — t          | j        ¦  «        S r   rÿ   r   s    r   r   zSvnWCCommandPath.__str__Ã  s   € Ý�4”>Ñ"Ô"Ð"r   c                 óF   — | j         €dS | j                              ¦   «         S )Nry   )rh   rô   r   s    r   Ú_makeauthoptionsz!SvnWCCommandPath._makeauthoptionsÆ  s#   € ØŒ9ÐØ�2ØŒy×'Ò'Ñ)Ô)Ð)r   c                 ó’   — |rt          |¦  «        pg }|                     |                      ¦   «         ¦  «          | j        |g|¢R Ž S r   )Úlistr*   r  Ú_svn)r   r¤   rŽ   s      r   Ú_authsvnzSvnWCCommandPath._authsvnË  sO   € ØÐ"�˜T™
œ
Ð( bˆØ�Š�D×)Ò)Ñ+Ô+Ñ,Ô,Ð,ØˆtŒy˜Ð$˜tÐ$Ð$Ð$Ð$r   c                 ó¸  ‡ — d|z  g}ˆ fd„|D ¦   «         }|                      |¦  «         |                     d‰                      ‰ j        ¦  «        z  ¦  «         t	          ¦   «         d                     |¦  «        z   }	 	 d}t          j                             |¦  «        }dt          j        |<   t          j
                             |¦  «        }|r|t          j        |<   n2t          j        |= n$# |r|t          j        |<   nt          j        |= w xY w�nD# t          j
        j        j        $ �r' t          j        ¦   «         d         }|j                             ¦   «         }	|	                     d¦  «        d	k    rt          j                             ‰ ¦  «        ‚|	                     d
¦  «        d	k    rt          j                             ‰ ¦  «        ‚|	                     d¦  «        d	k    sK|	                     d¦  «        d	k    s2|	                     d¦  «        d	k    s|	                     d¦  «        d	k    rt          j                             |	¦  «        ‚‚ w xY w|S )Nzsvn %sc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   )r¥   )rŠ   Úitemr   s     €r   rŒ   z)SvnWCCommandPath._svn.<locals>.<listcomp>Ò  s%   ø€ Ð4Ð4Ð4 t�—’˜TÑ"Ô"Ð4Ð4Ð4r   z"%s"rÌ   ÚLC_MESSAGESÚCrR   z	not foundr.   zE200009:zfile existszfile already existszw150002:zcan't create directory)Úextendr*   r¥   ra   rË   r>   ÚosÚenvironr2   r:   r;   r<   r®   rF   Úexc_infoÚerrÚlowerÚfindr­   r²   ÚEEXIST)
r   r¤   rŽ   ÚlrÓ   rÉ   ÚholdÚoutÚeÚstrerrs
   `         r   r  zSvnWCCommandPath._svnÐ  s  ø€ Ø˜‰^ÐˆØ4Ð4Ð4Ð4¨tÐ4Ñ4Ô4ˆØ	�Š�‰ŒˆØ	�Š�˜$Ÿ,š, t¤|Ñ4Ô4Ñ4Ñ5Ô5Ð5å‘”˜sŸxšx¨™{œ{Ñ*ˆð	ð	(Ø#�Ý”z—~’~ cÑ*Ô*�Ø"%•”
˜3‘Ý”j×(Ò(¨Ñ0Ô0�àð (Ø&*•B”J˜s‘O�Oåœ
 3˜˜øð ð (Ø&*•B”J˜s‘O�Oåœ
 3˜Ð'Ð'Ð'Ð'ùøÝŒzÔ!Ô'ð 	ñ 	ð 	Ý”‘”˜qÔ!ˆAØ”U—[’[‘]”]ˆFØ�{Š{˜;Ñ'Ô'¨2Ò-Ð-Ý”h—o’o dÑ+Ô+Ð+Ø—’˜ZÑ(Ô(¨BÒ.Ð.Ý”h—o’o dÑ+Ô+Ð+Ø—’˜MÑ*Ô*¨bÒ0Ð0Ø—’Ð1Ñ2Ô2°bÒ8Ð8Ø—’˜JÑ'Ô'¨2Ò-Ð-Ø—’Ð4Ñ5Ô5¸Ò;Ð;Ý”h—o’o fÑ-Ô-Ð-Øð	øøøð ˆ
s    ÂAC0 Ã D Ã0!DÄD ÄEIc                 ó4   — |                       d|g¦  «         dS )z switch to given URL. ÚswitchN)r  )r   r   s     r   r-  zSvnWCCommandPath.switchñ  s   € à�Š�h  Ñ&Ô&Ð&Ð&Ð&r   c                 óR  — g }|€| j         }|�|dk    r(t          j        dk    rt          ¦   «         dk    r|dz  }n@t          ¦   «         dk    r	|d|z  z  }n%|                     dt          |¦  «        z   ¦  «         |                     |¦  «         |                      d|¦  «         dS )	z$ checkout from url to local wcpath. Nr.   r4   z1.3rÛ   z@%dú-rÚco)r   rF   rG   rB   r*   rE   r  )r   r   r   rŽ   s       r   ÚcheckoutzSvnWCCommandPath.checkoutõ  s±   € àˆØˆ;Ø”(ˆCØˆ;˜# š)˜)Ý” Ò'Ð'Ý"Ñ$Ô$¨Ò-Ð-Ø�w‘�øåÑÔ 5Ò(Ð(Ø�u˜s‘{Ñ"��à—’˜D¥3 s¡8¤8™OÑ,Ô,Ð,Ø�Š�CÑÔÐØ�Š�d˜DÑ!Ô!Ð!Ð!Ð!r   ÚHEADTc                 óh   — d|g}|s|                      d¦  «         |                      d|¦  «         dS )z= update working copy item to given revision. (None -> HEAD). r/  rð   ÚupN©r*   r  )r   r   rì   Úoptss       r   ÚupdatezSvnWCCommandPath.update  s@   € à�cˆ{ˆØð 	-Ø�KŠKÐ+Ñ,Ô,Ð,Ø�Š�d˜DÑ!Ô!Ð!Ð!Ð!r   Úwc                 ó<   — | j                              ||¦  «         dS )z) write content into local filesystem wc. N)rú   Úwrite)r   r–   Úmodes      r   r:  zSvnWCCommandPath.write  s    € àŒ×Ò˜W dÑ+Ô+Ð+Ð+Ð+r   c                 óT   — |                        | j        j        |Ž | j        ¬¦  «        S )z0 return the directory Path of the current Path. ©rh   )rp   rú   Údirpathrh   ©r   rŽ   s     r   r>  zSvnWCCommandPath.dirpath  s'   € à�~Š~Ð4˜dœnÔ4°dÐ;À$Ä)ˆ~ÑLÔLÐLr   c                 óÖ   — |                       ¦   «         }|                     d¬¦  «        r|                     ¦   «          |                      d¬¦  «        r|                      ¦   «          | S )Nr   )rª   )r>  ÚcheckÚ_ensuredirsÚmkdir)r   Úparents     r   rB  zSvnWCCommandPath._ensuredirs  s_   € Ø—’‘”ˆØ�<Š<˜Aˆ<ÑÔð 	!Ø×ÒÑ Ô Ð Ø�:Š:˜!ˆ:ÑÔð 	Ø�JŠJ‰LŒLˆLØˆr   c                 ó�  —  | j         |Ž }|                     ¦   «         r,|                     d¬¦  «        r|                     ¦   «          |S |                     dd¦  «        r|                     ¦   «         S |                     ¦   «         }|                     ¦   «          |                     d¦  «         |                     ¦   «          |S )zÄ ensure that an args-joined path exists (by default as
            a file). if you specify a keyword argument 'directory=True'
            then the path is forced  to be a directory path.
        F©Ú	versionedrª   r   ry   )r>   rA  Úaddr2   rB  r>  r:  )r   rŽ   ÚkwargsÚprD  s        r   ÚensurezSvnWCCommandPath.ensure  s®   € ð
 ˆDŒI�tÐˆØ�7Š7‰9Œ9ð 	Ø�wŠw ˆwÑ'Ô'ð Ø—’‘”�ØˆHØ�:Š:�e˜QÑÔð 	#Ø—=’=‘?”?Ð"Ø—’‘”ˆØ×ÒÑÔÐØ	�Š�‰ŒˆØ	�Š‰ŒˆØˆr   c                 ól   — |r | j         |Ž                      ¦   «         S |                      d¦  «         | S )z1 create & return the directory joined with args. rC  )r>   rC  r  r?  s     r   rC  zSvnWCCommandPath.mkdir/  s<   € àð 	Ø�4”9˜dÐ#×)Ò)Ñ+Ô+Ð+à�IŠI�gÑÔÐØˆKr   c                 ó0   — |                       d¦  «         dS )z add ourself to svn rH  N©r  r   s    r   rH  zSvnWCCommandPath.add7  s   € à�	Š	�%ÑÔÐÐÐr   rR   c                 óþ   — |s
J d¦   «         ‚|                       d¬¦  «        s3t          j                             | ¦  «                             ¦   «          dS g }|r|                     d¦  «          | j        dg|¢R Ž  dS )zœ remove a file or a directory tree. 'rec'ursive is
            ignored and considered always true (because of
            underlying svn semantics.
        z!svn cannot remove non-recursivelyTrF  Nz--forcerÐ   )rA  r:   r«   rû   rÐ   r*   r  )r   ÚrecÚforceÚflagss       r   rÐ   zSvnWCCommandPath.remove;  s“   € ð
 Ð7Ð7Ð7Ñ7Ô7Ð7Ø�zŠz DˆzÑ)Ô)ð 	åŒG�MŠM˜$ÑÔ×&Ò&Ñ(Ô(Ð(ØˆFØˆØð 	$Ø�LŠL˜Ñ#Ô#Ð#ØˆŒ	�(Ð#˜UÐ#Ð#Ð#Ð#Ð#Ð#r   c                 ó„   — t           j                             dt          | ¦  «        ›dt          |¦  «        ›�¦  «         dS )z copy path to target.z	svn copy rÌ   N©r:   r;   r<   rE   ©r   Útargets     r   ÚcopyzSvnWCCommandPath.copyJ  s8   € å
Œ
×ÒÐ­c°$©i¬i¨i¨i½¸V¹¼¸ÐEÑFÔFÐFÐFÐFr   c                 ó„   — t           j                             dt          | ¦  «        ›dt          |¦  «        ›�¦  «         dS )z rename this path to target. zsvn move --force rÌ   NrT  rU  s     r   ÚrenamezSvnWCCommandPath.renameN  s8   € å
Œ
×ÒÐµc¸$±i´i°i°iÅÀVÁÄÀÐMÑNÔNÐNÐNÐNr   c                 óv   — |                       d¦  «                             ¦   «         }|st          d¦  «        ‚dS )z( set a lock (exclusive) on the resource Úlockz!unknown error in svn lock commandN)r  r=   rW   ©r   r)  s     r   r[  zSvnWCCommandPath.lockR  sC   € à�mŠm˜FÑ#Ô#×)Ò)Ñ+Ô+ˆØð 	BåÐ@ÑAÔAÐAð	Bð 	Br   c                 ó¬   — |                       d¦  «                             ¦   «         }|                     d¦  «        rt          |dd…         ¦  «        ‚dS )z unset a previously set lock Úunlockzsvn:é   N)r  r=   r/   Ú	Exceptionr\  s     r   r^  zSvnWCCommandPath.unlockY  sS   € à�mŠm˜HÑ%Ô%×+Ò+Ñ-Ô-ˆØ�>Š>˜&Ñ!Ô!ð 	%å˜C   œGÑ$Ô$Ð$ð	%ð 	%r   c                 ó@   — 	 |                       ¦   «          dS #  Y dS xY w)z$ remove any locks from the resource N)r^  r   s    r   ÚcleanupzSvnWCCommandPath.cleanup`  s(   € ð	Ø�KŠK‰MŒMˆMˆMˆMøð	ØˆDˆDøøøs   ‚ ˜r   c                 ó”  — |rt          d¦  «        ‚d}|rd}nd}|rd}nd}d|›d|›d|›�}|                      |¦  «        }t          | ¦  «                             || ¦  «        }nb# t          j        j        j        $ rF d|›d|›d|›�}|                      |¦  «        }t          | ¦  «                             || ¦  «        }Y nw xY w|S )z2 return (collective) Status object for this file. z1XXX cannot perform status() on external items yetry   z--non-recursivez-uzstatus -v --xml --no-ignore rÌ   zstatus -v --no-ignore )	rW   r  ÚXMLWCStatusÚ
fromstringr:   r;   r<   r®   ÚWCStatus)r   ÚupdatesrP  Ú	externalsr¤   r)  Ú
rootstatuss          r   ÚstatuszSvnWCCommandPath.statush  s  € ð
 ð 	Ýð 5ñ 6ô 6ð 6ð ˆIØð 	$ØˆCˆCà#ˆCð ð 	ØˆGˆGàˆGð
	Aà�G�G˜S˜S˜S ) )ð-ˆCà—-’- Ñ$Ô$ˆCõ % TÑ*Ô*×5Ò5°c¸4Ñ@Ô@ˆJˆJøõ ŒzÔ!Ô'ð 	>ð 	>ð 	>ð 	>à�G�G˜S˜S˜S ) )ð-ˆCà—-’- Ñ$Ô$ˆCÝ! $™œ×2Ò2°3¸Ñ=Ô=ˆJˆJˆJð		>øøøð Ðs   ¢ A& Á&ACÃCc                 ój   — g }|�|                      d|z  ¦  «         |                      d|¦  «        }|S )zj return a diff of the current path against revision rev (defaulting
            to the last one).
        Nz-r %dÚdiffr5  )r   r   rŽ   r)  s       r   rl  zSvnWCCommandPath.diffŽ  s<   € ð ˆØˆ?Ø�KŠK˜ #™Ñ&Ô&Ð&Ø�mŠm˜F DÑ)Ô)ˆØˆ
r   c                 óì  — |                       d¦  «        }g }|                     ¦   «         }t          j                             | j        ¦  «                             ¦   «         }t          t          ||¦  «        ¦  «        D ]t\  }\  }}t           
                    |¦  «        }|st          d|›d�¦  «        ‚|                     ¦   «         \  }	}
}|                     t          |	¦  «        |
|f¦  «         Œu|S )z[ return a list of tuples of three elements:
            (revision, commiter, line)
        Úblamezoutput line z, of svn blame does not match expected format)r  Ú
splitlinesr:   r«   r  r   Ú	readlinesÚ	enumerateÚzipÚ	rex_blamerÒ   rW   Úgroupsr*   Úint)r   r)  ÚresultÚ
blamelinesÚ	reallinesr€   Ú	blamelineÚlineÚmr   r   Ú_s               r   rn  zSvnWCCommandPath.blame˜  sí   € ð �iŠi˜Ñ Ô ˆØˆØ—^’^Ñ%Ô%ˆ
Ý”G—N’N 4¤8Ñ,Ô,×6Ò6Ñ8Ô8ˆ	Ý$-Ý�J 	Ñ*Ô*ñ%,ô %,ð 	2ð 	2Ñ ˆAÑ �	˜4å—’ 	Ñ*Ô*ˆAØð ?Ý �jØ6:°d°dð">ñ ?ô ?ð ?àŸ8š8™:œ:‰LˆC��qØ�MŠM�3˜s™8œ8 T¨4Ð0Ñ1Ô1Ð1Ð1Øˆr   z.*Committed revision (\d+)\.$ry   c                 ó,  — d|                      dd¦  «        ›d�}|s|dz  }|                      |¦  «        }	 t          j        | = n# t          $ r Y nw xY w|r<| j                             |¦  «        }t          |                     d¦  «        ¦  «        S dS )z/ commit with support for non-recursive commits zcommit -m "rî   rï   z" --force-logz -NrR   N)	rH   r  r   r
   ÚKeyErrorÚ_rex_commitrÒ   ru  râ   )r   ÚmsgrP  r¤   r)  r{  s         r   ÚcommitzSvnWCCommandPath.commit«  s´   € € ð /2¯kªk¸#¸uÑ.EÔ.EÐ.EÐ.EÐGˆØð 	Ø�5‰LˆCØ�mŠm˜CÑ Ô ˆð	Ý”
˜4Ð Ð øÝð 	ð 	ð 	ØˆDð	øøøàð 	#ØÔ ×&Ò& sÑ+Ô+ˆAÝ�q—w’w˜q‘z”z‘?”?Ð"ð	#ð 	#s   ¸A Á
AÁAc                 ó8  — t           j        j                             ¦   «         }	 |                     d¦  «        }|                     |¦  «          | j        d|dt          |¦  «        g|¢R Ž  |                     ¦   «          dS # |                     ¦   «          w xY w)z* set property name to value on this path. r’   Úpropsetz--fileN)	r:   r«   rû   Úmkdtempr>   r:  r  rE   rÐ   )r   r   r’   rŽ   ÚdrJ  s         r   rƒ  zSvnWCCommandPath.propsetº  sƒ   € åŒGŒM×!Ò!Ñ#Ô#ˆð	Ø—’�w‘”ˆAØ�GŠG�E‰NŒNˆNØˆDŒI�i  xµ°Q±´Ð?¸$Ð?Ð?Ð?Ð?à�HŠH‰JŒJˆJˆJˆJøˆA�HŠH‰JŒJˆJˆJøøøs   ¥AB ÂBc                 óB   — |                       d|¦  «        }|dd…         S )z! get property name on this path. r“   Nr.   rN  ©r   r   r}   s      r   r“   zSvnWCCommandPath.propgetÄ  ó"   € à�iŠi˜	 4Ñ(Ô(ˆØ�3�B�3Œxˆr   c                 óB   — |                       d|¦  «        }|dd…         S )z$ delete property name on this path. ÚpropdelNr.   rN  r‡  s      r   rŠ  zSvnWCCommandPath.propdelÉ  rˆ  r   c                 óì   — |r%|                       d¦  «        }t          | |¦  «        S |                       d¦  «        }|                     d¦  «        }d„ |dd…         D ¦   «         }t          | |¦  «        S )z… return a mapping of property names to property values.
If rec is True, then return a dictionary mapping sub-paths to such mappings.
zproplist -Rr	   ú
c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )r=   rÂ   s     r   rŒ   z-SvnWCCommandPath.proplist.<locals>.<listcomp>Ø  s    € Ð2Ð2Ð2 1�Q—W’W‘Y”YÐ2Ð2Ð2r   rR   N)r  Úmake_recursive_propdictr?   r¿   )r   rP  r}   Úliness       r   r	   zSvnWCCommandPath.proplistÎ  sx   € ð ð 	-Ø—)’)˜MÑ*Ô*ˆCÝ*¨4°Ñ5Ô5Ð5à—)’)˜JÑ'Ô'ˆCØ—I’I˜d‘O”OˆEØ2Ð2¨¨a¨b¨b¬	Ð2Ñ2Ô2ˆEÝ  eÑ,Ô,Ð,r   c                 ó`   — |r|                       d¦  «        }n|                       d¦  «        }|S )zK revert the local changes of this path. if rec is True, do so
recursively. z	revert -RÚrevertrN  )r   rP  rv  s      r   r‘  zSvnWCCommandPath.revertÛ  s5   € ð ð 	)Ø—Y’Y˜{Ñ+Ô+ˆFˆFà—Y’Y˜xÑ(Ô(ˆFØˆr   c                 ór   — |r | j         j        di |¤Ž}n| j         }|                      || j        ¬¦  «        S )aÇ   create a modified version of this path. A 'rev' argument
            indicates a new revision.
            the following keyword arguments modify various path parts:

              http://host.com/repo/path/file.ext
              |-----------------------|          dirname
                                        |------| basename
                                        |--|     purebasename
                                            |--| ext
        r=  r   )rú   rv   rp   rh   )r   rs   rú   s      r   rv   zSvnWCCommandPath.newä  sG   € ð ð 	'Ø*˜œÔ*Ð0Ð0¨RÐ0Ð0ˆIˆIàœˆIØ�~Š~˜i¨d¬iˆ~Ñ8Ô8Ð8r   c                 óf   — |s| S  | j         j        |i |¤Ž}|                      || j        ¬¦  «        S )rˆ   r=  )rú   r>   rp   rh   )r   rŽ   rI  rú   s       r   r>   zSvnWCCommandPath.joinõ  sB   € ð ð 	ØˆKØ'�D”NÔ'¨Ð8°Ð8Ð8ˆ	Ø�~Š~˜i¨d¬iˆ~Ñ8Ô8Ð8r   c                 óž  — |ot           j                             | ¦  «        }|�s¨	 |                      d¦  «        }n½# t          j        j        j        $ r¡ t          j	        ¦   «         d         }|j
                             d¦  «        dk    r%t          j                             | |j
        ¦  «        ‚|j
                             d¦  «        dk    r%t          j                             | |j
        ¦  «        ‚‚ w xY w|                     ¦   «         dk    s+|                     ¦   «                              d¦  «        dk    r t          j                             | |¦  «        ‚t!          |¦  «        }t          j        dk    rC|j        | j        k    r3t          j                             | d	d
|j        ›d| j        ›�z   ¦  «        ‚|t           j        | <   |S )z9 return an Info structure with svn-provided information. r
   rR   z$Path is not a working copy directoryr.   zis not under version controlry   únot a versioned resourcer4   znot a versioned resource:rÌ   z != )r   r
   r2   r  r:   r;   r<   r®   rF   r"  r#  r%  r­   r²   r=   r$  ÚInfoSvnWCCommandrG   r«   rú   )r   r  r
   Úoutputr*  s        r   r
   zSvnWCCommandPath.infoþ  s˜  € àÐ0�EœJŸNšN¨4Ñ0Ô0ˆØñ 	$ðØŸš 6Ñ*Ô*��øÝ”:Ô%Ô+ð ð ð Ý”L‘N”N 1Ô%�Ø”5—:’:ÐDÑEÔEÈÒKÐKÝœ(Ÿ/š/¨$°´Ñ6Ô6Ð6Ø”U—Z’ZÐ >Ñ?Ô?À2ÒEÐEÝœ(Ÿ/š/¨$°´Ñ6Ô6Ð6Øðøøøð —’‘” "Ò$Ð$Ø—L’L‘N”N×'Ò'Ð(BÑCÔCÀrÒIÐIÝ”h—o’o d¨FÑ3Ô3Ð3Ý# FÑ+Ô+ˆDõ Œ|˜wÒ&Ð&Ø”9 ¤Ò.Ð.Ýœ(Ÿ/š/¨$Ð0KÐ0KØ+/¬9¨9¨9°d´n°nÐEñ1Fñ Gô Gð Gà#�EŒJ�tÑØˆs
   ¦< ¼B:C6c                 óZ  — t          |t          ¦  «        rt          j        |¦  «        }d„ }g }| j                             |¦  «        D ]K}|                      || j        ¬¦  «        } ||¦  «        r"|r ||¦  «        r|                     |¦  «         ŒL|  	                    ||¦  «         |S )z‘ return a sequence of Paths.

        listdir will return either a tuple or a list of paths
        depending on implementation choices.
        c                 ó   — | j         dk    S )Nz.svn)ri   )r«   s    r   Únotsvnz(SvnWCCommandPath.listdir.<locals>.notsvn$  s   € Ø”= FÒ*Ð*r   r=  )
rù   rE   r   Ú	FNMatcherrú   r±   rp   rh   r*   Ú	_sortlist)r   ÚfilÚsortrš  Úpathsrú   rJ  s          r   r±   zSvnWCCommandPath.listdir  sÁ   € õ �c�3ÑÔð 	(ÝÔ" 3Ñ'Ô'ˆCð	+ð 	+ð 	+ð ˆØœ×/Ò/°Ñ7Ô7ð 	 ð 	 ˆIØ—’˜y¨t¬y�Ñ9Ô9ˆAØˆv�a‰yŒyð   #ð  ¨¨¨Q©¬ð  Ø—’˜Q‘”�øØ�Š�u˜dÑ#Ô#Ð#Øˆr   Úrc                 ó,   — t          | j        |¦  «        S )z, return an opened file with the given mode. )Úopenra   )r   r;  s     r   r¢  zSvnWCCommandPath.open/  s   € å�D”L $Ñ'Ô'Ð'r   c                 ó6   — | j                              |¦  «        S r   )rú   rq   )r   r|   s     r   rq   zSvnWCCommandPath._getbyspec3  s   € ØŒ~×(Ò(¨Ñ.Ô.Ð.r   c                   ó   — e Zd Zd„ Zd„ ZdS )úSvnWCCommandPath.Checkersc                 ó,   — || _         |j        | _        d S r   )Ú	svnwcpathrú   r«   )r   r«   s     r   r   z"SvnWCCommandPath.Checkers.__init__7  s   € Ø!ˆDŒNØœˆDŒIˆIˆIr   c                 óž  — 	 | j                              ¦   «         }dS # t          j        j        t          j        j        f$ r Y dS t          j        j        j        $ ro t          j
        ¦   «         d         }|j                             d¦  «        dk    rY dS |j                             ¦   «                              d¦  «        dk    rY dS ‚ w xY w)NTFrR   zis not a working copyr.   r•  )r§  r
   r:   r­   r²   r&  r;   r<   r®   rF   r"  r#  r%  r$  )r   Úsr*  s      r   rG  z#SvnWCCommandPath.Checkers.versioned:  sË   € ðØ”N×'Ò'Ñ)Ô)�ð �tøõ ”H”O¥R¤X¤_Ð5ð ð ð Ø�u�uÝ”:Ô%Ô+ð ð ð Ý”L‘N”N 1Ô%�Ø”5—:’:Ð5Ñ6Ô6¸Ò:Ð:Ø ˜5˜5Ø”5—;’;‘=”=×%Ò%Ð&@ÑAÔAÀRÒGÐGØ ˜5˜5Øðøøøs   ‚ �%CÁACÂ0CÃ
CN)r   r   r   r   rG  r   r   r   r¶   r¥  6  s2   € € € € € ð	'ð 	'ð 	'ð	ð 	ð 	ð 	ð 	r   r¶   Fc           
      ó  — |                       ¦   «         sJ ‚|du rdp|}|du rdp|}|dk    r	|dk    rd}nd|›d|›�}|rdpd}t          ¦   «         }|                      ¦   «         }|d|›d	|›d	|›d
| j        ›d�	z   }t	          j        |t          j        t          j        d¬¦  «        }	|	                     ¦   «         \  }
}t          j	         
                    |
t          j        ¦   «         ¦  «        }
t          ¦   «         \  }}	 |                     |
¦  «        }n# |$ r t          d¦  «        ‚w xY wg }t!          d|j        j        ¦  «        D ]4}|j        |j        k    r"|                     t-          |¦  «        ¦  «         Œ5|S )zø return a list of LogEntry instances for this path.
rev_start is the starting revision (defaulting to the first one).
rev_end is the last revision (defaulting to HEAD).
if verbose is True, then the LogEntry instances also know which files changed.
Nr2  rR   ry   z-r r5   z-vzsvn log --xml rÌ   z "rî   T)ÚstdoutÚstderrÚshellzno such revision)rA  rË   r  ra   Ú
subprocessÚPopenÚPIPEÚcommunicater:   r	  Ú_totextrF   ÚgetdefaultencodingÚ	importxmlÚparseStringrW   ÚfilterÚ
firstChildÚ
childNodesÚnodeTypeÚELEMENT_NODEr*   ÚLogEntry)r   Ú	rev_startÚrev_endÚverboseÚrev_optÚverbose_optÚ
locale_envÚauth_optr¤   Úpopenr«  r¬  ÚminidomÚ
ExpatErrorÚtreerv  Úlogentrys                    r   ÚlogzSvnWCCommandPath.logI  sÆ  € ð �zŠz‰|Œ|ÐÐÐØ Ð%Ð0¨&Ð=°Iˆ	Ø˜T�/Ð, fÐ7°ˆØ˜ÒÐ 7¨a¢< <Ø��øà$- I I¨w¨wÐ7ˆGØÐ& $Ð,¨"ˆÝ‘[”[ˆ
à×(Ò(Ñ*Ô*ˆð
 ˆjØˆGˆG�[�[�[ ( ( (¨D¬L¨L¨Lð:ñ :ˆõ Ô  Ý%œ?Ý%œ?Øð
ñ 
ô 
ˆð
 ×*Ò*Ñ,Ô,‰ˆ�Ý”×#Ò# F­CÔ,BÑ,DÔ,DÑEÔEˆÝ&™[œ[Ñˆ�
ð	1Ø×&Ò& vÑ.Ô.ˆDˆDøØð 	1ð 	1ð 	1ÝÐ/Ñ0Ô0Ð0ð	1øøøàˆÝ˜t T¤_Ô%?Ñ@Ô@ð 	2ð 	2ˆHØÔ  HÔ$9Ò9Ð9Ø—’�h xÑ0Ô0Ñ1Ô1Ð1øØˆs   ÄD ÄD.c                 ó4   — |                       ¦   «         j        S r˜   r™   r   s    r   rš   zSvnWCCommandPath.sizes  r›   r   c                 ó4   — |                       ¦   «         j        S r�   rž   r   s    r   rŸ   zSvnWCCommandPath.mtimew  r    r   c                 óD   — t          | j        | j        | j        f¦  «        S r   )re   ra   rp   rh   r   s    r   rf   zSvnWCCommandPath.__hash__{  s   € Ý�T”\ 4¤>°4´9Ð=Ñ>Ô>Ð>r   )NNr   )r2  T)r8  )rR   rR   )r   r   r   )ry   rR   )r   )rR   )r   )NrR   F)?r   r   r   r3   r   rm   ro   r·   ra   r   r„   rb   r   r¥   r  r  r  r   r  r  r  r-  r1  r7  r:  r>  rB  rK  rC  rH  rÐ   rW  rY  r[  r^  rb  rj  rl  rn  ÚreÚcompileÚDOTALLr  r�  rƒ  r“   rŠ  r	   r‘  rv   r>   r
   r±   r¢  rq   r:   r«   rû   r¶   rÈ  rš   rŸ   rf   r   r   r   r÷   r÷   ‘  s¼  € € € € € ðð ð Œ&€Cðð ð ð ð ˆhÐ1Ð1°4¸¸}ÑMÔM€GØ
ˆ(Ð3Ð3°T¸4ÀÑ
LÔ
L€CðCð Cð Cðð ð ð ˆ(�7˜D $Ð(=Ñ
>Ô
>€Cð#ð #ð #ð(ð (ð (ð(ð (ð (ð
,ð ,ð ,ð#ð #ð #ð*ð *ð *ð
%ð %ð %ð %ð
ð ð ðB'ð 'ð 'ð"ð "ð "ð "ð""ð "ð "ð "ð,ð ,ð ,ð ,ðMð Mð Mðð ð ðð ð ð$ð ð ðð ð ð$ð $ð $ð $ðGð Gð GðOð Oð OðBð Bð Bð%ð %ð %ðð ð ð$ð $ð $ð $ðLð ð ð ðð ð ð$ �"”*Ð=¸r¼yÑIÔI€Kð#ð #ð #ð #ðð ð ðð ð ð
ð ð ð
-ð -ð -ð -ðð ð ð ð9ð 9ð 9ð"9ð 9ð 9ðð ð ð ð:ð ð ð ð((ð (ð (ð (ð/ð /ð /ðð ð ð ð �2”7”=Ô)ñ ô ð ð&(ð (ð (ð (ðT ð  ð  ð!ð !ð !ð?ð ?ð ?ð ?ð ?r   r÷   c                   ó`   — e Zd ZdZdd„Zd	d„Z ej        d¦  «        Zdd„Z	 e
e	¦  «        Z	dS )
rf  )ÚmodifiedÚaddedÚconflictÚ	unchangedÚexternalÚdeletedÚprop_modifiedÚunknownÚupdate_availableÚ
incompleteÚkindmismatchÚignoredÚlockedÚreplacedNc                 ót   — || _         || _        || _        || _        | j        D ]}t          | |g ¦  «         Œd S r   )rý   r   ÚmodrevÚauthorÚ	attrnamesÚsetattr)r   rý   r   rß  rà  r   s         r   r   zWCStatus.__init__…  sN   € ØˆŒØˆŒØˆŒØˆŒà”Nð 	$ð 	$ˆDÝ�D˜$ Ñ#Ô#Ð#Ð#ð	$ð 	$r   Tc                 óº   — i }| j         D ]&}||vs||         rt          | |¦  «        D ]}d||<   ŒŒ'|                     ¦   «         }|r|                     ¦   «          |S )NrR   )rá  r  Úkeysrž  )r   rž  rs   r…  r   r«   r'  s          r   ÚallpathzWCStatus.allpathŽ  su   € ØˆØ”Nð 	 ð 	 ˆDØ˜2ˆ~ˆ~  D¤ˆ~Ý# D¨$Ñ/Ô/ð  ð  �DØ�A�d‘G�GøØ�FŠF‰HŒHˆØð 	Ø�FŠF‰HŒHˆHØˆr   z$\s+(\d+|-)\s+(\S+)\s+(.+?)\s{2,}(.*)c           	      óØ  — t          ||||¦  «        }d}|                      d¦  «        D �]>}|                     ¦   «         sŒ|dd…         |dd…         }	}|\  }
}}}}}}}|
dv rä|                     dd¦  «        d         }|
dk    r2|                     |d¬¦  «        }|j                             |¦  «         nŽ|
dk    rQ|                     |j                             |d¬¦  «        |j        ¬	¦  «        }|j	                             |¦  «         n7|
d
k    r1|                     |d¬¦  «        }|j
                             |¦  «         �Œt           j                             |	¦  «        }|só|dk    rG|	                     ¦   «         }|                     |d¬¦  «        }|j                             |¦  «         �Œ�|                     ¦   «                              d¦  «        dk    r<t!          |	                     d¦  «        d                              ¦   «         ¦  «        }�Œô|                     ¦   «                              d¦  «        dk    r�Œ!t#          d|z  ¦  «        ‚|                     ¦   «         \  }}}}|                     |d¬¦  «        }|
dk    r<|                     d¬¦  «        s
J d¦   «         ‚|j                             |¦  «         �n|
dk    s|dk    r|j                             |¦  «         næ|
dk    r|j                             |¦  «         nÅ|
dk    r|j                             |¦  «         n¤|
dk    r|j                             |¦  «         nƒ|
dk    r|j                             |¦  «         nb|
dk    r|j                             |¦  «         nA|
                     ¦   «         s|j                             |¦  «         nt9          d|
z  ¦  «        ‚|dk    r|j                             |¦  «         |dk    s|dk    r|j                             |¦  «         |dk    r|j                             |¦  «         ||k    r ||_        ||_         ||_!        |r||_"        �Œ>�Œ@|S )z4 return a new WCStatus object from data 's'
        NrŒ  é   z?XIrR   ú?©ÚabsÚXr=  ÚIÚ*zagainst revision:r.   r5   zstatus on externalzcould not parse line %rÚM©rS   z3didn't expect a directory with changed content hereÚAú+ÚDr  ú~ú!ÚRzreceived flag %rÚLÚK)#rf  r?   r=   r>   r×  r*   rp   rú   rh   rÔ  rÛ  Ú_rex_statusrÒ   rØ  r$  r%  ru  rW   rt  rA  rÐ  rÑ  rÕ  rÒ  rÚ  rÙ  rÝ  rÓ  ÚNotImplementedErrorrÖ  rÜ  r   rß  rà  Ú
update_rev)ÚdataÚ
rootwcpathr   rß  rà  ri  rú  rz  rR  ÚrestÚc0Úc1Úc2Úc3Úc4Úc5Úx6Úc7Úfnrý   r{  s                        r   re  zWCStatus.fromstringž  sŒ  € õ ˜j¨#¨v°vÑ>Ô>ˆ
Øˆ
Ø—J’J˜tÑ$Ô$ð V	ñ V	ˆDØ—:’:‘<”<ð Øà˜r ˜rœ( D¨¨¨¤H�4ˆEà&+Ñ#ˆBˆr�"�R˜˜2˜b ð �Uˆ{ˆ{Ø—Z’Z  aÑ(Ô(¨Ô+�Ø˜’9�9Ø'Ÿ_š_¨R°Q˜_Ñ7Ô7�FØÔ&×-Ò-¨fÑ5Ô5Ð5Ð5Ø˜3’Y�YØ'×1Ò1Ø"Ô,×1Ò1°"¸!Ð1Ñ<Ô<Ø'œ_ð 2ñ .ô .�Fð Ô'×.Ò.¨vÑ6Ô6Ð6Ð6Ø˜3’Y�YØ'Ÿ_š_¨R°Q˜_Ñ7Ô7�FØÔ&×-Ò-¨fÑ5Ô5Ð5áõ
 Ô$×*Ò*¨4Ñ0Ô0ˆAØð 5Ø˜’9�9ØŸš™œ�BØ'Ÿ_š_¨R°Q˜_Ñ7Ô7�FØÔ/×6Ò6°vÑ>Ô>Ð>ÙØ—:’:‘<”<×$Ò$Ð%8Ñ9Ô9¸2Ò=Ð=Ý!$ T§Z¢Z°¡_¤_°QÔ%7×%=Ò%=Ñ%?Ô%?Ñ!@Ô!@�JÙØ—:’:‘<”<×$Ò$Ð%9Ñ:Ô:¸RÒ?Ð?ñ å Ð!:¸TÑ!AÑBÔBÐBà*+¯(ª(©*¬*Ñ'��V˜V RØ—_’_ R¨Q�_Ñ/Ô/ˆFà�SŠyˆyØ—|’|¨�|Ñ+Ô+ÐbÐbÐ-bÑbÔbÐbØÔ#×*Ò*¨6Ñ2Ô2Ð2Ñ2Ø�s’�˜b Cši˜iØÔ ×'Ò'¨Ñ/Ô/Ð/Ð/Ø�s’�ØÔ"×)Ò)¨&Ñ1Ô1Ð1Ð1Ø�s’�ØÔ#×*Ò*¨6Ñ2Ô2Ð2Ð2Ø�s’�ØÔ'×.Ò.¨vÑ6Ô6Ð6Ð6Ø�s’�ØÔ%×,Ò,¨VÑ4Ô4Ð4Ð4Ø�s’�ØÔ#×*Ò*¨6Ñ2Ô2Ð2Ð2Ø—X’X‘Z”Zð CØÔ$×+Ò+¨FÑ3Ô3Ð3Ð3å)Ð*<¸rÑ*AÑBÔBÐBà�SŠyˆyØÔ(×/Ò/°Ñ7Ô7Ð7à�SŠyˆy˜B #šI˜IØÔ!×(Ò(¨Ñ0Ô0Ð0Ø�SŠyˆyØÔ+×2Ò2°6Ñ:Ô:Ð:à˜Ò#Ð#Ø!$�
”Ø$*�
Ô!Ø$*�
Ô!Øð 7Ø,6�JÔ)Ùñ $ð Ðr   ©NNN©T)r   r   r   rá  r   rå  rÌ  rÍ  rø  re  Ústaticmethodr   r   r   rf  rf    s{   € € € € € ð€Ið
$ð $ð $ð $ð	ð 	ð 	ð 	ð �"”*ÐDÑEÔE€Kð\ð \ð \ð \ðz �˜jÑ)Ô)€J€J€Jr   rf  c                   ó,   — e Zd Zdd„Z ee¦  «        ZdS )rd  Nc                 óv  — t          ||||¦  «        }d}t          ¦   «         \  }}	 |                     | ¦  «        }	n># |$ r6 t          j        ¦   «         d         }
t          t          |
¦  «        ¦  «        ‚w xY w|	                     d¦  «        }|r |d                              d¦  «        |_	        |	                     d¦  «        D �]p}|                     d¦  «        }|                     d¦  «        d	         }|                     d
¦  «        }|dk    r2| 
                    |d¬¦  «        }|j                             |¦  «         Œ€|dk    rQ|                     |j         
                    |d¬¦  «        |j        ¬¦  «        }|j                             |¦  «         Œ×|dk    r3| 
                    |d¬¦  «        }|j                             |¦  «         �Œ|dk    r3| 
                    |d¬¦  «        }|j                             |¦  «         �ŒI|                     d¦  «        }|dk    s|dk    r	d}d}d}d}n›|dk    rn”|                     d¦  «        d	         }|rw|                     d¦  «        }d}|                     d¦  «        }|r|d	         j        D ]}||j        z  }Œd}|                     d¦  «        d	         j        D ]}||j        z  }Œ| 
                    |d¬¦  «        }|dk    s |                     d¬¦  «        s
J d¦   «         ‚ddddd œ                     ||¦  «        }t/          ||¦  «        }|                     |¦  «         |                     d!¦  «        }|d"vr|j                             |¦  «         ||k    r||_        ||_        ||_        ||_        |                     d#¦  «        }|r;|d	         }|                     d
¦  «        }|d$v r|j                             |¦  «         |                     d%¦  «        }t=          |¦  «        r|j                             |¦  «         �Œr|S )&zL parse 'data' (XML string as outputted by svn st) into a status obj
        NrR   Úagainstr.   r  r+   r«   z	wc-statusr   r  Úunversionedré  rÔ  r=  rÛ  rÙ  rÑ  ÚnoneÚ0rè  ry   rÝ  r�  rà  ÚdaterÐ  rï  z2did't expect a directory with changed content hererÓ  r×  rÒ  )Únormalr  Ú
conflictedr  Úprops)r  r  zrepos-status)rÑ  rÐ  r[  ) rf  r´  rµ  rF   r"  rW   rE   ÚgetElementsByTagNameÚgetAttributerú  r>   r×  r*   rp   rú   rh   rÔ  rÛ  rÙ  r¸  Ú	nodeValuerA  r2   r  rÖ  r   rß  rà  r  rØ  rã   rÜ  )rû  rü  r   rß  rà  ri  rú  rÄ  rÅ  Údocr*  ÚurevelsÚentryelr«   ÚstatuselÚ
itemstatusrý   r  ÚcommitelÚ
author_elsrO   ÚitemattrnameÚattrÚpropsstatusÚ
rstatuselsÚ	rstatuselÚritemstatusÚlockelss                               r   re  zXMLWCStatus.fromstringþ  s±  € õ ˜j¨#¨v°vÑ>Ô>ˆ
Øˆ
Ý'™kœkÑˆ�ð	%Ø×%Ò% dÑ+Ô+ˆCˆCøØð 	%ð 	%ð 	%Ý”‘”˜qÔ!ˆAÝ�S ™VœVÑ$Ô$Ð$ð	%øøøð ×*Ò*¨9Ñ5Ô5ˆØð 	IØ$+¨B¤K×$<Ò$<¸ZÑ$HÔ$HˆJÔ!Ø×/Ò/°Ñ8Ô8ð R	1ñ R	1ˆGØ×'Ò'¨Ñ/Ô/ˆDØ×3Ò3°KÑ@Ô@ÀÔCˆHØ!×.Ò.¨vÑ6Ô6ˆJà˜]Ò*Ð*Ø#Ÿš¨°1˜Ñ5Ô5�ØÔ"×)Ò)¨&Ñ1Ô1Ð1ØØ˜zÒ)Ð)Ø#×-Ò-ØÔ(×-Ò-¨d¸Ð-Ñ:Ô:Ø#œð .ñ *ô *�ð Ô#×*Ò*¨6Ñ2Ô2Ð2ØØ˜yÒ(Ð(Ø#Ÿš¨°1˜Ñ5Ô5�ØÔ"×)Ò)¨&Ñ1Ô1Ð1ÙØ˜|Ò+Ð+Ø#Ÿš¨°1˜Ñ5Ô5�ØÔ%×,Ò,¨VÑ4Ô4Ð4Ùà×'Ò'¨
Ñ3Ô3ˆCØ˜WÒ$Ð$¨
°fÒ(<Ð(<Ø�Ø�Ø�Ø��Ø˜zÒ)Ð)Øð #×7Ò7¸ÑAÔAÀ!ÔD�Øð 
,Ø%×2Ò2°:Ñ>Ô>�FØ�FØ!)×!>Ò!>¸xÑ!HÔ!H�JØ!ð 2Ø!+¨A¤Ô!9ð 2ð 2˜AØ" a¤kÑ1˜F˜FØ�DØ%×:Ò:¸6ÑBÔBÀ1ÔEÜ'ð,ð ,˜à ¤Ñ+˜˜à—_’_ T¨q�_Ñ1Ô1ˆFà Ò+Ð+¨v¯|ª|À¨|Ñ/CÔ/CÐ+Ð+ØEñ ,Ô+Ð+ð &Ø(Ø(Øð	ð ÷
 Šc�*˜jÑ)Ô)ð õ ˜: |Ñ4Ô4ˆDØ�KŠK˜ÑÔÐà"×/Ò/°Ñ8Ô8ˆKØÐ"4Ð4Ð4ØÔ(×/Ò/°Ñ7Ô7Ð7à˜Ò#Ð#Ø!$�
”Ø$*�
Ô!Ø$*�
Ô!Ø"&�
”ð !×5Ò5°nÑEÔEˆJØð ?Ø& qœM�	Ø'×4Ò4°VÑ<Ô<�ØÐ"7Ð7Ð7ØÔ/×6Ò6°vÑ>Ô>Ð>à×2Ò2°6Ñ:Ô:ˆGÝ�7‰|Œ|ð 1ØÔ!×(Ò(¨Ñ0Ô0Ð0ùàÐs	   §= ½;A8r  )r   r   r   re  r	  r   r   r   rd  rd  ý  s8   € € € € € ðhð hð hð hðR �˜jÑ)Ô)€J€J€Jr   rd  c                   ó   — e Zd Zd„ Zd„ ZdS )r–  c                 óX  — i }|                      d¦  «        D ]q}|                     ¦   «         sŒ|                      dd¦  «        \  }}|                     ¦   «                              dd¦  «        }|                     ¦   «         }|||<   Œr	 |d         | _        n# t
          $ r t          d¦  «        ‚w xY w|d         d	k    rd
p|d         | _        	 t          |d         ¦  «        | _	        n# t
          $ r
 d | _	        Y nw xY wt          j                             |d         ¦  «        | _        | j                             ¦   «         | _        d|v rt          |d         ¦  «        | _        d|v r|d         | _        d|v r+t!          |d         ¦  «        | _        | j        dz  | _        d S d S )NrŒ  r5   rR   rÌ   ry   r   zNot a versioned resourceÚnodekindÚ	directoryrª   r  r«   ÚlastchangedrevÚlastchangedauthorÚlastchangeddatei@B )r?   r=   r$  rH   r   r~  rW   r¬   ru  r   r:   r«   rû   rš   Úcreated_revÚlast_authorÚparse_wcinfotimerŸ   r)   )r   r—  r…  rz  rÉ   r’   s         r   r   zInfoSvnWCCommand.__init__j  sÁ  € ð ˆØ—L’L Ñ&Ô&ð 	ð 	ˆDØ—:’:‘<”<ð ØØŸš C¨Ñ+Ô+‰JˆC�Ø—)’)‘+”+×%Ò% c¨2Ñ.Ô.ˆCØ—K’K‘M”MˆEØˆAˆc‰FˆFð	:Ø˜”xˆDŒHˆHøÝð 	:ð 	:ð 	:ÝÐ8Ñ9Ô9Ð9ð	:øøøð �j”M [Ò0Ð:°UÐK¸aÀ
¼mˆŒ	ð	Ý˜1˜Zœ=Ñ)Ô)ˆDŒHˆHøÝð 	ð 	ð 	ØˆDŒHˆHˆHð	øøøõ ”G—M’M ! F¤)Ñ,Ô,ˆŒ	Ø”I—N’NÑ$Ô$ˆŒ	Ø˜qÐ Ð Ý" 1Ð%5Ô#6Ñ7Ô7ˆDÔØ !Ð#Ð#Ø Ð!4Ô5ˆDÔØ Ð!Ð!Ý)¨!Ð,=Ô*>Ñ?Ô?ˆDŒJØœ
 WÑ,ˆDŒIˆIˆIð "Ð!s   ÂB ÂB3ÃC- Ã-DÄ Dc                 ó"   — | j         |j         k    S r   )Ú__dict__r‚   s     r   r„   zInfoSvnWCCommand.__eq__“  s   € ØŒ} ¤Ò.Ð.r   N)r   r   r   r   r„   r   r   r   r–  r–  i  s3   € € € € € ð'-ð '-ð '-ðR/ð /ð /ð /ð /r   r–  c                 óÔ   — t          j        d| ¦  «        }|st          d| z  ¦  «        ‚|                     ¦   «         \  } }t	          j        | d¦  «        }t          j        |¦  «        S )z# Returns seconds since epoch, UTC. z&(\d+-\d+-\d+ \d+:\d+:\d+) ([+-]\d+) .*ztimestring %r does not matchz%Y-%m-%d %H:%M:%S)rÌ  rÒ   rW   rt  r)   r¹   ÚcalendarÚtimegm)r»   r{  Útimezoner¼   s       r   r.  r.  –  sg   € õ 	ŒÐ:¸GÑDÔD€AØð CÝÐ7¸'ÑAÑBÔBÐBØŸš™
œ
Ñ€GˆXå”˜wÐ(;Ñ<Ô<€JÝŒ?˜:Ñ&Ô&Ð&r   zProperties on '(.*)':c                 ó`  — d„ |                      d¦  «        D ¦   «         }i }|�r	|                     d¦  «        }|                     |¦  «        }|st          d|z  ¦  «        ‚|                     ¦   «         d         }|                      |d¬¦  «        }g }	|rt|d                              d¦  «        rY|                     d¦  «                             ¦   «         }
|	                     |
¦  «         |r|d                              d¦  «        °Y|	s
J d¦   «         ‚t          ||	¦  «        ||<   |�°	|S )	z5 Return a dictionary of path->PropListDict mappings. c                 ó   — g | ]}|¯|‘ŒS r   r   rÂ   s     r   rŒ   z+make_recursive_propdict.<locals>.<listcomp>¥  s   € Ð0Ð0Ð0�1¨aÐ0ˆQÐ0Ð0Ð0r   rŒ  r   z could not parse propget-line: %rrR   ré  r   zmust have found properties!)
r?   ÚpoprÒ   rW   rt  r>   r/   r=   r*   r¿   )Úwcrootr—  Úrexr�  Úpdictrz  r{  r«   rý   Ú	propnamesÚpropnames              r   rŽ  rŽ  ¡  sD  € ð 1Ð0˜Ÿš TÑ*Ô*Ð0Ñ0Ô0€EØ€EØ
ñ 8Ø�yŠy˜‰|Œ|ˆØ�IŠI�d‰OŒOˆØð 	HÝÐ?À$ÑFÑGÔGÐGØ�xŠx‰zŒz˜!Œ}ˆØ—’˜T q�Ñ)Ô)ˆØˆ	Øð 	'˜˜aœ×+Ò+¨DÑ1Ô1ð 	'Ø—y’y ‘|”|×)Ò)Ñ+Ô+ˆHØ×Ò˜XÑ&Ô&Ð&ð ð 	'˜˜aœ×+Ò+¨DÑ1Ô1ð 	'ð Ð7Ð7Ð7Ñ7Ô7Ð7Ý$ V¨YÑ7Ô7ˆˆf‰ð ñ 8ð €Lr   c                 óT   — | r| S ddl m} ddlm} |                      ||g¦  «         | S )Nr   )rÄ  )rÅ  )Úxml.domrÄ  Úxml.parsers.expatrÅ  r  )r   rÄ  rÅ  s      r   r´  r´  ·  sO   € Øð ØˆØÐÐÐÐÐØ,Ð,Ð,Ð,Ð,Ð,Ø	‡L‚L�'˜:Ð&Ñ'Ô'Ð'Ø€Lr   c                   ó   — e Zd Zd„ Zd„ ZdS )r»  c                 óP  — t          |                     d¦  «        ¦  «        | _        t          d |j        ¦  «        D ]è}|j        |j        k    rÖ|j        dk    r|j        j	        | _
        Œ/|j        dk    r!|j        r|j        j	        | _        ŒSd| _        Œ[|j        dk    r!|j        j	        }t          |¦  «        | _        Œ‡|j        dk    rVg | _        t          d |j        ¦  «        D ]9}|j        |j        k    r'| j                             t!          |¦  «        ¦  «         Œ:Œéd S )Nr  rà  r€  ry   r  rŸ  )ru  r  r   r¶  r¸  r¹  rº  ÚnodeNamer·  r  rà  r€  r½   r  Ústrpathsr*   Ú	PathEntry)r   rÇ  Úlpartr»   Úpparts        r   r   zLogEntry.__init__À  s0  € Ý�x×,Ò,¨ZÑ8Ô8Ñ9Ô9ˆŒÝ˜D (Ô"5Ñ6Ô6ð 	Cð 	CˆEØŒ~ Ô!3Ò3Ð3Ø”> XÒ-Ð-Ø"'Ô"2Ô"<�D”K�KØ”^ uÒ,Ð,ØÔ'ð &Ø#(Ô#3Ô#=˜œ˜à#%˜œ˜Ø”^ vÒ-Ð-à#Ô.Ô8�GÝ .¨wÑ 7Ô 7�D”I�IØ”^ wÒ.Ð.Ø$&�D”MÝ!'¨¨eÔ.>Ñ!?Ô!?ð Cð C˜Ø œ>¨UÔ-?Ò?Ð?Ø œM×0Ò0µ¸5Ñ1AÔ1AÑBÔBÐBøøð#	Cð 	Cr   c                 ó0   — d| j         | j        | j        fz  S )Nz#<Logentry rev=%d author=%s date=%s>)r   rà  r  r   s    r   r  zLogEntry.__repr__Ô  s!   € Ø4ØŒH�d”k 4¤9ð8.ñ .ð 	.r   N)r   r   r   r   r  r   r   r   r»  r»  ¿  s5   € € € € € ðCð Cð Cð(.ð .ð .ð .ð .r   r»  r  )1r3   r   rF   r)   rÌ  r2  r:   r®  Úpy._pathr   r   r   r    ÚrepositoriesrV   rG   rU   rB   rJ   rP   r\   ÚPathBaser^   r½   rÄ   r¿   rË   r?   rÎ   rm   rÐ   rÏ   rÍ  rì  rÑ   rØ   rÝ   rå   rn   rç   rs  r÷   rf  rd  r–  r.  rŽ  r´  r»  r   r   r   ú<module>rK     s  ððð ð #Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ñ ô ð ðGð Gð Gð Gð Gñ Gô Gð Gð&ð &ð &ð &ð &ñ &ô &ð &ðP ˆy‰{Œ{€ð
 €Ø„<�7ÒÐØ�SÑ€MØ" TÑ)Ð àð ð ð ð ðð ð ð .;ð ð ð ð ð9ð 9ð 9ðr,ð r,ð r,ð r,ð r,�&”/ñ r,ô r,ð r,ðh#ð #ð #ðð ð ð ð �4ñ ô ð ðð ð ð 6×;Ò;¸CÑ@Ô@€Ø„6ˆ]ÐÐØ×Ò˜œÑ Ô Ð ØŒL˜GÒ#€	Ø�"”*Ð3°R´TÑ:Ô:€ð	Gð 	Gð 	Gðð ð ð ð#ð #ð #ð&=ð =ð =ð =ð =ˆfñ =ô =ð =ð2 ˆBŒJÐ/Ñ0Ô0€	ðk?ð k?ð k?ð k?ð k?�v”ñ k?ô k?ð k?ð\|*ð |*ð |*ð |*ð |*ñ |*ô |*ð |*ð|j*ð j*ð j*ð j*ð j*�(ñ j*ô j*ð j*ðX+/ð +/ð +/ð +/ð +/ñ +/ô +/ð +/ðZ	'ð 	'ð 	'ð #- "¤*Ð-DÑ"EÔ"Eðð ð ð ð, ð ð ð ð ð.ð .ð .ð .ð .ñ .ô .ð .ð .ð .r   