<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

7Re,"  c               @   s½   d  Z  d d l Z d d l Z d d l m Z m Z d d l m Z d d l m	 Z	 m
 Z
 m Z m Z m Z d d g Z Gd d	   d	 e  Z e   Z Gd
 d   d e  Z d d   Z d S(   u)   Handles all VCS (version control) supporti    N(   u   urlparseu   urllib(   u   logger(   u   display_pathu
   backup_diru   find_commandu   rmtreeu   ask_path_existsu   vcsu   get_src_requirementc                sΘ   |  Ee  Z d  Z i  Z d d d d d d g Z   f d d   Z d	 d
   Z e d d    Z e d d    Z	 e d d    Z
 d d   Z d d d d  Z d d   Z d d   Z d d   Z   S(   u
   VcsSupportu   sshu   gitu   hgu   bzru   sftpu   svnc                sR   t  j j |  j  t t  d d   r; t  j j |  j  n  t t |   j	   d  S(   Nu   uses_fragment(
   u   urlparseu   uses_netlocu   extendu   schemesu   getattru   Noneu   uses_fragmentu   superu
   VcsSupportu   __init__(   u   self(   u	   __class__(    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   __init__   s    u   VcsSupport.__init__c             C   s   |  j  j   S(   N(   u	   _registryu   __iter__(   u   self(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   __iter__   s    u   VcsSupport.__iter__c             C   s   t  |  j j    S(   N(   u   listu	   _registryu   values(   u   self(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   backends   s    u   VcsSupport.backendsc             C   s   d d   |  j  D S(   Nc             S   s   g  |  ] } | j   q S(    (   u   dirname(   u   .0u   backend(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu
   <listcomp>$   s   	 u'   VcsSupport.dirnames.<locals>.<listcomp>(   u   backends(   u   self(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   dirnames"   s    u   VcsSupport.dirnamesc             C   s.   g  } x! |  j  D] } | j | j  q W| S(   N(   u   backendsu   extendu   schemes(   u   selfu   schemesu   backend(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   all_schemes&   s    u   VcsSupport.all_schemesc             C   sP   t  | d  s' t j d | j  d  S| j |  j k rL | |  j | j <n  d  S(   Nu   nameu   Cannot register VCS %s(   u   hasattru   loggeru   warnu   __name__u   nameu	   _registry(   u   selfu   cls(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   register-   s
    u   VcsSupport.registerc             C   sR   | |  j  k r |  j  | =n2 | |  j  j   k rA |  j  | j =n t j d  d  S(   Nu0   Cannot unregister because no class or name given(   u	   _registryu   valuesu   nameu   loggeru   warn(   u   selfu   clsu   name(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu
   unregister4   s
    u   VcsSupport.unregisterc             C   sO   xH |  j  j   D]7 } t j j | | j  } t j j |  r | j Sq Wd S(   u   
        Return the name of the version control backend if found at given
        location, e.g. vcs.get_backend_name('/path/to/vcs/checkout')
        N(	   u	   _registryu   valuesu   osu   pathu   joinu   dirnameu   existsu   nameu   None(   u   selfu   locationu   vc_typeu   path(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   get_backend_name<   s
    u   VcsSupport.get_backend_namec             C   s*   | j    } | |  j k r& |  j | Sd  S(   N(   u   loweru	   _registry(   u   selfu   name(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   get_backendG   s    u   VcsSupport.get_backendc             C   s&   |  j  |  } | r" |  j |  Sd  S(   N(   u   get_backend_nameu   get_backendu   None(   u   selfu   locationu   vc_type(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   get_backend_from_locationL   s    u$   VcsSupport.get_backend_from_locationN(   u   __name__u
   __module__u   __qualname__u	   _registryu   schemesu   __init__u   __iter__u   propertyu   backendsu   dirnamesu   all_schemesu   registeru   Noneu
   unregisteru   get_backend_nameu   get_backendu   get_backend_from_location(   u
   __locals__(    (   u	   __class__u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu
   VcsSupport   s   u
   VcsSupportc                sζ   |  Ee  Z d  Z d Z d Z d    f d d  Z d d   Z d d   Z e	 d d	    Z
 d
 d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d! d d  Z   S("   u   VersionControlu    c                s/   | |  _  d  |  _ t t |   j | |   d  S(   N(   u   urlu   Noneu   _cmdu   superu   VersionControlu   __init__(   u   selfu   urlu   argsu   kwargs(   u	   __class__(    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   __init__Z   s    		u   VersionControl.__init__c             C   s   t  j | f S(   N(   u   loggeru   INFO(   u   selfu   line(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   _filter_   s    u   VersionControl._filterc             C   s1   t  j j |  \ } } | j t  j j  p0 | S(   u~   
           posix absolute paths start with os.path.sep,
           win32 ones ones start with drive (like c:\folder)
        (   u   osu   pathu
   splitdriveu
   startswithu   sep(   u   selfu   repou   driveu   tail(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   _is_local_repositoryb   s    u#   VersionControl._is_local_repositoryc             C   sL   |  j  d  k	 r |  j  St |  j  } t j d |  j | f  | |  _  | S(   Nu   Found command %r at %r(   u   _cmdu   Noneu   find_commandu   nameu   loggeru   info(   u   selfu   command(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   cmdj   s    	u   VersionControl.cmdc       	      C   s΄   d } d |  j  k s( t | |  j    |  j  j d d  d } t j |  \ } } } } } d } d | k r | j d d  \ } } n  t j | | | | d f  } | | f S(   um   
        Returns the correct repository URL and revision by parsing the given
        repository URL
        uv   Sorry, '%s' is a malformed VCS url. The format is <vcs>+<protocol>://<url>, e.g. svn+http://myrepo/svn/MyApp#egg=MyAppu   +i   u   @u    N(   u   urlu   AssertionErroru   splitu   urlparseu   urlsplitu   Noneu   rsplitu
   urlunsplit(	   u   selfu   error_messageu   urlu   schemeu   netlocu   pathu   queryu   fragu   rev(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   get_url_revs   s    "u   VersionControl.get_url_revc             C   sH   | j  d  j |  j  s, t d |   |  j |  |  j |  f S(   uA   
        Returns (url, revision), where both are strings
        u   /u   Bad directory: %s(   u   rstripu   endswithu   dirnameu   AssertionErroru   get_urlu   get_revision(   u   selfu   location(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   get_info   s    ,u   VersionControl.get_infoc             C   s   t  j |  j d  S(   ua   
        Normalize a URL for comparison by unquoting it and removing any trailing slash.
        u   /(   u   urllibu   unquoteu   rstrip(   u   selfu   url(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   normalize_url   s    u   VersionControl.normalize_urlc             C   s   |  j  |  |  j  |  k S(   uV   
        Compare two repo URLs for identity, ignoring incidental differences.
        (   u   normalize_url(   u   selfu   url1u   url2(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   compare_urls   s    u   VersionControl.compare_urlsc             C   s
   t   d S(   uΜ   
        Takes the contents of the bundled text file that explains how to revert
        the stripped off version control data of the given package and returns
        the URL and revision of it.
        N(   u   NotImplementedError(   u   selfu   content(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   parse_vcs_bundle_file   s    u$   VersionControl.parse_vcs_bundle_filec             C   s
   t   d S(   ux   
        Called when installing or updating an editable package, takes the
        source path of the checkout.
        N(   u   NotImplementedError(   u   selfu   dest(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   obtain    s    u   VersionControl.obtainc             C   s
   t   d S(   uB   
        Switch the repo at ``dest`` to point to ``URL``.
        N(   u   NotImplemented(   u   selfu   destu   urlu   rev_options(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   switch§   s    u   VersionControl.switchc             C   s
   t   d S(   uO   
        Update an already-existing repo to the given ``rev_options``.
        N(   u   NotImplementedError(   u   selfu   destu   rev_options(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   update­   s    u   VersionControl.updatec       
      C   s@  d } d } t j j |  r#d } t j j t j j | |  j   rϊ |  j |  } |  j | |  rΘ t	 j
 d |  j j   t |  | f  t	 j d t |  |  j | f  |  j | |  q t	 j d |  j |  j t |  | f  d } q#t	 j d	 | |  j |  j f  d } n  | r<t	 j d |  j | f  t d | d | d  } | d k r¦t	 j d |  j t |  | | f  |  j | | |  q<| d k r΅q<| d k rλt	 j d t |   t |  d } q<| d k r<t |  }	 t	 j d t |  |	 f  t j | |	  d } q<n  | S(   u­   
        Prepare a location to receive a checkout/clone.

        Return True if the location is ready for (and requires) a
        checkout/clone, False otherwise.
        u)   %s in %s exists, and has correct URL (%s)u   Updating %s %s%su   %s %s in %s exists with URL %su%   (s)witch, (i)gnore, (w)ipe, (b)ackup u   su   iu   wu   bu0   Directory %s already exists, and is not a %s %s.u   (i)gnore, (w)ipe, (b)ackup u+   The plan is to install the %s repository %su   What to do?  %si    i   u   Switching %s %s to %s%su   Deleting %su   Backing up %s to %sTF(   u   su   iu   wu   b(   u%   (s)witch, (i)gnore, (w)ipe, (b)ackup (   u   su   iu   wu   b(   u   iu   wu   b(   u   (i)gnore, (w)ipe, (b)ackup (   u   iu   wu   b(   u   Trueu   Falseu   osu   pathu   existsu   joinu   dirnameu   get_urlu   compare_urlsu   loggeru   infou	   repo_nameu   titleu   display_pathu   notifyu   updateu   warnu   nameu   ask_path_existsu   switchu   rmtreeu
   backup_diru   shutilu   move(
   u   selfu   destu   urlu   rev_optionsu   rev_displayu   checkoutu   promptu   existing_urlu   responseu   dest_dir(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   check_destination³   sZ    $			 					
		u    VersionControl.check_destinationc             C   s0   t  j j |  r t |  n  |  j |  d  S(   N(   u   osu   pathu   existsu   rmtreeu   obtain(   u   selfu   location(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   unpackν   s    u   VersionControl.unpackc             C   s
   t   d  S(   N(   u   NotImplementedError(   u   selfu   distu   locationu	   find_tags(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   get_src_requirementς   s    u"   VersionControl.get_src_requirementNF(   u   __name__u
   __module__u   __qualname__u   nameu   dirnameu   Noneu   __init__u   _filteru   _is_local_repositoryu   propertyu   cmdu   get_url_revu   get_infou   normalize_urlu   compare_urlsu   parse_vcs_bundle_fileu   obtainu   switchu   updateu   check_destinationu   unpacku   Falseu   get_src_requirement(   u
   __locals__(    (   u	   __class__u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   VersionControlV   s"   	:u   VersionControlc             C   sF   t  j |  } | r+ |   j |  | |  St j d |  |  j   S(   Nut   cannot determine version of editable source in %s (is not SVN checkout, Git clone, Mercurial clone or Bazaar branch)(   u   vcsu   get_backend_from_locationu   get_src_requirementu   loggeru   warnu   as_requirement(   u   distu   locationu	   find_tagsu   version_control(    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   get_src_requirementφ   s
    (   u   __doc__u   osu   shutilu   pip.backwardcompatu   urlparseu   urllibu   pip.logu   loggeru   pip.utilu   display_pathu
   backup_diru   find_commandu   rmtreeu   ask_path_existsu   __all__u   objectu
   VcsSupportu   vcsu   VersionControlu   get_src_requirement(    (    (    u)   /tmp/pip-zej_zi-build/pip/vcs/__init__.pyu   <module>   s   (D	 