Source code for adg.tools

"""Miscellaneous diagram-unrelated tools for ADG."""


from builtins import object, zip
from itertools import count


[docs]def reversed_enumerate(data): """Return the index and item of the data in reversed order. Args: data (iterable data structure): The data to be used.. Returns: (tuple): Index and item. >>> list(reversed_enumerate(['A', 'B', 'C'])) [(2, 'C'), (1, 'B'), (0, 'A')] """ for index, item in zip(count(len(data) - 1, -1), reversed(data)): yield index, item
[docs]class UniqueID(object): """Counter making sure of generating a unique ID number for diagrams. Attributes: current (int): The unique identifier to be attributedto a diagram. """ __slots__ = 'current' def __init__(self): """Initialize counter with value 0.""" self.current = 0
[docs] def get(self): """Iterate on counter value and return current value. Returns: (int): A unique identifier for the diagram. """ self.current += 1 return self.current - 1