'Create a new :class:`Timestamp`.
This class is only for use with the MongoDB opLog. If you need
to store a regular timestamp, please use a
:class:`~datetime.datetime`.
Raises :class:`TypeError` if `time` is not an instance of
:class: `int` or :class:`~datetime.datetime`, or `inc` is not
an instance of :class:`int`. Raises :class:`ValueError` if
`time` or `inc` is not in [0, 2**32).
:Parameters:
- `time`: time in seconds since epoch UTC, or a naive UTC
:class:`~datetime.datetime`, or an aware
:class:`~datetime.datetime`
- `inc`: the incrementing counter'

def __init__(self, time, inc):

    if isinstance(time, datetime.datetime):
        if (time.utcoffset() is not None):
            time = (time - time.utcoffset())
        time = int(calendar.timegm(time.timetuple()))
    if (not isinstance(time, integer_types)):
        raise TypeError('time    must    be    an    instance    of    int')
    if (not isinstance(inc, integer_types)):
        raise TypeError('inc    must    be    an    instance    of    int')
    if (not (0 <= time < UPPERBOUND)):
        raise ValueError('time    must    be    contained    in    [0,    2**32)')
    if (not (0 <= inc < UPPERBOUND)):
        raise ValueError('inc    must    be    contained    in    [0,    2**32)')
    self.__time = time
    self.__inc = inc
