ó â\e[c@@sãddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl mZddlmZmZmZddlmZddlmZddlmZmZdd lmZdd lmZdd lmZdd l m!Z!m"Z"dd l#m$Z$ddl%m&Z&ddl'm(Z(ddl)m*Z*m+Z+m,Z,m-Z-ddl.m/Z/ddl0m1Z1m2Z2ddl3m4Z4ddl5m6Z6ddl7m8Z8ddl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEddlFmGZGddlHmIZIddlJmKZKddlLmMZMddlNmOZOmPZPejQeRƒZSejTjUjVƒZWd„ZXdeYfd„ƒYZZd„Z[d „Z\d!„Z]dS("i(tabsolute_importN(t change_root(t FeedParser(t pkg_resourcestpytomltsix(t specifiers(tMarker(tInvalidRequirementt Requirement(tcanonicalize_name(tVersion(tparse(tRequirementParseErrortparse_requirements(twheel(tNoOpBuildEnvironment(t native_str(tis_archive_filetis_urlt path_to_urlt url_to_path(tInstallationError(tPIP_DELETE_MARKER_FILENAMEtrunning_under_virtualenv(tUninstallPathSet(tHashes(t indent_log( t_make_build_dirtask_path_existst backup_dirtcall_subprocesst display_pathtdist_in_site_packagestdist_in_usersitet ensure_dirtget_installed_versiontis_installable_dirtread_text_filetrmtree(tSETUPTOOLS_SHIM(t TempDirectory(t open_spinner(tvcs(tWheeltmove_wheel_filescC@sOtjd|ƒ}d}|r?|jdƒ}|jdƒ}n|}||fS(Ns^(.+)(\[[^\]]+\])$ii(tretmatchtNonetgroup(tpathtmtextrastpath_no_extras((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt _strip_extras5stInstallRequirementc B@sHeZdZd)ed)ed)ed)d)ed*d„ Zed)ed)d)ed„ƒZed)ed)d„ƒZ ed)ed)d)ed„ƒZ d„Z d„Z d„Z ed„ƒZed „ƒZed „ƒZed „ƒZd)d „Zed „ƒZed„Zd„Zd„Zd„Zd„Zd„Zed„ƒZd)d)d)eeed„Zed„ƒZed„ƒZed„ƒZd„Z d„Z!d„Z"d„Z#d„Z$e%j&dƒZ'd„Z(d „Z)d!„Z*d+d)d"„Z+ed#„Z,eeed$„Z-d%„Z.d&„Z/d)d)d)d)eeed'„Z0d(„Z1RS(,sÆ Represents something that may be installed later on, may have information about where to fetch the relavant requirement and also contains logic for installing the said requirement. c C@sÜ|dks't|tƒs't|ƒ‚||_||_| |_|dk rrtjj tjj |ƒƒ|_ n d|_ ||_ | |_ |dk r¬||_|_n8ddlm} |o×|jo×| |jƒ|_|_| rö| |_n+|rd„|jDƒ|_n tƒ|_|dk r9||_n|oE|j|_d|_d|_d|_tddƒ|_d|_||_d|_d|_| r¨| ni|_ t!|_"t!|_#||_$t%ƒ|_&dS(Ni(tLinkcS@sh|]}tj|ƒ’qS((Rt safe_extra(t.0textra((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pys as tkinds req-build('R0t isinstanceR tAssertionErrortreqt comes_fromt constrainttosR2tnormpathtabspatht source_dirteditablet _wheel_cachetlinkt original_linktpip._internal.indexR8turlR4tsettmarkerstmarkert_egg_info_patht satisfied_bytconflicts_withR)t_temp_build_dirt_ideal_build_dirtupdatetinstall_succeededtuninstalled_pathsettoptionstFalsetpreparedt is_directtisolatedRt build_env(tselfR?R@RERFRHRTRMR[RWt wheel_cacheRAR4R8((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt__init__HsD'    $    (              c C@sçddlm}t|ƒ\}} } | jdƒrCt| ƒ} nd} |dk rŒyt|ƒ} Wq’tk rˆtd|ƒ‚q’Xnd} || |d| dt d|| ƒd|d |d |rÎ|nid |d | pãd ƒS(Ni(R8sfile:sInvalid requirement: '%s'RERFRHRAR[RWR^R4(( RJR8tparse_editablet startswithRR0R RRtTrue( tclst editable_reqR@R[RWR^RAR8tnameRKtextras_overrideRER?((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt from_editable…s(   cC@siyt|ƒ}Wn!tk r3td|ƒ‚nX|jrPtd|ƒ‚n|||d|d|ƒS(NsInvalid requirement: '%s'sADirect url requirement (like %s) are not allowed for dependenciesR[R^(R RRRK(RcR?R@R[R^((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytfrom_req¢s   c@syddlm}t|ƒr%d}nd}||kry|j|dƒ\}} | jƒ} | sjd} qt| ƒ} nd} |jƒ}d‰tjj tjj |ƒƒ} d} d} t|ƒrÖ||ƒ} nét | ƒ\} } tjj | ƒo<tjj |kp<tjjdk r0tjj|kp<|jdƒ}|ryt| ƒsdtd|ƒ‚n|t| ƒƒ} nFt| ƒr¿tjj| ƒsªtjd|ƒn|t| ƒƒ} n| rV| jd krtjd | jƒr|ttjj tjj | jƒƒƒƒ} n| jrJt| jƒ}d |j|jf‰q\| j ‰n|‰| r~t!d | j"ƒƒj#} nd} ˆdk r6yt!ˆƒ‰Wq6t$k r2tjj ˆkrÛd }|t%ˆƒ7}n>dˆkr t&‡fd†t'Dƒƒ r d}n t(j)ƒ}tdˆ|fƒ‚q6Xn|ˆ|d| d| d|d|r`|nid|d|d| ƒS(sŒCreates an InstallRequirement from a name, which might be a requirement, directory containing 'setup.py', filename, or URL. i(R8s; t;it.s;Directory %r is not installable. File 'setup.py' not found.sARequirement %r looks like a filename, but the file does not existtfiles\.\./s%s==%st placeholdersIt looks like a path.t=c3@s|]}|ˆkVqdS(N((R:top(R?(s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pys ss,= is not a valid operator. Did you mean == ?sInvalid requirement: '%s' %sRHRMR[RWR^RAR4N((*RJR8RtsplittstripR0RRBR2RCRDR6tisdirtseptaltsepRaR%RRRtisfiletloggertwarningtschemeR.tsearchRKtis_wheelR,tfilenameRetversiont egg_fragmentR tlowerR4Rtdeduce_helpful_msgtanyt operatorst tracebackt format_exc(RcReR@R[RWR^RAR8t marker_sepRMR2RHR4tptlooks_like_dirRtadd_msg((R?s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt from_line¯s„       $    $-    )  cC@sÙ|jr;t|jƒ}|jrV|d|jj7}qVn|jrP|jjnd}|jdk r‚|dt|jjƒ7}n|jrÕt |jt j ƒr¬|j}n|jj ƒ}|rÕ|d|7}qÕn|S(Ns from %ss in %ss (from %s)( R?tstrRHRKR0RPR tlocationR@R=Rt string_typest from_path(R]tsR@((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt__str__s    cC@s d|jjt|ƒ|jfS(Ns<%s object: %s editable=%r>(t __class__t__name__RˆRF(R]((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt__repr__#scC@s|jdkr'|j||ƒ|_n|jdk rŒ| rŒ|j}|jj|j|jƒ|_||jkrŒtjd|jƒqŒndS(sEnsure that if a link can be found for this, that it is found. Note that self.link may still be None - if Upgrade is False and the requirement is already installed. If require_hashes is True, don't use the wheel cache, because cached wheels, always built locally, have different hashes than the files downloaded from the index server and thus throw false hash mismatches. Furthermore, cached wheels at present have undeterministic contents due to file modification times. sUsing cached wheel link: %sN(RHR0tfind_requirementRGtgetReRutdebug(R]tfindertupgradetrequire_hashestold_link((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt populate_link's  cC@s,|jdkrdSttj|jjƒƒS(N(R?R0RRt safe_nameRe(R]((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyRe<scC@s |jjS(N(R?t specifier(R]((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyRšBscC@s:|j}t|ƒdko9tt|ƒƒjddhkS(s„Return whether I am pinned to an exact version. For example, some-package==1.2 is pinned; some-package>1.2 is not. is==s===(Rštlentnexttitertoperator(R]R((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt is_pinnedFs cC@s t|jƒS(N(R$Re(R]((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytinstalled_versionPsc@s@|sd}nˆjdk r8t‡fd†|DƒƒStSdS(Ntc3@s(|]}ˆjji|d6ƒVqdS(R;N(RMtevaluate(R:R;(R](s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pys [s(R¡(RMR0RRb(R]textras_requested((R]s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt match_markersTs   cC@st|jjdiƒƒS(s©Return whether any known-good hashes are specified as options. These activate --require-hashes mode; hashes specified as part of a URL do not. thashes(tboolRWR’(R]((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pythas_hash_options`scC@sn|jjdiƒjƒ}|r*|jn|j}|rd|jrd|j|jgƒj|jƒnt |ƒS(s§Return a hash-comparer that considers my option- and URL-based hashes to be known-good. Hashes in URLs--ones embedded in the requirements file, not ones downloaded from an index server--are almost peers with ones from flags. They satisfy --require-hashes (whether it was implicitly or explicitly activated) but do not activate it. md5 and sha224 are not allowed in flags, which should nudge people toward good algos. We always OR all hashes together, even ones from URLs. :param trust_internet: Whether to trust URL-based (#md5=...) hashes downloaded from the internet, as by populate_link() R¥( RWR’tcopyRHRIthasht setdefaultt hash_nametappendR(R]ttrust_internett good_hashesRH((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyR¥js "cC@sy|jdkrdSt|jƒ}|jrut|jtjƒrL|j}n|jjƒ}|ru|d|7}qun|S(s@Format a nice indicator to show where this "comes from" s->N(R?R0RˆR@R=RRŠR‹(R]RŒR@((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyR‹s  cC@sÃ|dk st‚|jjdk r.|jjS|jdkr]|jjƒ||_|jjS|jrx|jj ƒ}n |j}t jj |ƒs°t j d|ƒt|ƒnt jj||ƒS(NsCreating directory %s(R0R>RRR2R?tcreateRSRFReR}RBtexistsRuR“Rtjoin(R]t build_dirRe((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytbuild_locationŽs       cC@s|jdk rdS|jdk s(t‚|jjs:t‚|jjsLt‚|jj}d|j_|j|jƒ}tjj |ƒr¡t dt |ƒƒ‚nt j d|t |ƒt |ƒƒtj||ƒ||j_d|_tjjtjj|ƒƒ|_d|_dS(sMove self._temp_build_dir to self._ideal_build_dir/self.req.name For some requirements (e.g. a path to a directory), the name of the package is not available until we run egg_info, so the build_location will return a temporary directory and store the _ideal_build_dir. This is only called by self.egg_info_path to fix the temporary build directory. Ns<A package already exists in %s; please remove it to continues,Moving package %s from %s to new location %s(RER0R?R>RRR2RSR³RBR°RR RuR“tshutiltmoveRCRDRO(R]t old_locationt new_location((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt_correct_build_location©s(     !cC@sw|jrPtjjtjj|jtƒƒrPtjd|jƒt|jƒnd|_|j j ƒ|j j ƒdS(sVRemove the source files from this requirement, if they are marked for deletionsRemoving source in %sN( RERBR2R°R±RRuR“R'R0RRtcleanupR\(R]((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytremove_temporary_sourceÊs  cC@s|jdkrtSyett|jƒƒ}d|_tjt|ƒƒ|_|j rw|jrw|j|_ d|_t SWn›tj k rtStj k rtj|jjƒ}|r t|ƒrÒ||_ qtƒrt|ƒrtd|j|jfƒ‚qq||_ nXt S(sªFind an installed distribution that satisfies or conflicts with this requirement, and set self.satisfied_by or self.conflicts_with appropriately. sVWill not install to the user site because it will lack sys.path precedence to %s in %sN(R?R0RXR RˆRNRtget_distributionRPRFRQRbtDistributionNotFoundtVersionConflictReR"RR!Rt project_nameR‰(R]t use_user_sitet no_markert existing_dist((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytcheck_if_existsÕs2        cC@s|jo|jjS(N(RHRy(R]((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyRyÿscC@sGt|j|j|d|d|d|d|d|d|jd|ƒdS(Ntuserthometroottprefixt pycompileR[twarn_script_location(R-ReR?R[(R]twheeldirRÅRÄRÆRÈR¿RÇ((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyR-s cC@s+tjj|j|jr$|jjp'dƒS(NR¡(RBR2R±RERHtsubdirectory_fragment(R]((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt setup_py_dirs cC@sh|jstd|ƒ‚tjj|jdƒ}tjrdt|tj ƒrd|j t j ƒƒ}n|S(NsNo source dir for %sssetup.py( RER>RBR2R±RËRtPY2R=t text_typetencodetsystgetfilesystemencoding(R]tsetup_py((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyRÑs cC@sh|jstd|ƒ‚tjj|jdƒ}tjrdt|tj ƒrd|j t j ƒƒ}n|S(NsNo source dir for %sspyproject.toml( RER>RBR2R±RËRRÌR=RÍRÎRÏRÐ(R]tpp_toml((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytpyproject_toml$s cC@s×tjj|jƒsdSd}tj|jddƒ}tj|ƒ}WdQXd|kreddgS|d}d|krœt |j d |d d ƒƒ‚n|d}t |ƒsÓt |j d |d d ƒƒ‚n|S( sGet PEP 518 build-time requirements. Returns the list of the packages required to build the project, specified as per PEP 518 within the package. If `pyproject.toml` is not present, returns None to signify not using the same. sO{package} has a pyproject.toml file that does not comply with PEP 518: {reason}tencodingsutf-8Ns build-systemt setuptoolsRtrequirestpackagetreasons]it has a 'build-system' table but not 'build-system.requires' which is mandatory in the tables1'build-system.requires' is not a list of strings.( RBR2RtRÓR0tiotopenRtloadRtformatt_is_list_of_str(R]terror_templatetfRÒt build_systemRÖ((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytget_pep_518_info0s$       cC@sô|jst‚|jr4tjd|j|jƒntjd|j|jƒtƒ½t|j}t j d|g}|j r|dg7}n|dg}|j r®g}n.t jj|jdƒ}t|ƒddg}|j(t||d|jd td d ƒWdQXWdQX|jsŽtt|jƒd ƒtƒrFd }nd}tdj|jƒd||jƒd gƒƒ|_|jƒnbt|jƒdƒ}t|jjƒ|krðtjd|j|j||jƒt|ƒ|_ndS(Ns2Running setup.py (path:%s) egg_info for package %ss7Running setup.py (path:%s) egg_info for package from %ss-cs --no-user-cfgtegg_infos pip-egg-infos --egg-basetcwdt show_stdoutt command_descspython setup.py egg_infoR s==s===R¡tNamesuRunning setup.py (path:%s) egg_info for package %s produced metadata for project name %s. Fix your #egg=%s fragments.(RER>ReRuR“RÑRHRR(RÏt executableR[RFRBR2R±RËR#R\RRXR?R=t parse_versiontpkg_infoR R R¸R Rv(R]tscripttbase_cmdt egg_info_cmdtegg_base_optiont egg_info_dirRnt metadata_name((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt run_egg_info[sR                cC@sy|jdk r5|jj|ƒs%dS|jj|ƒS|jsDt‚|j|ƒ}tjj |ƒsidSt |ƒ}|S(N( RPR0t has_metadatat get_metadataRER>t egg_info_pathRBR2R°R&(R]Rztdata((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt egg_info_data–s c C@s |jdkr |jr$|j}ntjj|jdƒ}tj|ƒ}|jr¤g}xtj |ƒD] \}}}x-t j D]"}||krƒ|j |ƒqƒqƒWxšt |ƒD]Œ}tjjtjj||ddƒƒs tjjtjj||ddƒƒr|j |ƒq¶|dks2|dkr¶|j |ƒq¶q¶W|jg|D]}tjj||ƒ^qSƒqjWg|D]}|jdƒr€|^q€}n|sÃtd ||fƒ‚nt|ƒd krë|jd d „ƒntjj||d ƒ|_ntjj|j|ƒS(Ns pip-egg-infotbintpythontScriptss Python.exettestttestss .egg-infos+Files/directories (from %s) not found in %sitkeycS@s8|jtjjƒtjjr3|jtjjƒp6dS(Ni(tcountRBR2RrRs(tx((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytÐsi(ROR0RFRERBR2R±RËtlistdirtwalkR+tdirnamestremovetlisttlexistsR°textendtendswithRR›tsort( R]Rztbaset filenamesRÅtdirstfilestdirRß((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyRó¢s@        *+  cC@s]tƒ}|jdƒ}|s@tjdt|jdƒƒƒn|j|pOdƒ|jƒS(NsPKG-INFOsNo PKG-INFO file found in %sR¡(RRõRuRvR Rótfeedtclose(R]R„Rô((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyRéÖs s \[(.*?)\]cC@s‰|jdƒjtjjƒ}tjj|ƒ}tj||ƒ}tjjtjj |ƒƒd}tj tjj|ƒd|d|ƒS(sAReturn a pkg_resources.Distribution built from self.egg_info_pathR¡iR¾tmetadata( RótrstripRBR2RrtdirnameRt PathMetadatatsplitexttbasenamet Distribution(R]Râtbase_dirRt dist_name((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytget_distãs"cC@sv|jst‚|jƒd}|jjrS||jjkrStjd||ƒntjdt|jƒ||ƒdS(NR{s'Requested %s, but installing version %ss;Source in %s has version %s, which satisfies requirement %s( RER>RéR?RšRuRvR“R (R]R{((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytassert_source_matches_versionïs  cC@s+|jdkr$|j|ƒ|_n|jS(sAEnsure that a source_dir is set. This will create a temporary build dir if the name of the requirement isn't known yet. :param parent_dir: The ideal pip parent_dir for the source_dir. Generally src_dir for editables and build_dir for sdists. :return: self.source_dir N(RER0R³(R]t parent_dir((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytensure_has_source_dirs cC@sÔtjd|jƒ|jr2t|ƒdg}n|r]dj|ƒg}t|ƒ|}ntƒ_|jOtt j dt |j gt|ƒddgt|ƒd|j dtƒWdQXWdQXt|_dS( NsRunning setup.py develop for %ss --no-user-cfgs --prefix={}s-ctdevelops --no-depsRãRä(RutinfoReR[RRÜRR\RRÏRçR(RÑRËRXRbRU(R]tinstall_optionstglobal_optionsRÆt prefix_param((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytinstall_editables   *  cC@s|js tjd|jƒdS|js/t‚|js>t‚|jjdkrTdSd|jjks|td|jjƒ‚|js‰dS|jjj ddƒ\}}t j |ƒ}|rú||jjƒ}|rç|j |jƒq|j |jƒndstd|j|fƒ‚dS(Ns>Cannot update repository at %s; repository location is unknownRkt+s bad url: %riis+Unexpected version control type (in %s): %s(RHRuR“RERFR>RwRKRTRoR+t get_backendtobtaintexport(R]R$tvc_typeRKtbackendt vcs_backend((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytupdate_editable.s,  (  cC@s[|j|ƒs&tjd|jƒdS|jp5|j}tj|ƒ}|j||ƒ|S(s¥ Uninstall the distribution currently satisfying this requirement. Prompts before removing or modifying files unless ``auto_confirm`` is True. Refuses to delete or modify files outside of ``sys.prefix`` - thus uninstallation within a virtual environment can only modify that virtual environment, even if the virtualenv is linked to global site-packages. s#Skipping %s as it is not installed.N( RÂRuRvReRPRQRt from_distR(R]t auto_confirmtverboseR¿tdistRV((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt uninstallLscC@s_|j|tjjƒs/td||fƒ‚|t|ƒd}|jtjjdƒ}|S(Ns$name %r doesn't start with prefix %rit/(RaRBR2RrR>R›treplace(R]ReRÆ((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt_clean_zip_namecs cC@s¡|jst‚t}d|j|jƒdf}tjj||ƒ}tjj|ƒr"t dt |ƒdƒ}|dkr‡t }q"|dkr¹t j dt |ƒƒtj|ƒq"|dkrt|ƒ}t j d t |ƒt |ƒƒtj||ƒq"|dkr"tjd ƒq"n|rtj|dtjd tƒ}tjjtjj|jƒƒ}xtj|ƒD]ÿ\} } } d | kr¢| jd ƒnxl| D]d} tjj| | ƒ} |j| |ƒ} tj|jd | d ƒ}d|_|j|dƒq©Wxb| D]Z}|tkr0qntjj| |ƒ}|j||ƒ} |j ||jd | ƒqWqwW|j!ƒt j"dt |ƒƒndS(Ns %s-%s.zipR{s8The file %s exists. (i)gnore, (w)ipe, (b)ackup, (a)bort titwtbtas Deleting %ssBacking up %s to %siÿÿÿÿt allowZip64s pip-egg-infoR/iíiR¡sSaved %s(R2R3R4R5ií(#RER>RbReRéRBR2R±R°RR RXRuRvRRR´RµRÏtexittzipfiletZipFilet ZIP_DEFLATEDtnormcaseRDRËRR1tZipInfot external_attrtwritestrRtwriteRR(R]R²tcreate_archivet archive_namet archive_pathtresponset dest_filetzipR tdirpathRR RRetzipdirRz((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytarchivemsX         !     # c @s;|dk r|ng}|jr;|j||d|ƒdS|jrªtj|jƒ} tj| |jƒ|j |jdˆd|d|d|d|d|ƒt |_ dSt |ƒ|j jdgƒ}t |ƒ|j jdgƒ}|jr|d g}ntd d ƒ%} tjj| jd ƒ} |j|| ˆ||ƒ} d |jf} t| ƒJ}tƒ8|j(t| |d|jdtd|ƒWdQXWdQXWdQXtjj| ƒsÔtjd| ƒdSt |_ ‡fd†}t| ƒ]}xS|D]7}tjj|ƒ}|j dƒr||ƒ}PqqWtj!d|ƒdSWdQXg}t| ƒk}xa|D]Y}|j"ƒ}tjj#|ƒrª|tjj$7}n|j%tjj&||ƒ|ƒƒqsWWdQX|j'ƒt(|ƒtjj|dƒ}t|dƒ!}|j)dj|ƒdƒWdQXWdQXdS(NRÆRÅRÄRÈR¿RÇRRs --no-user-cfgR<trecordsinstall-record.txtsRunning setup.py install for %sRãRätspinnersRecord file %s not foundc@s4ˆdkstjj|ƒ r#|Stˆ|ƒSdS(N(R0RBR2tisabsR(R2(RÅ(s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyt prepend_rootÔss .egg-infos;Could not find .egg-info directory in install record for %ssinstalled-files.txtR3s (*R0RFR!RyRt wheel_versionREtcheck_compatibilityReR-RbRURRWR’R[R)RBR2R±tget_install_argsR*RR\RRËRXR°RuR“RÚRRRvRpRqRrR¬trelpathRR#R?(R]RRRÅRÄRÆRÈR¿RÇR{ttemp_dirtrecord_filenamet install_argstmsgRJRLRßtlinet directoryRît new_linesRztinst_files_path((RÅs</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytinstallsz                 &  cC@s tjdg}|jdƒ|jt|jƒ|t|ƒdd|g7}|dg7}|dk ry|d|g7}n|dk r˜|d|g7}n|r®|dg7}n |d g7}tƒrd tj ƒ}|d t j j tj d d ||jƒg7}n|S(Ns-us-cRYs--records#--single-version-externally-manageds--roots--prefixs --compiles --no-compileR÷s--install-headerstincludetsite(RÏRçR¬R(RÑRR0Rt sysconfigtget_python_versionRBR2R±RÆRe(R]RRRRÅRÆRÇRSt py_ver_str((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyROøs&       N(((2Rt __module__t__doc__R0RXRbR_t classmethodRgRhR‡RRR˜tpropertyReRšRŸR R¤R§R¥R‹R³R¸RºRÂRyR-RËRÑRÓRáRðRõRóRéR.tcompilet_requirements_section_reRRRR!R)R.R1RHRYRO(((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyR7Asl  :  _         ! *    + ; 4      0 Yc C@sÛddlm}|}t|ƒ\}}tjj|ƒr}tjjtjj|dƒƒsntd|ƒ‚nt |ƒ}n|j ƒj dƒr×||ƒj }|rÇ||t d|j ƒƒjfS||dfSnx;tD]3}|j ƒj d|ƒrÞd||f}PqÞqÞWd |kr4td |ƒ‚n|jd d ƒdj ƒ}tj|ƒs¦d |d jgtjD]}|jd^qvƒd} t| ƒ‚n||ƒj }|sÎtd|ƒ‚n||dfS(sParses an editable requirement into: - a requirement name - an URL - extras - editable options Accepted requirements: svn+http://blahblah@rev#egg=Foobar[baz]&subdirectory=version_subdir .[some_extra] i(R8ssetup.pys;Directory %r is not installable. File 'setup.py' not found.sfile:Rls%s:s%s+%sR"sb%s should either be a path to a local project or a VCS url beginning with svn+, git+, hg+, or bzr+isFor --editable=%s only s, s+URLs is currently supportedsZCould not detect requirement name for '%s', please specify one with #egg=your_package_nameN(RJR8R6RBR2RqR°R±RRR}RaR|R R4R0R+RoR#tbackendsRe( RdR8RKt url_no_extrasR4t package_nametversion_controlR&R't error_message((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyR`sF !    1 cC@s®d}tjj|ƒrœd}yPt|dƒ;}tt|jƒƒƒ|dd|ddd7}Wd QXWqªtk r˜tj d |d d ƒqªXn|d |7}|S(s„Returns helpful msg in case requirements file does not exist, or cannot be parsed. :params req: Requirements file path R¡s It does exist.trs The argument you provided s(%s) appears to be as" requirements file. If that is thes# case, use the '-r' flag to installs" the packages specified within it.Ns2Cannot parse '%s' as requirements filetexc_infois File '%s' does not exist.( RBR2R°RÚRœRtreadR RuR“(R?RTtfp((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyR~Ws cC@s#t|tƒo"td„|DƒƒS(Ncs@s!|]}t|tjƒVqdS(N(R=RRŠ(R:titem((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pys us(R=Rtall(tobj((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pyRÝrs(^t __future__RRÙtloggingRBR.R´RÏR\RR8tdistutils.utilRt email.parserRt pip._vendorRRRtpip._vendor.packagingRtpip._vendor.packaging.markersRt"pip._vendor.packaging.requirementsRR tpip._vendor.packaging.utilsR tpip._vendor.packaging.versionR R Rètpip._vendor.pkg_resourcesR Rt pip._internalRtpip._internal.build_envRtpip._internal.compatRtpip._internal.downloadRRRRtpip._internal.exceptionsRtpip._internal.locationsRRtpip._internal.req.req_uninstallRtpip._internal.utils.hashesRtpip._internal.utils.loggingRtpip._internal.utils.miscRRRRR R!R"R#R$R%R&R't$pip._internal.utils.setuptools_buildR(tpip._internal.utils.temp_dirR)tpip._internal.utils.uiR*tpip._internal.vcsR+tpip._internal.wheelR,R-t getLoggerRRut Specifiert _operatorstkeysR€R6tobjectR7R`R~RÝ(((s</tmp/pip-install-0xiv62/pip/pip/_internal/req/req_install.pytsX         "R ÿÿÿÖ C