Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if isinstance(index, slice) and (
isinstance(index.start, datetime.datetime)
or isinstance(index.stop, datetime.datetime)):
items = []
for state in self.states:
try:
if index.start and state.timestamp < index.start:
continue
if index.stop and state.timestamp >= index.stop:
continue
except TypeError as exc:
raise TypeError(
'both indices must be `datetime.datetime` objects for'
'time slice') from exc
items.append(state)
return StateMutableSequence(items[::index.step])
elif isinstance(index, datetime.datetime):
for state in self.states:
if state.timestamp == index:
return state
else:
raise IndexError('timestamp not found in states')
elif isinstance(index, slice):
return StateMutableSequence(self.states.__getitem__(index))
else:
return self.states.__getitem__(index)
"""
Extracts a list of :class:`~states` from a list of (or single) objects
containing states. This method is defined to handle :class:`~track`,
:class:`~groundtruthpath` and :class:`~detection` objects
Parameters
----------
object_with_states: object containing a list of states
Method of state extraction depends on the type of the object
Returns
-------
: list of :class:`~.State`
"""
state_list = StateMutableSequence()
for element in list(object_with_states):
if isinstance(element, StateMutableSequence):
state_list.extend(element.states)
elif isinstance(element, State):
state_list.append(element)
else:
raise ValueError(
"{!r} has no state extraction method".format(element))
return state_list
# -*- coding: utf-8 -*-
import uuid
from ..base import Property
from .multihypothesis import MultipleHypothesis
from .state import State, StateMutableSequence
from .update import Update
class Track(StateMutableSequence):
"""Track type
A :class:`~.StateMutableSequence` representing a track.
"""
states = Property(
[State],
default=None,
doc="The initial states of the track. Default `None` which initialises"
"with empty list.")
id = Property(
str,
default=None,
doc="The unique track ID")
from ..base import Property
from .state import State, StateMutableSequence
class GroundTruthState(State):
"""Ground Truth State type"""
metadata = Property(dict, default=None,
doc='Dictionary of metadata items for Detections.')
def __init__(self, state_vector, *args, **kwargs):
super().__init__(state_vector, *args, **kwargs)
if self.metadata is None:
self.metadata = {}
class GroundTruthPath(StateMutableSequence):
"""Ground Truth Path type
A :class:`~.StateMutableSequence` representing a track.
"""
states = Property(
[GroundTruthState],
default=None,
doc="List of groundtruth states to initialise path with. Default "
"`None` which initialises with an empty list.")
containing states. This method is defined to handle :class:`~track`,
:class:`~groundtruthpath` and :class:`~detection` objects
Parameters
----------
object_with_states: object containing a list of states
Method of state extraction depends on the type of the object
Returns
-------
: list of :class:`~.State`
"""
state_list = StateMutableSequence()
for element in list(object_with_states):
if isinstance(element, StateMutableSequence):
state_list.extend(element.states)
elif isinstance(element, State):
state_list.append(element)
else:
raise ValueError(
"{!r} has no state extraction method".format(element))
return state_list