î
É X'  ã               @   sŠ   d  d l  Z  d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l m Z d  d l	 m
 Z
 d  d l Z Gd d „  d e ƒ Z d S)é    N)ÚInstallRequirement)Úlogger)ÚCommand)Úget_installed_distributionsc                   sR   e  Z d  Z d Z d Z d Z d Z ‡  f d d †  Z d d „  Z d d	 „  Z	 ‡  S)
ÚFreezeCommandz1Output installed packages in requirements format.Úfreezez
      %prog [options]c                sÀ   t  t |  ƒ j | | Ž  |  j j d d d d d d d d  d d	 d
 d ƒ|  j j d d d d d d d g  d d d
 d ƒ|  j j d d d d d d d d d
 d ƒ|  j j d |  j ƒ d  S)Nz-rz--requirementÚdestÚrequirementÚactionÚstoreÚdefaultÚmetavarÚfileÚhelpzVUse the order in the given requirements file and it's comments when generating output.z-fz--find-linksÚ
find_linksÚappendÚURLz<URL for finding packages, which will be added to the output.z-lz--localÚlocalÚ
store_trueFzUIf in a virtualenv that has global access, do not output globally-installed packages.r   )Úsuperr   Ú__init__Úcmd_optsÚ
add_optionÚparserÚinsert_option_group)ÚselfÚargsÚkw)Ú	__class__© ú>/home/ubuntu/projects/ifolica/build/pip/pip/commands/freeze.pyr      s,    						zFreezeCommand.__init__c             C   s   t  j ƒ  d  S)N)r   Úmove_stdout_to_stderr)r   r   r   r    Úsetup_logging-   s    zFreezeCommand.setup_loggingc             C   s²  | j  } | j p g  } | j } d } d  } | j } | rN t j | ƒ } n  g  }	 t j }
 x9 t j	 D]. } | j
 d ƒ rg |	 j | j d ƒ ƒ qg qg Wx* | D]" } d | k r  |	 j | ƒ q  q  Wx | D] } |
 j d | ƒ qÍ Wi  } x? t d | ƒ D]. } t j j | |	 d | ƒ} | | | j <qþ W| rrt | ƒ } x| D]} | j ƒ  sq| j ƒ  j d ƒ r„|
 j | ƒ qIn  | r¬| j | ƒ r¬|
 j | ƒ qIn/| j d ƒ sÊ| j d	 ƒ r2| j d ƒ rò| d
 d  … j ƒ  } n% | t d	 ƒ d  … j ƒ  j d ƒ } t j | d | j ƒ} n© | j d ƒ s¹| j d ƒ s¹| j d ƒ s¹| j d ƒ s¹| j d ƒ s¹| j d ƒ s¹| j d ƒ s¹| j d ƒ s¹| j d ƒ rÌ|
 j | ƒ qIn t j | ƒ } | j st j d | j ƒ  ƒ t j d ƒ qIn  | j | k r:t j  d | j ƒ  ƒ qIn  |
 j t! | | j ƒ ƒ | | j =qIW|
 j d ƒ n  x9 t" | j# ƒ  d d d „  ƒD] } |
 j t! | ƒ ƒ q‘Wd  S)NFzdependency_links.txtz#egg=z-f %s
Ú
local_onlyÚ	find_tagsú#z-ez
--editableé   ú=Údefault_vcsz-rz--requirementz-Zz--always-unzipz-fz-iz--extra-index-urlz--find-linksz--index-urlz>Skipping line because it's not clear what it would install: %sz9  (add #egg=PackageName to the URL to avoid this warning)z?Requirement file contains %s, but that package is not installedz:## The following requirements were added by pip --freeze:
Úkeyc             S   s   |  j  S)N)Úname)Úxr   r   r    Ú<lambda>q   s    z#FreezeCommand.run.<locals>.<lambda>)$r	   r   r   Úskip_requirements_regexÚreÚcompileÚsysÚstdoutÚpkg_resourcesÚworking_setÚhas_metadataÚextendÚget_metadata_linesr   Úwriter   ÚpipÚFrozenRequirementÚ	from_distr*   ÚopenÚstripÚ
startswithÚsearchÚlenÚlstripr   Úfrom_editabler(   Ú	from_liner   ÚnotifyÚwarnÚstrÚsortedÚvalues)r   Úoptionsr   r	   r   r#   r$   Ú
skip_matchÚ
skip_regexÚdependency_linksÚfÚdistÚlinkÚinstallationsÚreqÚreq_fÚlineÚline_reqÚinstallationr   r   r    Úrun0   sv    				"%			%zFreezeCommand.run)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r*   ÚusageÚsummaryr   r"   rU   r   r   )r   r    r      s   r   )r.   r0   r8   Úpip.reqr   Úpip.logr   Úpip.basecommandr   Úpip.utilr   r2   r   r   r   r   r    Ú<module>   s   