ó
    6°hý  ã                  ó   • S r SSKJr  SSKrSSKrSSKJr  SSKJrJ	r	J
r
JrJrJr  SSKJr  0 r\R"                  " \5      rSr\R&                  " S5      r " S	 S
5      rS rSSSSSS.rSS jrS r\" SSS9S 5       rg)a'  extend schemes with shortcuts to repository swarms

This extension allows you to specify shortcuts for parent URLs with a
lot of repositories to act like a scheme, for example::

  [schemes]
  py = http://code.python.org/hg/

After that you can use it like::

  hg clone py://trunk/

Additionally there is support for some more complex schemas, for
example used by Google Code::

  [schemes]
  gcode = http://{1}.googlecode.com/hg/

The syntax is taken from Mercurial templates, and you have unlimited
number of variables, starting with ``{1}`` and continuing with
``{2}``, ``{3}`` and so on. This variables will receive parts of URL
supplied, split by ``/``. Anything not specified as ``{part}`` will be
just appended to an URL.

For convenience, the extension adds these schemes by default::

  [schemes]
  py = http://hg.python.org/
  bb = https://bitbucket.org/
  bb+ssh = ssh://hg@bitbucket.org/
  gcode = https://{1}.googlecode.com/hg/
  kiln = https://{1}.kilnhg.com/Repo/

