o
    Ž:el  ã                   @  s&   d Z ddlmZ ddlZd
dd	„ZdS )z2Convert Cargo versions into Meson compatible ones.é    )ÚannotationsNÚ	cargo_verÚstrÚreturnúT.List[str]c           
   	   C  sl  |   ¡ } dd„ |  d¡D ƒ}g }|D ] }| d¡r | |¡ q| d¡r}|dd…  d¡}| d	d |¡› ¡ t|ƒd
krT| d|d › dt|d ƒd › d¡ qt|ƒdkrn| d|d › dt|d ƒd › ¡ q| dt|d ƒd › ¡ qd|v rÆ| d¡dd… }|r—| d	d |¡› ¡ t|ƒdkr±| d|d › dt|d ƒd › ¡ qt|ƒdkrÅ| dt|d ƒd › ¡ q| d¡rÑ|dd… }| d¡}g }g }d}|D ](}	|	dkrù|sù| |	¡ | tt|	ƒd ƒ¡ d}qÞ| |	¡ |s| d¡ qÞt|ƒdhkr| d 	d |¡¡¡ t|ƒdhkr.| d 	d |¡¡¡ q| d¡ q|S )zÁConvert a Cargo compatible version into a Meson compatible one.

    :param cargo_ver: The version, as Cargo specifies
    :return: A list of version constraints, as Meson understands them
    c                 S  s   g | ]}|  ¡ ‘qS © )Ústrip)Ú.0Úcr   r   ú=/usr/lib/python3.10/site-packages/mesonbuild/cargo/version.pyÚ
<listcomp>   s    zconvert.<locals>.<listcomp>ú,)ú>ú<ú=ú~é   NÚ.z>= é   z< r   z.0é   Ú*éÿÿÿÿú^FÚ0Tz>= {}z< {}z< 1)
r   ÚsplitÚ
startswithÚappendÚjoinÚlenÚintr   ÚsetÚformat)
r   Z
cargo_versÚoutÚverÚvÚversZmin_Zmax_ZbumpedZv_r   r   r   Úconvert
   sX   


*((€




€r&   )r   r   r   r   )Ú__doc__Ú
__future__r   ÚtypingÚTr&   r   r   r   r   Ú<module>   s   