PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB` REDROOM
PHP 5.6.40
Preview: evr_utils.py Size: 3.58 KB
/opt/imunify360/venv/lib64/python3.11/site-packages/clcommon/evr_utils.py

# coding=utf-8
#
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT
#
# author: Ruslan Pisarev  <rpisarev@cloudlinux.com>
# created: 25.07.13  12:36
# description: alternatives,rpm_compare: hash-string for coding EVR

# Examples of serialization you can look at tests/test_evr_utils.py

from typing import Union, List, AnyStr, Tuple, Optional

__all__ = [
    'serialize_evr'
]


def encode_int_to_real_numbers_segment(intgr: Union[int]) -> List[Union[int]]:
    """
    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
    """
    lst = []
    number = intgr
    while number > 0:
        number, remainder = divmod(number, 256)
        lst.append(remainder)
    lst.append(128 + len(lst))
    lst.reverse()
    return lst


def evr_to_float(rpm_data: List[Union[int, AnyStr]]) -> AnyStr:
    """
    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
    """
    evr = []
    for elem in rpm_data:
        if isinstance(elem, int):
            evr.extend(encode_int_to_real_numbers_segment(elem))
        elif isinstance(elem, str) and elem.isdigit():
            evr.extend(encode_int_to_real_numbers_segment(int(elem)))
        elif isinstance(elem, str):
            evr.extend(ord(ch) for ch in elem)
        else:
            raise NameError(f'ThisStrange: {elem}')
        evr.append(0)
    return "".join([f"{n:02x}" for n in evr])


def serialize_evr(evr: Union[List[AnyStr], Tuple[AnyStr], AnyStr]) -> AnyStr:
    """
    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
    """
    ret = ''
    if not isinstance(evr, (list, tuple)):
        evr = [evr]
    for i in evr:
        ret += evr_to_float(split_segments(i)) + '00'
    return ret


def split_segments(string: Optional[AnyStr]) -> List[AnyStr]:
    """
    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
    """

    if string is None:
        return []
    prev_symb = string[0]
    begin_index = 0
    segments = []
    for i, el in enumerate(string):
        # Continue loop if a type of current symbol is equal to a type of previous symbol
        # Ex: In string 'el7' symbols 'e' and 'l' have the same type (alphabetic) and
        # we should take the part of string 'el' as whole
        if str(prev_symb + el).isdigit() or str(prev_symb + el).isalpha():
            prev_symb = el
            continue
        # skip segement if it is't alpha/numeric
        if string[begin_index:i].isalnum():
            segments.append(string[begin_index:i])
        begin_index = i
        prev_symb = string[begin_index]
    # skip end of a string if it isn't alpha/numeric
    if string[begin_index:].isalnum():
        segments.append(string[begin_index:])
    return segments

Directory Contents

Dirs: 4 × Files: 30

Name Size Perms Modified Actions
cpapi DIR
- drwxr-xr-x 2025-08-04 23:01:19
Edit Download
lib DIR
- drwxr-xr-x 2025-08-04 23:01:19
Edit Download
- drwxr-xr-x 2025-08-04 23:01:19
Edit Download
- drwxr-xr-x 2025-08-04 23:01:35
Edit Download
10.01 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
1.96 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
1.68 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
10.13 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
1.16 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
905 B lrw-r--r-- 2025-07-04 13:31:01
Edit Download
1.65 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
1.14 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
6.47 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
3.86 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
1.45 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
471 B lrw-r--r-- 2025-07-04 13:31:01
Edit Download
4.05 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
7.74 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
1.27 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
657 B lrw-r--r-- 2025-07-04 13:31:01
Edit Download
15.40 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
277 B lrw-r--r-- 2025-07-04 13:31:01
Edit Download
3.58 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
5.04 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
5.29 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
1.02 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
4.45 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
5.84 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
9.77 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
7.61 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
3.12 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
30.28 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
2.71 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download
1.37 KB lrw-r--r-- 2025-07-04 13:31:01
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).
© 2026 REDROOM — Secure File Manager. All rights reserved. Built with ❤️ & Red Dark UI