# pysyncobj.batteries package

## ReplCounter

class pysyncobj.batteries.ReplCounter

  Simple distributed counter. You can set, add, sub and inc counter value.

  add(value)

    Adds value to a counter.

    Parameters:

      value – value to add

    Returns:

      new counter value

  get()
    Returns:

      current counter value

  inc()

    Increments counter value by one.

    Returns:

      new counter value

  set(newValue)

    Set new value to a counter.

    Parameters:

      newValue – new value

    Returns:

      new counter value

  sub(value)

    Subtracts a value from counter.

    Parameters:

      value – value to subtract

    Returns:

      new counter value

## ReplList

class pysyncobj.batteries.ReplList

  Distributed list - it has an interface similar to a regular list.

  append(item)

    Append item to end

  count(element)

    Return number of occurrences of element

  extend(other)

    Extend list by appending elements from the iterable

  get(position)

    Return value at given position

  index(element)

    Return first position of element. Raises ValueError if the value is not present.

  insert(position, element)

    Insert object before position

  pop(position=None)

    Remove and return item at position (default last). Raises IndexError if list is empty or index is out of range.

  rawData()

    Return internal list - use it carefully

  remove(element)

    Remove first occurrence of element. Raises ValueError if the value is not present.

  reset(newData)

    Replace list with a new one

  set(position, newValue)

    Update value at given position.

  sort(reverse=False)

    Stable sort IN PLACE

## ReplDict

class pysyncobj.batteries.ReplDict

  Distributed dict - it has an interface similar to a regular dict.

  clear()

    Remove all items from dict

  get(key, default=None)

    Return value for given key, return default if key not exist

  items()

    Return all items

  keys()

    Return all keys

  pop(key, default=None)

    Remove and return value for given key, return default if key not exist

  rawData()

    Return internal dict - use it carefully

  reset(newData)

    Replace dict with a new one

  set(key, value)

    Set value for specified key

  setdefault(key, default)

    Return value for specified key, set default value if key not exist

  update(other)

    Adds all values from the other dict

  values()

    Return all values

## ReplSet

class pysyncobj.batteries.ReplSet

  Distributed set - it has an interface similar to a regular set.

  add(item)

    Add an element to a set

  clear()

    Remove all elements from this set.

  discard(item)

    Remove an element from a set if it is a member. If the element is not a member, do nothing.

  pop()

    Remove and return an arbitrary set element. Raises KeyError if the set is empty.

  rawData()

    Return internal dict - use it carefully

  remove(item)

    Remove an element from a set; it must be a member. If the element is not a member, raise a KeyError.

  reset(newData)

    Replace set with a new one

  update(other)

    Update a set with the union of itself and others.

## ReplQueue

class pysyncobj.batteries.ReplQueue(maxsize=0)

  Replicated FIFO queue. Based on collections.deque. Has an interface similar to Queue.

  Parameters:

    maxsize (int) – Max queue size.

  empty()

    True if queue is empty

  full()

    True if queue is full

  get(default=None)

    Extract item from queue. Return default if queue is empty.

  put(item)

    Put an item into the queue. True - if item placed in queue. False - if queue is full and item can not be placed.

  qsize()

    Return size of queue

## ReplPriorityQueue

class pysyncobj.batteries.ReplPriorityQueue(maxsize=0)

  Replicated priority queue. Based on heapq. Has an interface similar to Queue.

  Parameters:

    maxsize (int) – Max queue size.

  empty()

    True if queue is empty

  full()

    True if queue is full

  get(default=None)

    Extract the smallest item from queue. Return default if queue is empty.

  put(item)

    Put an item into the queue. Items should be comparable, eg. tuples. True - if item placed in queue. False - if queue is full and item can not be placed.

  qsize()

    Return size of queue

## ReplLockManager

class pysyncobj.batteries.ReplLockManager(autoUnlockTime, selfID=None)

  Replicated Lock Manager. Allow to acquire / release distributed locks.

  Parameters:

    - autoUnlockTime (float) – lock will be released automatically if no response from holder for more than autoUnlockTime seconds

    - selfID (str) – (optional) - unique id of current lock holder.

  destroy()

    Destroy should be called before destroying ReplLockManager

  isAcquired(lockID)

    Check if lock is acquired by ourselves.

    Parameters:

      lockID (str) – unique lock identifier.

    :return True if lock is acquired by ourselves.

  release(lockID, callback=None, sync=False, timeout=None)

    Release previously-acquired lock.

    Parameters:

      - lockID (str) – unique lock identifier.

      - sync (bool) – True - to wait until lock is released or failed to release.

      - callback (func(opResult, error)) – if sync is False - callback will be called with operation result.

      - timeout (float) – max operation time (default - unlimited)

  tryAcquire(lockID, callback=None, sync=False, timeout=None)

    Attempt to acquire lock.

    Parameters:

      - lockID (str) – unique lock identifier.

      - sync (bool) – True - to wait until lock is acquired or failed to acquire.

      - callback (func(opResult, error)) – if sync is False - callback will be called with operation result.

      - timeout (float) – max operation time (default - unlimited)

    :return True if acquired, False - somebody else already acquired lock