Source code for compas_fab.robots.time_
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
__all__ = [
'Duration',
]
[docs]class Duration(object):
"""Duration consists of two integers: seconds and nanoseconds.
Attributes
----------
secs: int
Integer representing number of seconds.
nsecs: int
Integer representing number of nanoseconds.
"""
def __str__(self):
return 'Duration({!r}, {!r})'.format(self.secs, self.nsecs)
def __repr__(self):
return self.__str__()
def __eq__(self, other):
if isinstance(other, Duration):
return self.seconds == other.seconds
return False
def __ne__(self, other):
return not self.__eq__(other)
@property
def seconds(self):
"""Returns the duration as floating-point seconds.
Returns
-------
float
Floating-point seconds
"""
return self.secs + 1e-9 * self.nsecs
[docs] @classmethod
def from_data(cls, data):
"""Construct a duration from its data representation.
Parameters
----------
data : :obj:`dict`
The data dictionary.
Returns
-------
:class:`Duration`
An instance of :class:`Duration`.
"""
duration = cls(0, 0)
duration.data = data
return duration
[docs] def to_data(self):
"""Return the data dictionary that represents the duration, and from
which it can be reconstructed."""
return self.data
@property
def data(self):
""":obj:`dict` : The data representing the duration."""
return {
'secs': self.secs,
'nsecs': self.nsecs
}
@data.setter
def data(self, data):
self.secs = data.get('secs') or 0
self.nsecs = data.get('nsecs') or 0