✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ premium290.web-hosting.com ​🇻​♯➤ 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2025

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 63.250.38.37 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.95
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/cloudlinux/venv/lib/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, Tuple, Optional

__all__ = [
    'serialize_evr'
]


def encode_int_to_real_numbers_segment(intgr: int) -> List[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[str]) -> str:
    """
    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)
    converted_str = "".join([f"{n:02x}" for n in evr])
    return converted_str


def serialize_evr(evr: Union[List[str], Tuple[str], str]) -> str:
    """
    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[str]) -> List[str]:
    """
    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


Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
25 Jun 2026 7.01 AM
root / root
0755
__pycache__
--
23 Jun 2026 7.00 AM
root / root
0755
cpapi
--
23 Jun 2026 7.00 AM
root / root
0755
lib
--
23 Jun 2026 7.00 AM
root / root
0755
public_hooks
--
23 Jun 2026 7.00 AM
root / root
0755
__init__.py
1.373 KB
3 Jun 2026 1.38 PM
root / root
0644
clcagefs.py
10.991 KB
3 Jun 2026 1.38 PM
root / root
0644
clcaptain.py
1.956 KB
3 Jun 2026 1.38 PM
root / root
0644
clconfig.py
1.684 KB
3 Jun 2026 1.38 PM
root / root
0644
clconfpars.py
12.086 KB
3 Jun 2026 1.38 PM
root / root
0644
clcustomscript.py
1.156 KB
3 Jun 2026 1.38 PM
root / root
0644
cldebug.py
0.884 KB
3 Jun 2026 1.38 PM
root / root
0644
clemail.py
1.653 KB
3 Jun 2026 1.38 PM
root / root
0644
clexception.py
1.138 KB
3 Jun 2026 1.38 PM
root / root
0644
clfunc.py
6.468 KB
3 Jun 2026 1.38 PM
root / root
0644
clhook.py
8.661 KB
3 Jun 2026 1.38 PM
root / root
0644
cllog.py
1.453 KB
3 Jun 2026 1.38 PM
root / root
0644
cloutput.py
0.46 KB
3 Jun 2026 1.38 PM
root / root
0644
clproc.py
4.049 KB
3 Jun 2026 1.38 PM
root / root
0644
clpwd.py
7.743 KB
3 Jun 2026 1.38 PM
root / root
0644
clquota.py
1.266 KB
3 Jun 2026 1.38 PM
root / root
0644
clsec.py
0.642 KB
3 Jun 2026 1.38 PM
root / root
0644
clwpos_lib.py
16.679 KB
3 Jun 2026 1.38 PM
root / root
0644
const.py
0.271 KB
3 Jun 2026 1.38 PM
root / root
0644
evr_utils.py
3.553 KB
3 Jun 2026 1.38 PM
root / root
0644
features.py
5.01 KB
3 Jun 2026 1.38 PM
root / root
0644
group_info_reader.py
5.286 KB
3 Jun 2026 1.38 PM
root / root
0644
lock.py
1.017 KB
3 Jun 2026 1.38 PM
root / root
0644
mail_helper.py
4.45 KB
3 Jun 2026 1.38 PM
root / root
0644
mysql_lib.py
5.844 KB
3 Jun 2026 1.38 PM
root / root
0644
php_conf_reader.py
9.766 KB
3 Jun 2026 1.38 PM
root / root
0644
sysctl.py
7.609 KB
3 Jun 2026 1.38 PM
root / root
0644
ui_config.py
3.123 KB
3 Jun 2026 1.38 PM
root / root
0644
utils.py
34.085 KB
3 Jun 2026 1.38 PM
root / root
0644
utils_cmd.py
2.706 KB
3 Jun 2026 1.38 PM
root / root
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF