# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.5.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.

import typing
# Import the low-level C/C++ module
if getattr(globals().get("__spec__"), "parent", None) or __package__ or "." in __name__:
    from . import _common
else:
    import _common

import builtins as __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


import weakref

class SwigPyIterator(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _common.delete_SwigPyIterator

    def value(self):
        return _common.SwigPyIterator_value(self)

    def incr(self, n=1):
        return _common.SwigPyIterator_incr(self, n)

    def decr(self, n=1):
        return _common.SwigPyIterator_decr(self, n)

    def distance(self, x):
        return _common.SwigPyIterator_distance(self, x)

    def equal(self, x):
        return _common.SwigPyIterator_equal(self, x)

    def copy(self):
        return _common.SwigPyIterator_copy(self)

    def __next__(self):
        return _common.SwigPyIterator___next__(self)

    def previous(self):
        return _common.SwigPyIterator_previous(self)

    def advance(self, n):
        return _common.SwigPyIterator_advance(self, n)

    def __eq__(self, x):
        return _common.SwigPyIterator___eq__(self, x)

    def __ne__(self, x):
        return _common.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n):
        return _common.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n):
        return _common.SwigPyIterator___isub__(self, n)

    def __add__(self, n):
        return _common.SwigPyIterator___add__(self, n)

    def __sub__(self, *args):
        return _common.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register SwigPyIterator in _common:
_common.SwigPyIterator_swigregister(SwigPyIterator)
from . import exception
class Message(object):
    r"""
    A base class for passing a message whose formatting, including localization
    (translation, argument format) is done at the destination.
    Usage: The user creates a child of this class and implements the `format` method.
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        if self.__class__ == Message:
            _self = None
        else:
            _self = self
        _common.Message_swiginit(self, _common.new_Message(_self, *args))
    __swig_destroy__ = _common.delete_Message

    def format(self, translate, locale=None):
        r"""
        Formats the contained message according to the specified arguments and returns the result as a string.

        :type translate: boolean
        :param translate:  If `true`, it will attempt to translate the message to the requested locale.
        :type locale: libdnf5::utils::Locale, optional
        :param locale:     requested locale for translation and argument formatting, nullptr = use global/thread locale
        :rtype: string
        :return: A string object holding the formatted result.
        """
        return _common.Message_format(self, translate, locale)
    def __disown__(self):
        self.this.disown()
        _common.disown_Message(self)
        return weakref.proxy(self)

# Register Message in _common:
_common.Message_swigregister(Message)
class EmptyMessage(Message):
    r"""Class for passing an empty message."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _common.EmptyMessage_swiginit(self, _common.new_EmptyMessage(*args))
    __swig_destroy__ = _common.delete_EmptyMessage

    def format(self, translate, locale=None):
        r"""
        Returns empty string

        :type translate: boolean
        :param translate:  ignored
        :type locale: libdnf5::utils::Locale, optional
        :param locale:     ignored
        :rtype: string
        :return: empty string object
        """
        return _common.EmptyMessage_format(self, translate, locale)

# Register EmptyMessage in _common:
_common.EmptyMessage_swigregister(EmptyMessage)
class VectorMessagePtr(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def iterator(self):
        return _common.VectorMessagePtr_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __bool__(self):
        return _common.VectorMessagePtr___bool__(self)

    def __len__(self):
        return _common.VectorMessagePtr___len__(self)

    def __delitem__(self, *args):
        return _common.VectorMessagePtr___delitem__(self, *args)

    def __getitem__(self, *args):
        return _common.VectorMessagePtr___getitem__(self, *args)

    def __setitem__(self, *args):
        return _common.VectorMessagePtr___setitem__(self, *args)

    def pop(self):
        return _common.VectorMessagePtr_pop(self)

    def append(self, x):
        return _common.VectorMessagePtr_append(self, x)

    def empty(self):
        return _common.VectorMessagePtr_empty(self)

    def size(self):
        return _common.VectorMessagePtr_size(self)

    def swap(self, v):
        return _common.VectorMessagePtr_swap(self, v)

    def begin(self):
        return _common.VectorMessagePtr_begin(self)

    def end(self):
        return _common.VectorMessagePtr_end(self)

    def rbegin(self):
        return _common.VectorMessagePtr_rbegin(self)

    def rend(self):
        return _common.VectorMessagePtr_rend(self)

    def clear(self):
        return _common.VectorMessagePtr_clear(self)

    def get_allocator(self):
        return _common.VectorMessagePtr_get_allocator(self)

    def pop_back(self):
        return _common.VectorMessagePtr_pop_back(self)

    def erase(self, *args):
        return _common.VectorMessagePtr_erase(self, *args)

    def __init__(self, *args):
        _common.VectorMessagePtr_swiginit(self, _common.new_VectorMessagePtr(*args))

    def push_back(self, x):
        return _common.VectorMessagePtr_push_back(self, x)

    def front(self):
        return _common.VectorMessagePtr_front(self)

    def back(self):
        return _common.VectorMessagePtr_back(self)

    def assign(self, n, x):
        return _common.VectorMessagePtr_assign(self, n, x)

    def resize(self, *args):
        return _common.VectorMessagePtr_resize(self, *args)

    def insert(self, *args):
        return _common.VectorMessagePtr_insert(self, *args)

    def reserve(self, n):
        return _common.VectorMessagePtr_reserve(self, n)

    def capacity(self):
        return _common.VectorMessagePtr_capacity(self)
    __swig_destroy__ = _common.delete_VectorMessagePtr

# Register VectorMessagePtr in _common:
_common.VectorMessagePtr_swigregister(VectorMessagePtr)
class VectorString(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def iterator(self):
        return _common.VectorString_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __bool__(self):
        return _common.VectorString___bool__(self)

    def __len__(self):
        return _common.VectorString___len__(self)

    def __delitem__(self, *args):
        return _common.VectorString___delitem__(self, *args)

    def __getitem__(self, *args):
        return _common.VectorString___getitem__(self, *args)

    def __setitem__(self, *args):
        return _common.VectorString___setitem__(self, *args)

    def pop(self):
        return _common.VectorString_pop(self)

    def append(self, x):
        return _common.VectorString_append(self, x)

    def empty(self):
        return _common.VectorString_empty(self)

    def size(self):
        return _common.VectorString_size(self)

    def swap(self, v):
        return _common.VectorString_swap(self, v)

    def begin(self):
        return _common.VectorString_begin(self)

    def end(self):
        return _common.VectorString_end(self)

    def rbegin(self):
        return _common.VectorString_rbegin(self)

    def rend(self):
        return _common.VectorString_rend(self)

    def clear(self):
        return _common.VectorString_clear(self)

    def get_allocator(self):
        return _common.VectorString_get_allocator(self)

    def pop_back(self):
        return _common.VectorString_pop_back(self)

    def erase(self, *args):
        return _common.VectorString_erase(self, *args)

    def __init__(self, *args):
        _common.VectorString_swiginit(self, _common.new_VectorString(*args))

    def push_back(self, x):
        return _common.VectorString_push_back(self, x)

    def front(self):
        return _common.VectorString_front(self)

    def back(self):
        return _common.VectorString_back(self)

    def assign(self, n, x):
        return _common.VectorString_assign(self, n, x)

    def insert(self, *args):
        return _common.VectorString_insert(self, *args)

    def reserve(self, n):
        return _common.VectorString_reserve(self, n)

    def capacity(self):
        return _common.VectorString_capacity(self)
    __swig_destroy__ = _common.delete_VectorString

# Register VectorString in _common:
_common.VectorString_swigregister(VectorString)
class SetString(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def iterator(self):
        return _common.SetString_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __bool__(self):
        return _common.SetString___bool__(self)

    def __len__(self):
        return _common.SetString___len__(self)

    def append(self, x):
        return _common.SetString_append(self, x)

    def __contains__(self, x):
        return _common.SetString___contains__(self, x)

    def __getitem__(self, i):
        return _common.SetString___getitem__(self, i)

    def add(self, x):
        return _common.SetString_add(self, x)

    def discard(self, x):
        return _common.SetString_discard(self, x)

    def __init__(self, *args):
        _common.SetString_swiginit(self, _common.new_SetString(*args))

    def empty(self):
        return _common.SetString_empty(self)

    def size(self):
        return _common.SetString_size(self)

    def clear(self):
        return _common.SetString_clear(self)

    def swap(self, v):
        return _common.SetString_swap(self, v)

    def count(self, x):
        return _common.SetString_count(self, x)

    def begin(self):
        return _common.SetString_begin(self)

    def end(self):
        return _common.SetString_end(self)

    def rbegin(self):
        return _common.SetString_rbegin(self)

    def rend(self):
        return _common.SetString_rend(self)

    def erase(self, *args):
        return _common.SetString_erase(self, *args)

    def find(self, x):
        return _common.SetString_find(self, x)

    def lower_bound(self, x):
        return _common.SetString_lower_bound(self, x)

    def upper_bound(self, x):
        return _common.SetString_upper_bound(self, x)

    def equal_range(self, x):
        return _common.SetString_equal_range(self, x)

    def insert(self, __x):
        return _common.SetString_insert(self, __x)
    __swig_destroy__ = _common.delete_SetString

# Register SetString in _common:
_common.SetString_swigregister(SetString)
class PairStringString(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _common.PairStringString_swiginit(self, _common.new_PairStringString(*args))
    first = property(_common.PairStringString_first_get, _common.PairStringString_first_set)
    second = property(_common.PairStringString_second_get, _common.PairStringString_second_set)
    def __len__(self):
        return 2
    def __repr__(self):
        return str((self.first, self.second))
    def __getitem__(self, index): 
        if not (index % 2):
            return self.first
        else:
            return self.second
    def __setitem__(self, index, val):
        if not (index % 2):
            self.first = val
        else:
            self.second = val
    __swig_destroy__ = _common.delete_PairStringString

# Register PairStringString in _common:
_common.PairStringString_swigregister(PairStringString)
class VectorPairStringString(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def iterator(self):
        return _common.VectorPairStringString_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __bool__(self):
        return _common.VectorPairStringString___bool__(self)

    def __len__(self):
        return _common.VectorPairStringString___len__(self)

    def __delitem__(self, *args):
        return _common.VectorPairStringString___delitem__(self, *args)

    def __getitem__(self, *args):
        return _common.VectorPairStringString___getitem__(self, *args)

    def __setitem__(self, *args):
        return _common.VectorPairStringString___setitem__(self, *args)

    def pop(self):
        return _common.VectorPairStringString_pop(self)

    def append(self, x):
        return _common.VectorPairStringString_append(self, x)

    def empty(self):
        return _common.VectorPairStringString_empty(self)

    def size(self):
        return _common.VectorPairStringString_size(self)

    def swap(self, v):
        return _common.VectorPairStringString_swap(self, v)

    def begin(self):
        return _common.VectorPairStringString_begin(self)

    def end(self):
        return _common.VectorPairStringString_end(self)

    def rbegin(self):
        return _common.VectorPairStringString_rbegin(self)

    def rend(self):
        return _common.VectorPairStringString_rend(self)

    def clear(self):
        return _common.VectorPairStringString_clear(self)

    def get_allocator(self):
        return _common.VectorPairStringString_get_allocator(self)

    def pop_back(self):
        return _common.VectorPairStringString_pop_back(self)

    def erase(self, *args):
        return _common.VectorPairStringString_erase(self, *args)

    def __init__(self, *args):
        _common.VectorPairStringString_swiginit(self, _common.new_VectorPairStringString(*args))

    def push_back(self, x):
        return _common.VectorPairStringString_push_back(self, x)

    def front(self):
        return _common.VectorPairStringString_front(self)

    def back(self):
        return _common.VectorPairStringString_back(self)

    def assign(self, n, x):
        return _common.VectorPairStringString_assign(self, n, x)

    def insert(self, *args):
        return _common.VectorPairStringString_insert(self, *args)

    def reserve(self, n):
        return _common.VectorPairStringString_reserve(self, n)

    def capacity(self):
        return _common.VectorPairStringString_capacity(self)
    __swig_destroy__ = _common.delete_VectorPairStringString

# Register VectorPairStringString in _common:
_common.VectorPairStringString_swigregister(VectorPairStringString)
class MapStringString(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def iterator(self):
        return _common.MapStringString_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __bool__(self):
        return _common.MapStringString___bool__(self)

    def __len__(self):
        return _common.MapStringString___len__(self)
    def __iter__(self):
        return self.key_iterator()
    def iterkeys(self):
        return self.key_iterator()
    def itervalues(self):
        return self.value_iterator()
    def iteritems(self):
        return self.iterator()

    def __getitem__(self, key):
        return _common.MapStringString___getitem__(self, key)

    def __delitem__(self, key):
        return _common.MapStringString___delitem__(self, key)

    def has_key(self, key):
        return _common.MapStringString_has_key(self, key)

    def keys(self):
        return _common.MapStringString_keys(self)

    def values(self):
        return _common.MapStringString_values(self)

    def items(self):
        return _common.MapStringString_items(self)

    def __contains__(self, key):
        return _common.MapStringString___contains__(self, key)

    def key_iterator(self):
        return _common.MapStringString_key_iterator(self)

    def value_iterator(self):
        return _common.MapStringString_value_iterator(self)

    def __setitem__(self, *args):
        return _common.MapStringString___setitem__(self, *args)

    def asdict(self):
        return _common.MapStringString_asdict(self)

    def __init__(self, *args):
        _common.MapStringString_swiginit(self, _common.new_MapStringString(*args))

    def empty(self):
        return _common.MapStringString_empty(self)

    def size(self):
        return _common.MapStringString_size(self)

    def swap(self, v):
        return _common.MapStringString_swap(self, v)

    def begin(self):
        return _common.MapStringString_begin(self)

    def end(self):
        return _common.MapStringString_end(self)

    def rbegin(self):
        return _common.MapStringString_rbegin(self)

    def rend(self):
        return _common.MapStringString_rend(self)

    def clear(self):
        return _common.MapStringString_clear(self)

    def get_allocator(self):
        return _common.MapStringString_get_allocator(self)

    def count(self, x):
        return _common.MapStringString_count(self, x)

    def erase(self, *args):
        return _common.MapStringString_erase(self, *args)

    def find(self, x):
        return _common.MapStringString_find(self, x)

    def lower_bound(self, x):
        return _common.MapStringString_lower_bound(self, x)

    def upper_bound(self, x):
        return _common.MapStringString_upper_bound(self, x)
    __swig_destroy__ = _common.delete_MapStringString

# Register MapStringString in _common:
_common.MapStringString_swigregister(MapStringString)
class MapStringMapStringString(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def iterator(self):
        return _common.MapStringMapStringString_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __bool__(self):
        return _common.MapStringMapStringString___bool__(self)

    def __len__(self):
        return _common.MapStringMapStringString___len__(self)
    def __iter__(self):
        return self.key_iterator()
    def iterkeys(self):
        return self.key_iterator()
    def itervalues(self):
        return self.value_iterator()
    def iteritems(self):
        return self.iterator()

    def __getitem__(self, key):
        return _common.MapStringMapStringString___getitem__(self, key)

    def __delitem__(self, key):
        return _common.MapStringMapStringString___delitem__(self, key)

    def has_key(self, key):
        return _common.MapStringMapStringString_has_key(self, key)

    def keys(self):
        return _common.MapStringMapStringString_keys(self)

    def values(self):
        return _common.MapStringMapStringString_values(self)

    def items(self):
        return _common.MapStringMapStringString_items(self)

    def __contains__(self, key):
        return _common.MapStringMapStringString___contains__(self, key)

    def key_iterator(self):
        return _common.MapStringMapStringString_key_iterator(self)

    def value_iterator(self):
        return _common.MapStringMapStringString_value_iterator(self)

    def __setitem__(self, *args):
        return _common.MapStringMapStringString___setitem__(self, *args)

    def asdict(self):
        return _common.MapStringMapStringString_asdict(self)

    def __init__(self, *args):
        _common.MapStringMapStringString_swiginit(self, _common.new_MapStringMapStringString(*args))

    def empty(self):
        return _common.MapStringMapStringString_empty(self)

    def size(self):
        return _common.MapStringMapStringString_size(self)

    def swap(self, v):
        return _common.MapStringMapStringString_swap(self, v)

    def begin(self):
        return _common.MapStringMapStringString_begin(self)

    def end(self):
        return _common.MapStringMapStringString_end(self)

    def rbegin(self):
        return _common.MapStringMapStringString_rbegin(self)

    def rend(self):
        return _common.MapStringMapStringString_rend(self)

    def clear(self):
        return _common.MapStringMapStringString_clear(self)

    def get_allocator(self):
        return _common.MapStringMapStringString_get_allocator(self)

    def count(self, x):
        return _common.MapStringMapStringString_count(self, x)

    def erase(self, *args):
        return _common.MapStringMapStringString_erase(self, *args)

    def find(self, x):
        return _common.MapStringMapStringString_find(self, x)

    def lower_bound(self, x):
        return _common.MapStringMapStringString_lower_bound(self, x)

    def upper_bound(self, x):
        return _common.MapStringMapStringString_upper_bound(self, x)
    __swig_destroy__ = _common.delete_MapStringMapStringString

# Register MapStringMapStringString in _common:
_common.MapStringMapStringString_swigregister(MapStringMapStringString)
class MapStringPairStringString(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def iterator(self):
        return _common.MapStringPairStringString_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __bool__(self):
        return _common.MapStringPairStringString___bool__(self)

    def __len__(self):
        return _common.MapStringPairStringString___len__(self)
    def __iter__(self):
        return self.key_iterator()
    def iterkeys(self):
        return self.key_iterator()
    def itervalues(self):
        return self.value_iterator()
    def iteritems(self):
        return self.iterator()

    def __getitem__(self, key):
        return _common.MapStringPairStringString___getitem__(self, key)

    def __delitem__(self, key):
        return _common.MapStringPairStringString___delitem__(self, key)

    def has_key(self, key):
        return _common.MapStringPairStringString_has_key(self, key)

    def keys(self):
        return _common.MapStringPairStringString_keys(self)

    def values(self):
        return _common.MapStringPairStringString_values(self)

    def items(self):
        return _common.MapStringPairStringString_items(self)

    def __contains__(self, key):
        return _common.MapStringPairStringString___contains__(self, key)

    def key_iterator(self):
        return _common.MapStringPairStringString_key_iterator(self)

    def value_iterator(self):
        return _common.MapStringPairStringString_value_iterator(self)

    def __setitem__(self, *args):
        return _common.MapStringPairStringString___setitem__(self, *args)

    def asdict(self):
        return _common.MapStringPairStringString_asdict(self)

    def __init__(self, *args):
        _common.MapStringPairStringString_swiginit(self, _common.new_MapStringPairStringString(*args))

    def empty(self):
        return _common.MapStringPairStringString_empty(self)

    def size(self):
        return _common.MapStringPairStringString_size(self)

    def swap(self, v):
        return _common.MapStringPairStringString_swap(self, v)

    def begin(self):
        return _common.MapStringPairStringString_begin(self)

    def end(self):
        return _common.MapStringPairStringString_end(self)

    def rbegin(self):
        return _common.MapStringPairStringString_rbegin(self)

    def rend(self):
        return _common.MapStringPairStringString_rend(self)

    def clear(self):
        return _common.MapStringPairStringString_clear(self)

    def get_allocator(self):
        return _common.MapStringPairStringString_get_allocator(self)

    def count(self, x):
        return _common.MapStringPairStringString_count(self, x)

    def erase(self, *args):
        return _common.MapStringPairStringString_erase(self, *args)

    def find(self, x):
        return _common.MapStringPairStringString_find(self, x)

    def lower_bound(self, x):
        return _common.MapStringPairStringString_lower_bound(self, x)

    def upper_bound(self, x):
        return _common.MapStringPairStringString_upper_bound(self, x)
    __swig_destroy__ = _common.delete_MapStringPairStringString

# Register MapStringPairStringString in _common:
_common.MapStringPairStringString_swigregister(MapStringPairStringString)

class Iterator:
    def __init__(self, container, begin, end):
# Store a reference to the iterated container to prevent the Python
# gargabe collector from freeing the container from memory.
        self.container = container

        self.cur = begin
        self.end = end

    def __iter__(self):
        return self

    def __next__(self):
        if self.cur == self.end:
            raise StopIteration
        else:
            value = self.cur.value()
            self.cur.next()
            return value

QueryCmp_NOT = _common.QueryCmp_NOT
r"""Negation modifier. Must be used with a match."""
QueryCmp_ICASE = _common.QueryCmp_ICASE
r"""Case-insensitive modifier. Must be used with a match."""
QueryCmp_ISNULL = _common.QueryCmp_ISNULL
r"""Value is NULL/None."""
QueryCmp_EQ = _common.QueryCmp_EQ
r"""Equal. The same as `EXACT`. Applicable to numbers."""
QueryCmp_NEQ = _common.QueryCmp_NEQ
r"""Not equal. The same as `NOT_EXACT`. Applicable to numbers."""
QueryCmp_GT = _common.QueryCmp_GT
r"""Greater than. Applicable to numbers."""
QueryCmp_GTE = _common.QueryCmp_GTE
r"""Greater than or equal to. Applicable to numbers."""
QueryCmp_LT = _common.QueryCmp_LT
r"""Less than. Applicable to numbers."""
QueryCmp_LTE = _common.QueryCmp_LTE
r"""Less than or equal to. Applicable to numbers."""
QueryCmp_EXACT = _common.QueryCmp_EXACT
r"""Case-sensitive exact match. The same as `EQ`. Applicable to strings."""
QueryCmp_NOT_EXACT = _common.QueryCmp_NOT_EXACT
r"""Negative case-sensitive exact match. The same as `NEQ`. Applicable to strings."""
QueryCmp_IEXACT = _common.QueryCmp_IEXACT
r"""Case-insensitive exact match. Applicable to strings."""
QueryCmp_NOT_IEXACT = _common.QueryCmp_NOT_IEXACT
r"""Negative case-insensitive exact match. Applicable to strings."""
QueryCmp_CONTAINS = _common.QueryCmp_CONTAINS
r"""Case-sensitive containment match. Applicable to strings."""
QueryCmp_NOT_CONTAINS = _common.QueryCmp_NOT_CONTAINS
r"""Negative case-sensitive containment match. Applicable to strings."""
QueryCmp_ICONTAINS = _common.QueryCmp_ICONTAINS
r"""Case-insensitive containment match. Applicable to strings."""
QueryCmp_NOT_ICONTAINS = _common.QueryCmp_NOT_ICONTAINS
r"""Negative case-insensitive containment match. Applicable to strings."""
QueryCmp_STARTSWITH = _common.QueryCmp_STARTSWITH
r"""Case-sensitive starts-with match. Applicable to strings."""
QueryCmp_ISTARTSWITH = _common.QueryCmp_ISTARTSWITH
r"""Case-insensitive starts-with match. Applicable to strings."""
QueryCmp_ENDSWITH = _common.QueryCmp_ENDSWITH
r"""Case-sensitive ends-with match. Applicable to strings."""
QueryCmp_IENDSWITH = _common.QueryCmp_IENDSWITH
r"""Case-insensitive ends-with match. Applicable to strings."""
QueryCmp_REGEX = _common.QueryCmp_REGEX
r"""Case-sensitive regular expression match. Applicable to strings."""
QueryCmp_IREGEX = _common.QueryCmp_IREGEX
r"""Case-insensitive regular expression match. Applicable to strings."""
QueryCmp_GLOB = _common.QueryCmp_GLOB
r"""Case-sensitive glob match. Applicable to strings."""
QueryCmp_NOT_GLOB = _common.QueryCmp_NOT_GLOB
r"""Negative case-sensitive glob match. Applicable to strings."""
QueryCmp_IGLOB = _common.QueryCmp_IGLOB
r"""Case-insensitive glob match. Applicable to strings."""
QueryCmp_NOT_IGLOB = _common.QueryCmp_NOT_IGLOB
r"""Negative case-insensitive glob match. Applicable to strings."""

def __sub__(lhs, rhs):
    r"""
    Returns the value of the left operand with the bits zeroed that are set in the right operand.
    Can be used eg for removing `NOT` or `ICASE` flags.
    """
    return _common.__sub__(lhs, rhs)

def match_int64(*args):
    return _common.match_int64(*args)

def match_string(*args):
    return _common.match_string(*args)
class PreserveOrderMapStringString(object):
    r"""
    PreserveOrderMap is an associative container that contains key-value pairs with unique unique keys.
    It is similar to standard std::map. But it preserves the order of items and the complexity is linear.
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def empty(self):
        return _common.PreserveOrderMapStringString_empty(self)

    def size(self):
        return _common.PreserveOrderMapStringString_size(self)

    def max_size(self):
        return _common.PreserveOrderMapStringString_max_size(self)

    def reserve(self, new_capacity):
        return _common.PreserveOrderMapStringString_reserve(self, new_capacity)

    def capacity(self):
        return _common.PreserveOrderMapStringString_capacity(self)

    def shrink_to_fit(self):
        return _common.PreserveOrderMapStringString_shrink_to_fit(self)

    def begin(self, *args):
        return _common.PreserveOrderMapStringString_begin(self, *args)

    def cbegin(self):
        return _common.PreserveOrderMapStringString_cbegin(self)

    def end(self, *args):
        return _common.PreserveOrderMapStringString_end(self, *args)

    def cend(self):
        return _common.PreserveOrderMapStringString_cend(self)

    def rbegin(self, *args):
        return _common.PreserveOrderMapStringString_rbegin(self, *args)

    def crbegin(self):
        return _common.PreserveOrderMapStringString_crbegin(self)

    def rend(self, *args):
        return _common.PreserveOrderMapStringString_rend(self, *args)

    def crend(self):
        return _common.PreserveOrderMapStringString_crend(self)

    def clear(self):
        return _common.PreserveOrderMapStringString_clear(self)

    def insert(self, value):
        return _common.PreserveOrderMapStringString_insert(self, value)

    def erase(self, *args):
        return _common.PreserveOrderMapStringString_erase(self, *args)

    def count(self, key):
        return _common.PreserveOrderMapStringString_count(self, key)

    def find(self, *args):
        return _common.PreserveOrderMapStringString_find(self, *args)

    def at(self, *args):
        return _common.PreserveOrderMapStringString_at(self, *args)

    def __contains__(self, key):
        return _common.PreserveOrderMapStringString___contains__(self, key)

    def __len__(self):
        return _common.PreserveOrderMapStringString___len__(self)

    def __getitem__(self, key):
        return _common.PreserveOrderMapStringString___getitem__(self, key)

    def __setitem__(self, key, v):
        return _common.PreserveOrderMapStringString___setitem__(self, key, v)

    def __delitem__(self, key):
        return _common.PreserveOrderMapStringString___delitem__(self, key)

    def __iter__(self):
        return _common.PreserveOrderMapStringString___iter__(self)

    def __init__(self):
        _common.PreserveOrderMapStringString_swiginit(self, _common.new_PreserveOrderMapStringString())
    __swig_destroy__ = _common.delete_PreserveOrderMapStringString

# Register PreserveOrderMapStringString in _common:
_common.PreserveOrderMapStringString_swigregister(PreserveOrderMapStringString)
cvar = _common.cvar
msg_err_exact_one_object = cvar.msg_err_exact_one_object

class PreserveOrderMapStringPreserveOrderMapStringString(object):
    r"""
    PreserveOrderMap is an associative container that contains key-value pairs with unique unique keys.
    It is similar to standard std::map. But it preserves the order of items and the complexity is linear.
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def empty(self):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_empty(self)

    def size(self):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_size(self)

    def max_size(self):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_max_size(self)

    def reserve(self, new_capacity):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_reserve(self, new_capacity)

    def capacity(self):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_capacity(self)

    def shrink_to_fit(self):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_shrink_to_fit(self)

    def begin(self, *args):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_begin(self, *args)

    def cbegin(self):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_cbegin(self)

    def end(self, *args):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_end(self, *args)

    def cend(self):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_cend(self)

    def rbegin(self, *args):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_rbegin(self, *args)

    def crbegin(self):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_crbegin(self)

    def rend(self, *args):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_rend(self, *args)

    def crend(self):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_crend(self)

    def clear(self):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_clear(self)

    def insert(self, value):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_insert(self, value)

    def erase(self, *args):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_erase(self, *args)

    def count(self, key):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_count(self, key)

    def find(self, *args):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_find(self, *args)

    def at(self, *args):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString_at(self, *args)

    def __contains__(self, key):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString___contains__(self, key)

    def __len__(self):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString___len__(self)

    def __getitem__(self, key):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString___getitem__(self, key)

    def __setitem__(self, key, v):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString___setitem__(self, key, v)

    def __delitem__(self, key):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString___delitem__(self, key)

    def __iter__(self):
        return _common.PreserveOrderMapStringPreserveOrderMapStringString___iter__(self)

    def __init__(self):
        _common.PreserveOrderMapStringPreserveOrderMapStringString_swiginit(self, _common.new_PreserveOrderMapStringPreserveOrderMapStringString())
    __swig_destroy__ = _common.delete_PreserveOrderMapStringPreserveOrderMapStringString

# Register PreserveOrderMapStringPreserveOrderMapStringString in _common:
_common.PreserveOrderMapStringPreserveOrderMapStringString_swigregister(PreserveOrderMapStringPreserveOrderMapStringString)

def create_attributes_from_getters_and_setters(cls):
    getter_prefix = 'get_'
    setter_prefix = 'set_'
    attrs = {method[len(getter_prefix):] for method in dir(cls) if method.startswith(getter_prefix) or method.startswith(setter_prefix)}
    for attr in attrs:
        getter_name = getter_prefix + attr
        setter_name = setter_prefix + attr
        setattr(cls, attr, property(
            lambda self, getter_name=getter_name: getattr(self, getter_name)() if getter_name in dir(cls) else None,
            lambda self, value, setter_name=setter_name: getattr(self, setter_name)(value) if setter_name in dir(cls) else None
        ))


