3
zYðiJ  ã            	   @   s–   d dl mZ 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mZ d dlmZ ejeƒZddddddd	df f	d
d„ZdS )é    )Úabsolute_importN)ÚInstallRequirement)Ú
COMMENT_RE)Úget_installed_distributions)Úpkg_resources)Úcanonicalize_name)ÚRequirementParseErrorFc	             c   s¸  |pg }d }	|rt j|ƒj}	g }
x(tjD ]}|jdƒr(|
j|jdƒƒ q(W x|D ]}d|krP|
j|ƒ qPW x|D ]}d| V  qpW i }xXt	|f |d�D ]F}yt
jj||
ƒ}W n$ tk
rÐ   tjd|jƒ w–Y nX |||j< q–W | �rvtƒ }�x€| D �]v}t|ƒ��b}�xX|D �]N}|jƒ  �sL|jƒ jdƒ�sL|	�r@|	|ƒ�sL|jd!ƒ�rr|jƒ }||k�r|j|ƒ |V  �q|jdƒ�sŠ|jdƒ�rÖ|jdƒ�r¨|dd … jƒ }n|tdƒd … jƒ jdƒ}tj||||d�}ntjtjd|ƒjƒ ||d�}|j�stjd||jƒ ƒ tjdƒ nD|j|k�r@tjd|tjd|ƒjƒ ƒ nt ||j ƒjƒ V  ||j= �qW W d Q R X qôW dV  x<t!|j"ƒ dd„ d �D ]$}t#|jƒ|k�rŒt |ƒjƒ V  �qŒW d S )"Nzdependency_links.txtz#egg=z-f %s)Ú
local_onlyÚskipÚ	user_onlyzCould not parse requirement: %sú#ú-rú--requirementú-Zú--always-unzipú-fú--find-linksú-iú--index-urlú--preú--trusted-hostú--process-dependency-linksú--extra-index-urlz-ez
--editableé   ú=)Údefault_vcsÚisolatedÚwheel_cacheÚ )r   r   zWSkipping line in requirement file [%s] because it's not clear what it would install: %sz9  (add #egg=PackageName to the URL to avoid this warning)zDRequirement file [%s] contains %s, but that package is not installedz7## The following requirements were added by pip freeze:c             S   s
   | j jƒ S )N)ÚnameÚlower)Úx© r"   ú4/tmp/pip-build-ue6tjl93/pip/pip/operations/freeze.pyÚ<lambda>‚   s    zfreeze.<locals>.<lambda>)Úkey)r   r   r   r   r   r   r   r   r   r   r   r   )$ÚreÚcompileÚsearchr   Úworking_setÚhas_metadataÚextendÚget_metadata_linesÚappendr   ÚpipÚFrozenRequirementÚ	from_distr   ÚloggerÚwarningÚproject_namer   ÚsetÚopenÚstripÚ
startswithÚrstripÚaddÚlenÚlstripr   Úfrom_editableÚ	from_liner   ÚsubÚinfoÚstrÚsortedÚvaluesr   )ÚrequirementÚ
find_linksr	   r   Ú
skip_regexr   r   r   r
   Ú
skip_matchÚdependency_linksÚdistÚlinkÚinstallationsÚreqÚemitted_optionsÚreq_file_pathÚreq_fileÚlineÚline_reqÚinstallationr"   r"   r#   Úfreeze   s     



       


rR   )Ú
__future__r   Úloggingr&   r.   Úpip.reqr   Zpip.req.req_filer   Ú	pip.utilsr   Úpip._vendorr   Úpip._vendor.packaging.utilsr   Zpip._vendor.pkg_resourcesr   Ú	getLoggerÚ__name__r1   rR   r"   r"   r"   r#   Ú<module>   s    
