3 ]i, @sddlmZddlZddlZddlZyddlmZWn ek rTddlmZYnXddl m Z ddl m Z ddl mZddlmZdd lmZmZdd lmZdd lmZmZejeZGd d d e ZddZddZddZdS))absolute_importN) zip_longest) izip_longest)six)Command) CommandError) PackageFinder)get_installed_distributionsdist_is_editable)RemovedInPip10Warning)make_option_group index_groupcs|eZdZdZdZdZdZfddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZZS) ListCommandzt List installed packages, including editables. Packages are listed in a case-insensitive sorted order. listz %prog [options]zList installed packages.cstt|j|||j}|jdddddd|jddddd d|jd d ddd d|jd ddddd|jjdddddd|jddddd|jdddd$dd|jddd d!d"tt|j}|jjd#||jjd#|dS)%Nz-oz --outdated store_trueFzList outdated packages)actiondefaulthelpz-uz --uptodatezList uptodate packagesz-ez --editablezList editable projects.z-lz--localzSIf in a virtualenv that has global access, do not list globally-installed packages.z--useruserz,Only output packages installed in user-site.)destrrrz--prezYInclude pre-release and development versions. By default, pip only finds stable versions.z--formatstore list_formatlegacycolumnsfreezejsonzJSelect the output format among: legacy (default), columns, freeze or json.)rrchoicesrz--not-required not_requiredz>List packages that are not dependencies of installed packages.)rrrr)rrrr) superr__init__cmd_opts add_optionr r parserinsert_option_group)selfargskwr index_opts) __class__0/tmp/pip-build-8jg9gmni/pip/pip/commands/list.pyr#s^ zListCommand.__init__cCst|j||j|j|j|dS)zK Create a package finder appropriate to this list command. ) find_links index_urlsallow_all_prereleases trusted_hostsprocess_dependency_linkssession)rr+prer.r/)r$optionsr,r0r)r)r*_build_package_findercsz!ListCommand._build_package_findercCs|jrtjdt|jr$tjdt|jr6tjdt|jdkrLtjdt|jr`|jr`t dt |j |j |j d}|jr|j||}n|jr|j||}|jr|j||}|j||dS)Nz--allow-external has been deprecated and will be removed in the future. Due to changes in the repository protocol, it no longer has any effect.z--allow-all-external has been deprecated and will be removed in the future. Due to changes in the repository protocol, it no longer has any effect.z--allow-unverified has been deprecated and will be removed in the future. Due to changes in the repository protocol, it no longer has any effect.zThe default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.z5Options --outdated and --uptodate cannot be combined.) local_only user_onlyeditables_only)allow_externalwarningswarnr allow_all_externalallow_unverifiedroutdateduptodaterr localreditable get_outdated get_uptodaterget_not_requiredoutput_package_listing)r$r2r%packagesr)r)r*runps<     zListCommand.runcCsdd|j||DS)NcSsg|]}|j|jkr|qSr))latest_versionparsed_version).0distr)r)r* sz,ListCommand.get_outdated..)iter_packages_latest_infos)r$rDr2r)r)r*r@szListCommand.get_outdatedcCsdd|j||DS)NcSsg|]}|j|jkr|qSr))rFrG)rHrIr)r)r*rJsz,ListCommand.get_uptodate..)rK)r$rDr2r)r)r*rAszListCommand.get_uptodatecsBtx$|D]}jdd|jDq Wtfdd|DS)Ncss|] }|jVqdS)N)key)rH requirementr)r)r* sz/ListCommand.get_not_required..c3s|]}|jkr|VqdS)N)rL)rHpkg)dep_keysr)r*rNs)setupdaterequires)r$rDr2rIr))rPr*rBs zListCommand.get_not_requiredc cs|jg|j}|jr*tjddj|g}g}x&|D]}|jdr4|j|jdq4W|j |}|j |||}|j |xn|D]f}d}|j |j } |jsdd| D} | sqt| |jd} | j} | jjrd}nd }| |_||_|VqWWdQRXdS) NzIgnoring indexes: %s,zdependency_links.txtunknowncSsg|]}|jjs|qSr))version is_prerelease)rH candidater)r)r*rJsz:ListCommand.iter_packages_latest_infos..)rLwheelsdist) index_urlextra_index_urlsno_indexloggerdebugjoin has_metadataextendget_metadata_lines_build_sessionr3add_dependency_linksfind_all_candidatesrLr1max_candidate_sort_keyrVlocationis_wheelrFlatest_filetype) r$rDr2r,dependency_linksrIr0findertypall_candidatesbest_candidateremote_versionr)r)r*rKs8       z&ListCommand.iter_packages_latest_infoscCs0t|rd|j|j|jfSd|j|jfSdS)Nz %s (%s, %s)z%s (%s))r project_namerVri)r$rIr)r)r* output_legacys  zListCommand.output_legacycCsd|j||j|jfS)Nz%s - Latest: %s [%s])rsrFrk)r$rIr)r)r*output_legacy_latestsz ListCommand.output_legacy_latestcCst|ddd}|jdkr:|r:t||\}}|j||n~|jdkrfxr|D]}tjd|j|jqJWnR|jdkrtjt||n6x4|D],}|j rtj|j |qtj|j |qWdS)NcSs |jjS)N)rrlower)rIr)r)r*sz4ListCommand.output_package_listing..)rLrrz%s==%sr) sortedrformat_for_columnsoutput_package_listing_columnsr^inforrrVformat_for_jsonr<rtrs)r$rDr2dataheaderrIr)r)r*rCs     z"ListCommand.output_package_listingcCsht|dkr|jd|t|\}}t|dkrL|jddjtdd|x|D]}tj|qRWdS)Nr cSsd|S)N-r))xr)r)r*rv sz.)leninserttabulater`mapr^rz)r$r|r} pkg_stringssizesvalr)r)r*rys     z*ListCommand.output_package_listing_columns)__name__ __module__ __qualname____doc__nameusagesummaryrr3rEr@rArBrKrsrtrCry __classcell__r)r))r(r*rs @ 6' rcCst|dkstdgtdd|D}x |D]}ddt||D}q.Wg}x0|D](}djddt||D}|j|qTW||fS)Nrcss|]}t|VqdS)N)r)rHrr)r)r*rNsztabulate..cSs"g|]\}}t|tt|qSr))rgrstr)rHscr)r)r*rJsztabulate..rcSs*g|]"\}}|dk r"t|j|ndqS)N)rljust)rHrrr)r)r*rJs)rAssertionErrorrgrr`append)valsrrowresultdisplayr)r)r*rs   rcCs|j}|rddddg}nddg}g}tdd|Dr@|jdxR|D]J}|j|jg}|rr|j|j|j|jt|r|j|j|j|qFW||fS)z_ Convert the package data into something usable by output_package_listing_columns. PackageVersionLatestTypecss|]}t|VqdS)N)r )rHrr)r)r*rN2sz%format_for_columns..Location) r<anyrrrrVrFrkr ri)pkgsr2running_outdatedr}r|projrr)r)r*rx%s       rxcCsZg}xJ|D]B}|jtj|jd}|jrBtj|j|d<|j|d<|j|q Wtj |S)N)rrVrFrk) rrr text_typerVr<rFrkrrdumps)rDr2r|rIrzr)r)r*r{Fs  r{) __future__rrloggingr8 itertoolsr ImportErrorr pip._vendorrpip.basecommandrpip.exceptionsr pip.indexr pip.utilsr r Zpip.utils.deprecationr Zpip.cmdoptionsr r getLoggerrr^rrrxr{r)r)r)r*s(       |!