You can override a predefined scheme by defining a new scheme with the
same name.
é    )ÚannotationsN)Ú_)ÚerrorÚ
extensionsÚhgÚpycompatÚ	registrarÚ	templater)Úurlutils   ships-with-hg-cores   {(\d+)\}c                  ó6   • \ rS rSrS rS rS rS	S jrS rSr	g)
ÚShortRepositoryéH   c                óÎ   • X l         X0l        Xl         [        [	        [
        [        R                  U R                  5      5      5      U l        g ! [         a
    SU l         g f = f)Nr   )
Úschemer
   ÚurlÚmaxÚmapÚintÚ_partreÚfindallÚpartsÚ
ValueError)Úselfr   r   r
   s       Ú//usr/lib/python3/dist-packages/hgext/schemes.pyÚ__init__ÚShortRepository.__init__I   sL   € ØŒØ"ŒØŒð	ÜœS¤¤g§o¡o°d·h±hÓ&?Ó@ÓAˆD�JøÜó 	ØˆDŽJð	ús   ”;A ÁA$Á#A$c                ó    • SU R                   -  $ )Ns   <ShortRepository: %s>)r   )r   s    r   Ú__repr__ÚShortRepository.__repr__R   s   € Ø'¨$¯+©+Ñ5Ð5ó    c                óð   • U R                  UR                  5      nUR                  US9n[        R                  R                  UR                  R                  5      nUb  UR                  " X/UQ70 UD6$ g )N)Únew_raw_location)	ÚresolveÚrawlocÚcopyr   Úpeer_schemesÚgetr   r   Ú	make_peer)r   ÚuiÚpathÚargsÚkwargsÚnew_urlÚclss          r   r(   ÚShortRepository.make_peerU   sa   € Ø—,‘,˜tŸ{™{Ó+ˆØ�y‰y¨'ˆyÐ2ˆÜ�o‰o×!Ñ! $§(¡(§/¡/Ó2ˆØ‰?Ø—=’= Ð;¨DÒ;°FÑ;Ð;Ør    Nc                ó\  • U R                  U5      n[        R                  " U5      nUR                  =(       d    SnU[        R
                  ;   a  [        R
                  U   nO8U[        R                  ;   a  [        R                  U   nO[        R                  nUR                  XX4US9$ )Ns   file)ÚintentsÚ
createopts)	r#   r   r   r   r   r&   Úrepo_schemesÚLocalFactoryÚinstance)	r   r)   r   Úcreater1   r2   Úur   r.   s	            r   r5   ÚShortRepository.instance]   s†   € Ø�l‰l˜3ÓˆÜ�KŠK˜ÓˆØ—‘×$˜WˆØ”R—_‘_Ó$Ü—/‘/ &Ñ)‰CØ”r—‘Ó&Ü—/‘/ &Ñ)‰Cä—/‘/ˆCØ�|‰|Ø�V¸ð ð 
ð 	
r    c                óÚ  •  UR                  SS5      S   nUR                  SU R
                  5      n[        U5      U R
                  :”  a  US   nUS S nOSn[        U5       VVs0 s H  u  pESUS-   -  U_M     nnnSR                  U R                  R                  U R                  U5      5      U-   $ ! [         a#    [        R                  " [	        S5      U-  5      ef = fs  snnf )Ns   ://é   s   no '://' in scheme url '%s'ó   /éÿÿÿÿr    s   %d)ÚsplitÚ
IndexErrorr   ÚAbortr   r   ÚlenÚ	enumerateÚjoinr
   Úprocessr   )r   r   r   ÚtailÚiÚvÚcontexts          r   r#   ÚShortRepository.resolvek   sá   € ð	GØ—)‘)˜F AÓ& qÑ)ˆCð —	‘	˜$ §
¡
Ó+ˆÜˆu‹:˜Ÿ
™
Ó"Ø˜‘9ˆDØ˜#˜2�J‰EàˆDÜ2;¸EÔ2BÔCÒ2B©$¨!�5˜A ™E‘? AÒ%Ñ2BˆÑCØ�x‰x˜Ÿ™×.Ñ.¨t¯x©x¸ÓAÓBÀTÑIÐIøô ó 	GÜ—+’+œaÐ >Ó?À#ÑEÓFÐFð	Güó Ds   ‚B7 Á'C'Â7-C$)r   r   r
   r   )NN)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r(   r5   r#   Ú__static_attributes__© r    r   r   r   H   s   † òò6òô
õJr    r   c                óp   • U(       a(  [          H  nUR                  US-   5      (       d  M    g   U " U5      $ )Nó   :F)ÚschemesÚ
startswith)Úorigr*   r   s      r   ÚhasdriveletterrT   {   s1   € ÞßˆFØ�‰˜v¨™}×-Ó-Ùñ ñ �‹:Ðr    s   http://hg.python.org/s   https://bitbucket.org/s   ssh://hg@bitbucket.org/s   https://{1}.googlecode.com/hg/s   https://{1}.kilnhg.com/Repo/)s   pys   bbs   bb+sshs   gcodes   kilnc                ó4  • [         R                  (       aƒ  [        U 5      S:X  as  U R                  5       (       a]  [        R
                  R                  SU -  5      (       a5  [        S5      nXU R                  5       4-  n[        R                  " U5      egggg)z6check if a scheme conflict with a Windows drive letterr:   s   %s:\s5   custom scheme %s:// conflicts with drive letter %s:\
N)r   Ú	iswindowsr@   ÚisalphaÚosr*   Úexistsr   Úupperr   r?   )r   Úmsgs     r   Ú_check_drive_letterr\   Œ   s   € ô 	××Ü�‹K˜1ÓØ�N‰N×ÑÜ�G‰G�N‰N˜8 fÑ,×-Ñ-äÐJÓKˆØ˜Ÿ™›Ð'Ñ'ˆÜ�kŠk˜#ÓÐð	 .ð ð ð 	r    c                ó  • [         R                  [        U R                  S5      5      5        [        R
                  " [        R                  5      n[         R                  5        H€  u  p#[        U5        [        R                  " U5      R                  nU[        R                  ;   a  [        X2U5      [        R                  U'   Mc  [        X2U5      [        R                  U'   M‚     [         R"                  " [        S[$        5        g )Ns   schemesrT   )rQ   ÚupdateÚdictÚconfigitemsr
   ÚengineÚparseÚitemsr\   r   r   r   r   r&   r   r3   r   ÚwrapfunctionrT   )r)   Útr   r   Ú
url_schemes        r   Úextsetuprg   ™   s©   € Ü‡N�N”4˜Ÿ™ zÓ2Ó3Ô4Ü×ÒœŸ™Ó)€AÜ—}‘}–‰ˆÜ˜FÔ#Ü—[’[ Ó%×,Ñ,ˆ
ØœŸ™Ó(Ü&5°cÀ1Ó&EŒB�O‰O˜FÓ#ä&5°cÀ1Ó&EŒB�O‰O˜FÓ#ñ 'ô ×ÒœGÐ%5´~ÕFr    s   debugexpandschemeT)Únorepoc                óL  • [         R                  " U5      R                  nU[        R                  ;   a  [        R                  U   nO[        R
                  R                  U5      nUb&  [        U[        5      (       a  UR                  U5      nU R                  US-   5        g)z3given a repo path, provide the scheme-expanded pathNó   
)r   r   r   r   r&   r3   r'   Ú
isinstancer   r#   Úwrite)r)   r   Úoptsr   r.   s        r   Úexpandschemern   §   su   € ô �[Š[˜Ó×$Ñ$€FØ”—‘Ó Ü�o‰o˜fÑ%‰ä�o‰o×!Ñ! &Ó)ˆØ
�œ: c¬?×;Ñ;Ø�k‰k˜#ÓˆØ‡H�HˆS�5‰[Õr    )r   ÚbytesÚreturnÚNone)Ú__doc__Ú
__future__r   rX   ÚreÚmercurial.i18nr   Ú	mercurialr   r   r   r   r	   r
   Úmercurial.utilsr   ÚcmdtableÚcommandÚ
testedwithÚcompiler   r   rT   rQ   r\   rg   rn   rN   r    r   Ú<module>r|      s¥   ðñ#õJ #ã 	Û 	å ÷÷ õð €Ø
×
Ò
˜HÓ
%€ð
 #€
à
�*Š*�\Ó
"€÷0Jñ 0Jòfð $Ø$Ø)Ø/Ø,ñ€ô
òGñ 	Ð	 dÑ+ñ	ó ,ñ	r    