HEX
Server: Apache
System: Linux insrv.serversdaddy.com 5.14.0-362.24.2.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 30 14:11:54 EDT 2024 x86_64
User: jsaha (1066)
PHP: 8.3.6
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/clcommon/__pycache__/evr_utils.cpython-37.opt-1.pyc
B

���£��@s�ddlmZddlmZmZmZmZmZdgZee	eee	d�dd�Z
eee	efed�dd	�Zeeeeeefed
�dd�Zeeeed�d
d�Z
dS)�)�absolute_import)�Union�List�AnyStr�Tuple�Optional�
serialize_evr)�intgr�returncCsLg}|}x$|dkr,t|d�\}}|�|�q
W|�dt|��|��|S)z�
    Encode int in real-numbers segment.
    See http://en.wikipedia.org/wiki/Arithmetic_coding.

    @param intgr:       int for coding in Float an segment [seg_begin, seg_end]
    @return:            list encoding segment
    r��)�divmod�append�len�reverse)r	ZlstZnumberZ	remainder�r��/builddir/build/BUILDROOT/alt-python27-cllib-3.4.1-1.el9.cloudlinux.x86_64/opt/alt/python37/lib/python3.7/site-packages/clcommon/evr_utils.py�"encode_int_to_real_numbers_segments
r)�rpm_datar
cCs�g}x�|D]z}t|t�r(|�t|��nRt|t�rN|��rN|�tt|���n,t|t�rn|�dd�|D��ntd|��|�d�q
Wd�dd�|D��S)z�
    Encode List of parts of Version or Epoch or Release in real-numbers segment.
    See http://en.wikipedia.org/wiki/Arithmetic_coding.

    @param rpm_data:    list to convert in double
    @return:            Converted string
    css|]}t|�VqdS)N)�ord)�.0Zchrrr�	<genexpr>9szevr_to_float.<locals>.<genexpr>z
ThisStrange: r�cSsg|]}d|�qS)z%02xr)r�nrrr�
<listcomp>=sz evr_to_float.<locals>.<listcomp>)	�
isinstance�int�extendr�str�isdigit�	NameErrorr�join)r�evr�elemrrr�evr_to_float*s


r$)r"r
cCs>d}t|ttf�s|g}x |D]}|tt|��d7}qW|S)aw
    Converts epoch, version and release of package to unique string.

    Ex:
    ['1', '2.4.4', '34'] -> '810100008102008104008104000081220000'
    ['0', '2.2.3', '76.el5_9.cloudlinux'] -> 80000081020081020081030000814c00656c00810500810900636c6f75646c696e75780000

    @param evr:         List from epoch, version and release
    @return:            str for given list
    rZ00)r�list�tupler$�split_segments)r"Zret�irrrr@s
)�stringr
cCs�|dkrgS|d}d}g}xht|�D]\\}}t||���sNt||���rT|}q&|||���rv|�|||��|}||}q&W||d���r�|�||d��|S)a
    Split str of epoch or version or release to numbers and strings.

    Ex:
    '76.el5_9.cloudlinux.2' -> ['76', 'el', '5', '9', 'cloudlinux', '2']

    @param string:           str of epoch or version or release
    @return:            List strings and numbers from EVR
    Nr)�	enumeraterr�isalpha�isalnumr)r)Z	prev_symbZbegin_indexZsegmentsr(Zelrrrr'Ss  r'N)Z
__future__r�typingrrrrr�__all__rrr$rr'rrrr�<module>s"