o
     wi                  
   @   sb  U 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Z	e  ej
ddZeed< ee j ej
dd	dd
d7 Zej
e	rIee	g7 Zefdeeee f deeee f ddfddZdedee ddfddZdeddfddZefdeeee f ddfddZdee dededee fddZefdededeeee f ddfddZdS )    N)Sequence)pprint)Unionzrequirements.txtrequirementsz*.txtREQUIREMENT_FILES_ALLz**T)	recursivepackages	req_filesreturnc                 C   s8   t | tr| g} t |tr|g}|D ]}t||  qdS )2Remove some packages from given requirement files.N)
isinstancestr_prune_packages)r   r	   req r   a/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/lightning_utilities/cli/dependencies.pyprune_packages_in_requirements   s   

r   req_filec                    s   t | }| }W d   n1 sw   Y  t|tr |g}|D ]  fdd|D }q"t| t | d}|| W d   dS 1 sHw   Y  dS )r   Nc                    s   g | ]	}|  s|qS r   )
startswith).0lnpkgr   r   
<listcomp>'   s    z#_prune_packages.<locals>.<listcomp>w)open	readlinesr   r   r   
writelines)r   r   fplinesr   r   r   r      s   


"r   fnamec                 C   sr   t | }| dd}W d    n1 sw   Y  t | d}|| W d    d S 1 s2w   Y  d S )Nz>=z==r   )r   readreplacewrite)r    fopenr   fwr   r   r   _replace_min.   s   
"r&   c                 C   s&   t | tr| g} | D ]}t| q
dS )z-Replace the min package version by fixed one.N)r   r   r&   )r	   r    r   r   r   replace_oldest_version5   s
   

r'   old_packagenew_packagec                 C   s6   t | D ]\}}tdt| d ||| |< q| S )a	  Replace one package by another with same version in given requirement file.

    >>> _replace_package_name(["torch>=1.0 # comment", "torchvision>=0.2", "torchtext <0.3"], "torch", "pytorch")
    ['pytorch>=1.0 # comment', 'torchvision>=0.2', 'torchtext <0.3']

    ^z(?=[ <=>#]|$))	enumerateresubescape)r   r(   r)   ir   r   r   r   _replace_package_name=   s   "r0   c              	   C   s   t |tr|g}|D ]:}t|}| }W d   n1 sw   Y  t|| |}t|d}|| W d   n1 s?w   Y  q
dS )zLReplace one package by another with same version in given requirement files.Nr   )r   r   r   r   r0   r   )r(   r)   r	   r    r$   reqsr%   r   r   r   replace_package_in_requirementsI   s   


r2   )globos.pathosr,   collections.abcr   r   typingr   REQUIREMENT_ROOTpathjoinr   list__annotations__isfiler   r   r   r&   r'   r0   r2   r   r   r   r   <module>   sB   


""