a
    (ñ»jg  ã                   @  s(  U d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z
 erfddlmZ ddlmZmZ d	ed
< zddlmZ W n ey”   ddlmZ Y n0 dddœdd„Zddddœdd„Zedk�r$e ¡  ¡ Zed  ¡ sÞJ ‚ed Zed Zejdd�Zdd„ eeƒD ƒZeeeƒZe  e!eƒ¡ dS ) zhSync Requirements - Automatically upgrade test requirements pinned
versions from pre-commit config file.é    )ÚannotationsN)ÚPath)ÚTYPE_CHECKING)Úload)Ú	Generator)ÚCLoaderÚLoaderztype[_CLoader | _Loader]r   )r   )r   Ústrz&Generator[tuple[str, str], None, None])Úpre_commit_textÚreturnc                 c  s^   t | tƒ}|d D ]F}d|vsd|vr(q|d }| dd¡d }|d  d¡}||fV  qdS )	z5Yield (name, rev) tuples from pre-commit config file.ZreposÚrepoÚrevú/é   éÿÿÿÿÚvN)Ú	load_yamlr   ÚrsplitÚremoveprefix)r
   Zpre_commit_configr   ÚurlÚnamer   © r   úCE:\soccer\ml_env\Lib\site-packages\trio/_tools/sync_requirements.pyÚyield_pre_commit_version_data   s    
r   r   zdict[str, str]Úbool)ÚrequirementsÚversion_datar   c              
   C  s&  d}| j dd� d¡}| jddd��ì}|D ]Ö}| d¡s@d|vrL| |¡ q*| dd¡\}}| ¡ }d	}	d
|v r�| d
d¡\}}	| ¡ }d|	 }	| |¡}
|
du r®| |¡ q*|› d|
› |	› �}||krö|sØd}tdƒ t|› d|› d|› d|
› �ƒ | |¡ q*W d  ƒ n1 �s0    Y  |S )zeReturn if updated requirements file.

    Update requirements file to match versions in version_data.Fúutf-8©ÚencodingTÚwú#z==r   Ú
ú;z ;Nz5Changed test requirements version to match pre-commitz -> )	Ú	read_textÚ
splitlinesÚopenÚ
startswithÚwriteÚsplitÚstripÚgetÚprint)r   r   ÚchangedZ	old_linesÚfileÚliner   ÚrestZold_versionÚextraÚversionÚnew_liner   r   r   Úupdate_requirements)   s4    


,r4   Ú__main__ÚLICENSEz.pre-commit-config.yamlztest-requirements.txtr   r   c                 C  s"   i | ]\}}|  d ¡  d¡|“qS )z-mirrorz-pre-commit)Úremovesuffix)Ú.0r   r2   r   r   r   Ú
<dictcomp>]   s   ÿr9   )"Ú__doc__Ú
__future__r   ÚsysÚpathlibr   Útypingr   Úyamlr   r   Úcollections.abcr   r   Z_CLoaderr   Z_LoaderÚ__annotations__ÚImportErrorr   r4   Ú__name__ÚcwdÚabsoluteZsource_rootÚexistsZ
pre_commitZtest_requirementsr$   r
   Zpre_commit_versionsr-   ÚexitÚintr   r   r   r   Ú<module>   s4   (
þ
