0{Y$@shddlZddlZddlZddlZddlmZmZmZddlm Z ddl m Z m Z ddl mZmZmZmZddlmZmZddlmZmZmZddlZejZdZd d Zd d Zd dZdddZ ddZ!Gddde"Z#e$dkrde Z%e%rdej%e%qdndS)N)InstallationError CommandErrorPipError)logger)get_installed_distributionsget_prog)git mercurial subversionbazaar)ConfigOptionParserUpdatingDefaultsHelpFormatter)commands get_summariesget_similar_commandsz1.5.6c sdtjkrdStjdjdd}ttjd}y||dWntk rodYnXddtDg}y!fd d|Dd }Wntk rd}YnXt}|ri|d krtjdn|d krj d  rg}j }xUt ddD]D}|j j |r1|j |ddkr1|j |j q1q1W|rx|D]}t|qWtjdqnt|}|dd|jjD7}dd|d|dDfdd|D}fdd|D}x|D]1} | d } | drX| d7} nt| q1Wnj d sj drdd|jD} | j |jdd| D} dd| D7ntdjfddDtjddS)zCommand and option completion for the main option parser (and options) and its subcommands (and options). Enable by sourcing one of the completion shell scripts (bash or zsh). PIP_AUTO_COMPLETEN COMP_WORDS COMP_CWORDcSsg|]\}}|qSr).0cmdsummaryrr'/tmp/pip-ok8sy_ze-build/pip/__init__.py (s z autocomplete..cs"g|]}|kr|qSrr)rw) subcommandsrrr,s rhelp uninstall- local_onlyTcSs7g|]-}|jtjkr|j|jfqSr)roptparse SUPPRESS_HELPget_opt_stringnargs)roptrrrrDs cSs#g|]}|jddqS)=r)split)rxrrrrIs cs.g|]$\}}|kr||fqSrr)rr)v) prev_optsrrrJs cs1g|]'\}}|jr||fqSr) startswith)rkr*)currentrrrLs r'z--cSsg|]}|jqSr) option_list)rirrrrVs css"|]}|D] }|Vq qdS)Nr)ritorrr Xszautocomplete..cSs.g|]$}|jtjkr|jqSr)rr"r#r$)rr0rrrrZs  cs%g|]}|jr|qSr)r,)rr))r.rrr]s )osenvironr(int IndexErrorrcreate_main_parsersysexitr,lowerrkeyappendprintrparseroption_list_all option_groupsr/join) cwordscwordoptionssubcommand_namer@ installedlcdist subcommandoption opt_labeloptsr)r.r+rr autocompletes\  !     +   !    &rOcCsidd6dd6td6dd6td6}t|}|jtjjtjjtjjt}d t |t j dd f|_ t j t j|}|j|d |_t}d gd d|D}dj||_|S)Nz %prog [options]usageFadd_help_option formatterglobalnameprogzpip %s from %s (python %s)TrcSs&g|]\}}d||fqS)z%-27s %sr)rr0jrrrrys z&create_main_parser.. )r rr disable_interspersed_argsr5pathdirnameabspath__file__ __version__r:version cmdoptionsmake_option_group general_groupadd_option_groupmainrrC description) parser_kwr@ pip_pkg_dirgen_optscommand_summariesrerrrr9as$    *    r9cCs2t}|j|\}}|jrZtjj|jtjjtjtjn| s|ddkrt |dkr|j tjn|dj }|dd}|j |dj |t kr(t|}d|g}|r|jd|ntdj|n||fS)Nrrrzunknown command "%s"zmaybe you meant "%s"z - )r9 parse_argsr_r:stdoutwriter5linesepr;len print_helpr<removerrr>rrC)argsr@general_options args_elsecmd_namecmd_argsguessmsgrrr parseoptss&   )     rxc Cs|dkr"tjdd}ntyt|\}}WnVtk rtjd}tjjd|tjjtj tj dYnXt |}|j |S)Nrz ERROR: %s) r:argvrOrxrexc_infostderrrlr5rmr;rrd) initial_argsrtruecommandrrrrds   rdc Cs`dg}yddl}Wntk r:|jdYnXtddg|tjddS)zI Bootstrapping function to be called from install-pip.py script. piprN setuptoolsinstallz --upgrader)r ImportErrorr>rdr:ry)pkgsrrrr bootstraps   rc@speZdZfddZejdZejdZedddZ e dd Z d d Z d S) FrozenRequirementcCs(||_||_||_||_dS)N)rTreqeditablecomments)selfrTrrrrrr__init__s   zFrozenRequirement.__init__z-r(\d+)$z-(20\d\d\d\d\d\d)$Fc Cs6tjjtjj|j}g}ddlm}m}|j|rd}y||||} Wn9t k rt j d} t j d| d} YnX| dkr t j d||jd|j} d}q n:d}|j} | j} t| dkr'| ddd ks-t| dd} |jj| } |jj| }| sk|r |jd }|r|j||}n|st j d | |jd q |jd | | r| jd}nd|jd}d}d|||j|f} n||j| ||S)Nr)vcsget_src_requirementTrzYError when trying to get requirement for VCS system %s, falling back to uneditable formatz-Could not determine repository location of %sz-## !! Could not determine repository locationFz==svnz(Warning: cannot find svn location for %szF## FIXME: could not find svn URL in dependency_links for this package:z3# Installing as editable to satisfy requirement %s:z{%s}z %s@%s#egg=%s)r5rZnormcaser\locationpip.vcsrrget_backend_namerr:rzrwarnr>as_requirementspecsrnAssertionError_rev_research_date_re get_backend get_locationgroupegg_name project_name)clsrJdependency_links find_tagsrrrrrrexrr_ ver_match date_match svn_backend svn_locationrevrrr from_distsN!        ,   zFrozenRequirement.from_distcCsA|j}tjd|}|r=|d|j}n|S)Nz -py\d\.\d$)rrerstart)rJrTmatchrrrrs  zFrozenRequirement.egg_namecCsF|j}|jrd|}ndjt|jt|gdS)Nz-e %srX)rrrClistrstr)rrrrr__str__ s   zFrozenRequirement.__str__N) __name__ __module__ __qualname__rrcompilerr classmethodr staticmethodrrrrrrrs ,r__main__)&r5r"r:rpip.exceptionsrrrpip.logrpip.utilrrrrr r r pip.baseparserr r pip.commandsrrrZpip.cmdoptionsrr`r^rOr9rxrdrobjectrrr;rrrrs,    "   I  * G