diff --git a/tracetools_analysis/tracetools_analysis/data_model/__init__.py b/tracetools_analysis/tracetools_analysis/data_model/__init__.py index 4451949..4459da6 100644 --- a/tracetools_analysis/tracetools_analysis/data_model/__init__.py +++ b/tracetools_analysis/tracetools_analysis/data_model/__init__.py @@ -15,6 +15,13 @@ """Base data model module.""" +from typing import Any +from typing import Dict +from typing import List + + +DataModelIntermediateStorage = List[Dict[str, Any]] + class DataModel(): """ diff --git a/tracetools_analysis/tracetools_analysis/data_model/cpu_time.py b/tracetools_analysis/tracetools_analysis/data_model/cpu_time.py index b66c7e4..f255e16 100644 --- a/tracetools_analysis/tracetools_analysis/data_model/cpu_time.py +++ b/tracetools_analysis/tracetools_analysis/data_model/cpu_time.py @@ -18,6 +18,7 @@ import pandas as pd from . import DataModel +from . import DataModelIntermediateStorage class CpuTimeDataModel(DataModel): @@ -30,10 +31,7 @@ class CpuTimeDataModel(DataModel): def __init__(self) -> None: """Create a CpuTimeDataModel.""" super().__init__() - # Intermediate - self._times = [] - # Final - self.times = None + self._times: DataModelIntermediateStorage = [] def add_duration( self, diff --git a/tracetools_analysis/tracetools_analysis/data_model/memory_usage.py b/tracetools_analysis/tracetools_analysis/data_model/memory_usage.py index 7785cbc..0eabf8a 100644 --- a/tracetools_analysis/tracetools_analysis/data_model/memory_usage.py +++ b/tracetools_analysis/tracetools_analysis/data_model/memory_usage.py @@ -18,6 +18,7 @@ import pandas as pd from . import DataModel +from . import DataModelIntermediateStorage class MemoryUsageDataModel(DataModel): @@ -31,10 +32,7 @@ class MemoryUsageDataModel(DataModel): def __init__(self) -> None: """Create a MemoryUsageDataModel.""" super().__init__() - # Intermediate - self._memory_diff = [] - # Final - self.memory_diff = None + self._memory_diff: DataModelIntermediateStorage = [] def add_memory_difference( self, diff --git a/tracetools_analysis/tracetools_analysis/data_model/profile.py b/tracetools_analysis/tracetools_analysis/data_model/profile.py index 6d1bcd9..0845647 100644 --- a/tracetools_analysis/tracetools_analysis/data_model/profile.py +++ b/tracetools_analysis/tracetools_analysis/data_model/profile.py @@ -20,6 +20,7 @@ from typing import Optional import pandas as pd from . import DataModel +from . import DataModelIntermediateStorage class ProfileDataModel(DataModel): @@ -33,10 +34,7 @@ class ProfileDataModel(DataModel): def __init__(self) -> None: """Create a ProfileDataModel.""" super().__init__() - # Intermediate - self._times = [] - # Final - self.times = None + self._times: DataModelIntermediateStorage = [] def add_duration( self, diff --git a/tracetools_analysis/tracetools_analysis/data_model/ros2.py b/tracetools_analysis/tracetools_analysis/data_model/ros2.py index 8c3a019..7c0799c 100644 --- a/tracetools_analysis/tracetools_analysis/data_model/ros2.py +++ b/tracetools_analysis/tracetools_analysis/data_model/ros2.py @@ -18,6 +18,7 @@ import pandas as pd from . import DataModel +from . import DataModelIntermediateStorage class Ros2DataModel(DataModel): @@ -30,36 +31,19 @@ class Ros2DataModel(DataModel): def __init__(self) -> None: """Create a Ros2DataModel.""" super().__init__() - - # Intermediate - self._contexts = [] - self._nodes = [] - self._publishers = [] - self._subscriptions = [] - self._subscription_objects = [] - self._services = [] - self._clients = [] - self._timers = [] - self._callback_objects = [] - self._callback_symbols = [] - self._callback_instances = [] - - # Final # Objects (one-time events, usually when something is created) - self.contexts = None - self.nodes = None - self.publishers = None - self.subscriptions = None - self.subscription_objects = None - self.services = None - self.clients = None - self.timers = None - - self.callback_objects = None - self.callback_symbols = None - + self._contexts: DataModelIntermediateStorage = [] + self._nodes: DataModelIntermediateStorage = [] + self._publishers: DataModelIntermediateStorage = [] + self._subscriptions: DataModelIntermediateStorage = [] + self._subscription_objects: DataModelIntermediateStorage = [] + self._services: DataModelIntermediateStorage = [] + self._clients: DataModelIntermediateStorage = [] + self._timers: DataModelIntermediateStorage = [] + self._callback_objects: DataModelIntermediateStorage = [] + self._callback_symbols: DataModelIntermediateStorage = [] # Events (multiple instances, may not have a meaningful index) - self.callback_instances = None + self._callback_instances: DataModelIntermediateStorage = [] def add_context( self, context_handle, timestamp, pid, version @@ -209,7 +193,6 @@ class Ros2DataModel(DataModel): self.callback_symbols = pd.DataFrame.from_dict(self._callback_symbols) if self._callback_symbols: self.callback_symbols.set_index('callback_object', inplace=True, drop=True) - # Events (multiple instances, may not have a meaningful index) self.callback_instances = pd.DataFrame.from_dict(self._callback_instances) def print_data(self) -> None: