Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions PyAres/Analyzing/__init__.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from .analysis_service import AresAnalyzerService
from .analyzer_models import Analysis, AnalysisRequest, InfoResponse
from .analyzer_models import AnalysisResponse, AnalysisRequest, InfoResponse

__all__ = [
"Analysis",
"AnalysisResponse",
"AnalysisRequest",
"InfoResponse",
"AresAnalyzerService",
Expand Down
6 changes: 3 additions & 3 deletions PyAres/Analyzing/analysis_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@
# Import python models
from ..Models import ares_data_models, RequestMetadata
from ..Models import AresSchemaEntry
from .analyzer_models import AnalysisRequest, Analysis, InfoResponse
from .analyzer_models import AnalysisRequest, AnalysisResponse, InfoResponse

# Type hints for the user's custom logic
AnalyzeLogicFunction = Callable[[AnalysisRequest], Union[Analysis, Awaitable[Analysis]]]
AnalyzeLogicFunction = Callable[[AnalysisRequest], Union[AnalysisResponse, Awaitable[AnalysisResponse]]]

class AresAnalyzerServiceWrapper(analyzer_service_grpc.AresRemoteAnalyzerServiceServicer):
"""
Expand Down Expand Up @@ -73,7 +73,7 @@ def Analyze(self, request: analyzer_service.AnalysisRequest, context) -> analysi
if isinstance(python_response, Awaitable):
python_response = python_response.__await__()

if not isinstance(python_response, Analysis):
if not isinstance(python_response, AnalysisResponse):
print("Analysis response was an invalid type, ")
proto_analysis.analysis_outcome = ares_outcome_enum_pb2.FAILURE
proto_analysis.error_string = "The user's custom analysis logic returned an invalid type, analysis cannot be processed"
Expand Down
2 changes: 1 addition & 1 deletion PyAres/Analyzing/analyzer_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def __str__(self) -> str:
def __repr__(self) -> str:
return self.__str__()

class Analysis:
class AnalysisResponse:
""" Represents the result of an analysis process. """

def __init__(self, result: float, outcome: Outcome = Outcome.SUCCESS, error_string: str = ""):
Expand Down
6 changes: 3 additions & 3 deletions PyAres/Demo/analyzer_test.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from PyAres import AresAnalyzerService, AnalysisRequest, Analysis, AresDataType, Outcome
from PyAres import AresAnalyzerService, AnalysisRequest, AnalysisResponse, AresDataType, Outcome

def analyze(request: AnalysisRequest) -> Analysis:
def analyze(request: AnalysisRequest) -> AnalysisResponse:
#Custom Analysis Logic
temperature = request.inputs.get("Temperature")

Expand All @@ -10,7 +10,7 @@ def analyze(request: AnalysisRequest) -> Analysis:

print(f"Temperature: {temperature}")

analysis = Analysis(result=temperature)
analysis = AnalysisResponse(result=temperature)
return analysis


Expand Down
8 changes: 4 additions & 4 deletions PyAres/Demo/analyzer_wiki.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
from PyAres import AresAnalyzerService, AnalysisRequest, Analysis, AresDataType, Outcome
from PyAres import AresAnalyzerService, AnalysisRequest, AnalysisResponse, AresDataType, Outcome

def analyze_sample(request: AnalysisRequest) -> Analysis:
def analyze_sample(request: AnalysisRequest) -> AnalysisResponse:
# 1. Extract inputs
# 'Growth_Metric' would come from a sensor or previous step
raw_value = request.inputs.get("Growth_Metric")

if raw_value is None:
return Analysis(result=0.0, outcome=Outcome.FAILURE)
return AnalysisResponse(result=0.0, outcome=Outcome.FAILURE)

# 2. Perform Logic
print(f"Analyzing sample with value: {raw_value}")
Expand All @@ -15,7 +15,7 @@ def analyze_sample(request: AnalysisRequest) -> Analysis:
is_success = calculated_score > 10.0 # Define success criteria

# 3. Return Result
return Analysis(result=calculated_score, outcome=Outcome.SUCCESS)
return AnalysisResponse(result=calculated_score, outcome=Outcome.SUCCESS)

if __name__ == "__main__":
service = AresAnalyzerService(
Expand Down
4 changes: 2 additions & 2 deletions PyAres/Planning/planner_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ def __init__(self,
parameter_names: Optional[list[str]] = None,
parameter_values: Optional[list] = None,
parameter_data: Optional[dict[str,Any]] = None,
planning_outcome: Outcome = Outcome.SUCCESS,
outcome: Outcome = Outcome.SUCCESS,
error_string: str = ""):
"""
Initializes a PlanResponse. Using either lists of names and values or a python dictonary of name:value pairs
Expand All @@ -189,7 +189,7 @@ def __init__(self,
else:
raise ValueError("No values to assign!")

self.outcome = planning_outcome
self.outcome = outcome
self.error_string = error_string

def __str__(self):
Expand Down
2 changes: 1 addition & 1 deletion PyAres/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from .Planning import PlanningParameter
from .Planning import ParameterHistoryItem
from .Analyzing import AresAnalyzerService
from .Analyzing import Analysis
from .Analyzing import AnalysisResponse
from .Analyzing import AnalysisRequest
from .Analyzing import InfoResponse
from .Device import AresDeviceService
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,18 +59,18 @@ Analyzers can be initialized using the AresAnalyzerService class. Below is a bas
```Python
from PyAres import AresAnalyzerService
from PyAres import AnalysisRequest
from PyAres import Analysis
from PyAres import AnalysisResponse
from PyAres import AresDataType

def analyze(request: AnalysisRequest) -> Analysis:
def analyze(request: AnalysisRequest) -> AnalysisResponse:
#Custom Analysis Logic
growth = request.inputs.get("Growth")
temperature = request.inputs.get("Temperature")

print(f"Growth: {growth}")
print(f"Temperature: {temperature}")

analysis = Analysis(result=growth, success=True)
analysis = AnalysisResponse(result=growth, success=True)
return analysis


Expand Down
6 changes: 3 additions & 3 deletions tests/test_analyzer.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import unittest
from PyAres import AresAnalyzerService, Outcome
from PyAres.Models import ares_data_models
from PyAres.Analyzing.analyzer_models import AnalysisRequest, Analysis
from PyAres.Analyzing.analyzer_models import AnalysisRequest, AnalysisResponse
from ares_datamodel.analyzing.remote import ares_remote_analyzer_service_pb2 as analyzer_service
from ares_datamodel.analyzing import analysis_pb2
from ares_datamodel import ares_data_type_pb2, ares_outcome_enum_pb2, ares_data_schema_pb2
Expand All @@ -28,11 +28,11 @@ class TestAresAnalyzerService(unittest.TestCase):
def setUp(self):
self.captured_request: AnalysisRequest | None = None

def dummy_analyze(request: AnalysisRequest) -> Analysis:
def dummy_analyze(request: AnalysisRequest) -> AnalysisResponse:
self.captured_request = request

# Return a valid Analysis object
return Analysis(
return AnalysisResponse(
result=100.0,
outcome=Outcome.SUCCESS
)
Expand Down