File: //opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/__pycache__/evr_utils.cpython-311.pyc
�
K�fw � � � d dl mZ d dlmZmZmZmZmZ dgZdee deee fd�Z
deee ef defd�Zd eee ee ef defd
�Zdee dee fd�Z
d
S )� )�absolute_import)�Union�List�AnyStr�Tuple�Optional�
serialize_evr�intgr�returnc �� � g }| }|dk r.t |d� � \ }}|� |� � |dk �.|� dt |� � z � � |� � � |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
�lst�number� remainders ��/builddir/build/BUILDROOT/alt-python27-cllib-3.4.8-1.el8.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/evr_utils.py�"encode_int_to_real_numbers_segmentr sx � �
�C�
�F�
�1�*�*�"�6�3�/�/��� ��
�
�9���� �1�*�*� �J�J�s�S��X�X�~�����K�K�M�M�M��J� �rpm_datac �( � g }| D ]�}t |t � � r#|� t |� � � � n�t |t � � rD|� � � r0|� t t |� � � � � � nGt |t � � r |� d� |D � � � � nt
d|z � � �|� d� � ��d� d� |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
c 3 �4 K � | ]}t |� � V � �d S )N)�ord)�.0�chs r � <genexpr>zevr_to_float.<locals>.<genexpr>9 s( � � � �.�.�2�s�2�w�w�.�.�.�.�.�.r z
ThisStrange: r � c � � g | ]}d |z ��S )z%02x� )r �ns r �
<listcomp>z evr_to_float.<locals>.<listcomp>= s � �,�,�,�1�F�Q�J�,�,�,r ) �
isinstance�int�extendr �str�isdigit� NameErrorr �join)r �evr�elems r �evr_to_floatr. * s � �
�C�� � ���d�C� � � 4��J�J�9�$�?�?�@�@�@�@�
��c�
"�
"� 4�t�|�|�~�~� 4��J�J�9�#�d�)�)�D�D�E�E�E�E�
��c�
"�
"� 4��J�J�.�.��.�.�.�.�.�.�.��O�d�2�3�3�3��
�
�1�
�
�
�
�
�7�7�,�,��,�,�,�-�-�-r r, c � � d}t | t t f� � s| g} | D ]$}|t t |� � � � dz z
}�%|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
r �00)r% �list�tupler. �split_segments)r, �ret�is r r r @ s[ � �
�C��c�D�%�=�)�)� ��e��
� 6� 6���|�N�1�-�-�.�.��5�5����Jr �stringc �� � | �g S | d }d}g }t | � � D ]�\ }}t ||z � � � � � s$t ||z � � � � � r|}�P| ||� � � � r|� | ||� � � |}| | }��| |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 )� enumerater( r) �isalpha�isalnumr )r6 � prev_symb�begin_index�segmentsr5 �els r r3 r3 S s � � �~�� ��q� �I��K��H��6�"�"� (� (���2� �y�2�~���&�&�(�(� �C� �B��,?�,?�,G�,G�,I�,I� ��I���+�a�-� �(�(�*�*� 3��O�O�F�;�q�=�1�2�2�2����;�'� � �
�k�l�l��#�#�%�%� .�����{�|�|�,�-�-�-��Or N)�
__future__r �typingr r r r r �__all__r&