Skip to content

Commit

Permalink
Added Google style docstrings
Browse files Browse the repository at this point in the history
  • Loading branch information
asgibson committed Nov 18, 2024
1 parent 5d74c18 commit 38f5d26
Showing 1 changed file with 41 additions and 18 deletions.
59 changes: 41 additions & 18 deletions onair/src/ai_components/ai_plugin_abstract/ai_plugin.py
Original file line number Diff line number Diff line change
@@ -1,40 +1,63 @@
# GSC-19165-1, "The On-Board Artificial Intelligence Research (OnAIR) Platform"
#
# Copyright © 2023 United States Government as represented by the Administrator of
# the National Aeronautics and Space Administration. No copyright is claimed in the
# United States under Title 17, U.S. Code. All Other Rights Reserved.
# Copyright © 2023 United States Government as represented by the Administrator
# of the National Aeronautics and Space Administration. No copyright is claimed
# in the United States under Title 17, U.S. Code. All Other Rights Reserved.
#
# Licensed under the NASA Open Source Agreement version 1.3
# See "NOSA GSC-19165-1 OnAIR.pdf"


from abc import ABC, abstractmethod

"""This object serves as a proxy for all plugins.
Therefore, the AIPlugin object is meant to induce
standards and structures of compliance for user-created
and/or imported plugins/libraries
"""

class AIPlugIn(ABC):
"""This serves as a base for all plugins.
This is the superclass for data driven components: VAE, PPO, etc. It is
meant to induce standards and structures of compliance for imported
plugins: KnowledgeRep, Learner, Planner or Complex. Those plugins must
inherit this class.
Attributes:
component_name (str): Name given to instance of plugin.
headers (list[str]): Names for each data point in a data frame.
"""
def __init__(self, _name: str, _headers: list[str]):
"""Initializes a new AIPlugIn object.
Args:
_name: The name of this plugin instance.
_headers: Sequenced names of each item in OnAIR data frame.
class AIPlugin(ABC):
def __init__(self, _name, _headers):
"""
Superclass for data driven components: VAE, PPO, etc. Allows for easier modularity.
"""
assert len(_headers) > 0
self.component_name = _name
self.headers = _headers

@abstractmethod
def update(self, low_level_data=[], high_level_data={}):
"""
Given streamed data point, system should update internally
def update(
self, low_level_data: list[float] = [],
high_level_data: dict[str, dict[str, list[object]]] = {}
) -> None:
"""Updates plugin's data using provided data.
Args:
low_level_data: Frame of floats, one for each header.
high_level_data: Reasoned data results from previous plugins.
Returns:
None: This function only updates the data for this plugin
"""
raise NotImplementedError

@abstractmethod
def render_reasoning(self):
"""
System should return its diagnosis
def render_reasoning(self) -> list[object]:
"""Plugin reasons with current data and provides analysis.
Returns:
list[object]: The list of reasoned outcomes, where contents are
relevant to this plugin. May be an empty list.
"""
raise NotImplementedError

0 comments on commit 38f5d26

Please sign in to comment.