# patroni.collections module

Patroni custom object types somewhat like `collections` module.

Provides a case insensitive `dict` and `set` object types, and EMPTY_DICT frozen dictionary object.

class patroni.collections.CaseInsensitiveDict(data: Dict[str, Any] | None = None)

  Bases: `MutableMapping`[`str`, `Any`]

  A case-insensitive `dict`-like object.

  Implements all methods and operations of `MutableMapping` as well as `dict`’s `copy()`. All keys are expected to be strings. The structure remembers the case of the last key to be set, and `iter()`, `dict.keys()`, `dict.items()`, `dict.iterkeys()`, and `dict.iteritems()` will contain case-sensitive keys. However, querying and contains testing is case insensitive.

  __init__(data: Dict[str, Any] | None = None) → None

    Create a new instance of `CaseInsensitiveDict` with the given data.

    Parameters:

      data – initial dictionary to create a `CaseInsensitiveDict` from.

  _abc_impl = <_abc._abc_data object>
  copy() → CaseInsensitiveDict

    Create a copy of this dict.

    Returns:

      a new dict object with the same keys and values of this dict.

  keys() → KeysView[str]

    Return a new view of the dict’s keys.

    Returns:

      a set-like object providing a view on the dict’s keys

class patroni.collections.CaseInsensitiveSet(values: Collection[str] | None = None)

  Bases: `MutableSet`[`str`]

  A case-insensitive `set`-like object.

  Implements all methods and operations of `MutableSet`. All values are expected to be strings. The structure remembers the case of the last value set, however, contains testing is case insensitive.

  __init__(values: Collection[str] | None = None) → None

    Create a new instance of `CaseInsensitiveSet` with the given values.

    Parameters:

      values – values to be added to the set.

  _abc_impl = <_abc._abc_data object>
  add(value: str) → None

    Add value to this set.

    Search is performed case-insensitively. If value is already in the set, overwrite it with value, so we “remember” the last case of value.

    Parameters:

      value – value to be added to the set.

  discard(value: str) → None

    Remove value from this set.

    Search is performed case-insensitively. If value is not present in the set, no exception is raised.

    Parameters:

      value – value to be removed from the set.

  issubset(other: CaseInsensitiveSet) → bool

    Check if this set is a subset of other.

    Parameters:

      other – another set to be compared with this set.

    Returns:

      `True` if this set is a subset of other, else `False`.

class patroni.collections._FrozenDict(*args: Any, **kwargs: Any)

  Bases: `Mapping`[`str`, `Any`]

  Frozen dictionary object.

  __init__(*args: Any, **kwargs: Any) → None

    Create a new instance of `_FrozenDict` with given data.

  _abc_impl = <_abc._abc_data object>
  copy() → Dict[str, Any]

    Create a copy of this dict.

    Returns:

      a new dict object with the same keys and values of this dict.