Skip to content

Dev - #5

Merged
tinix84 merged 4 commits into
masterfrom
dev
Aug 23, 2025
Merged

Dev#5
tinix84 merged 4 commits into
masterfrom
dev

Conversation

@tinix84

@tinix84 tinix84 commented Aug 23, 2025

Copy link
Copy Markdown
Owner

No description provided.

…unctions

- Introduced new exceptions: SimulationError, FileLoadError, and PlecsConnectionError for better error handling.
- Moved utility functions to a new module (utils.py) for better organization and testability.
- Implemented a robust check for running simulations using XML-RPC and process monitoring.
- Enhanced run_sim_single method to support timeouts and improved error handling.
- Added integration tests for local XML-RPC server interactions and simulation execution.
- Created unit tests for model variable validation and utility functions.
- Documented shared utilities requirements for future development.
- Implement tests for PlecsApp including executable path detection, CPU usage retrieval, and process management.
- Add tests for PlecsServer covering model variable loading, simulation execution, and error handling.
- Introduce tests for GenericConverterPlecsMdl to validate model loading and properties.
- Create tests for loading model variables from various formats (dict, YAML, MAT).
- Enhance test coverage for simulation result processing and error scenarios.
- Ensure robust handling of exceptions and edge cases in all tested components.
…CS integration

- Implemented end-to-end workflow tests in `test_end_to_end_workflows.py` to validate the complete simulation process, including starting the PLECS application, loading models, running simulations, and verifying results.
- Added parameter sweep and error handling tests to ensure robustness in various scenarios.
- Created integration tests in `test_method_consolidation.py` to validate the new unified `load_model_vars` method, including support for different input formats and file types.
- Introduced a validation script `validate_consolidation.py` to perform manual tests on method consolidation and model information retrieval.
- Ensured consistent return formats across methods and added deprecation warnings for legacy methods.
Copilot AI review requested due to automatic review settings August 23, 2025 15:56
@tinix84
tinix84 merged commit fb59a4a into master Aug 23, 2025
1 check failed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR represents a massive development effort that consolidates PyPLECS method interfaces, implements missing functionality, and establishes a comprehensive testing infrastructure. The changes unify variable loading methods, add extensive error handling, implement previously stubbed methods, and create a robust validation framework.

Key changes include:

  • Unified load_model_vars() method supporting multiple input types (dict, .mat files, .yaml files)
  • Complete implementation of missing methods in GenericConverterPlecsMdl class
  • Comprehensive test suite covering unit, integration, and end-to-end workflows
  • Shared utilities module for code reusability and testability

Reviewed Changes

Copilot reviewed 25 out of 26 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
validate_consolidation.py Validation script testing method consolidation and new model info features
tests/unit/*.py Comprehensive unit test suite covering utilities, server methods, and model functionality
tests/integration/*.py Integration tests for workflows, method consolidation, and real PLECS interaction
tests/interactive/test_gui_automation.py GUI automation tests for external application interaction
pyplecs/utils.py New shared utilities module with dict conversion, RPC wrapper, and validation functions
pyplecs/pyplecs.py Major refactor with unified methods, enhanced error handling, and complete implementations
pyplecs/exceptions.py Custom exception hierarchy for better error management
docs/*.md Comprehensive documentation covering requirements, specifications, and progress summaries

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment thread pyplecs/pyplecs.py
Comment on lines +1223 to +1224
# Implementation for parsing PLECS XML structure
pass

Copilot AI Aug 23, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The method _parse_plecs_file_variables has no implementation beyond a comment and pass statement. This will cause issues when load_modelvars_struct_from_plecs calls it.

Suggested change
# Implementation for parsing PLECS XML structure
pass
# Parse the PLECS XML structure to extract variables
variables = {}
try:
tree = ET.parse(self._fullname)
root = tree.getroot()
# PLECS files typically store variables in a <Variables> or <Parameters> section
# Try both common cases
for section in ('Variables', 'Parameters'):
for var_section in root.findall(f".//{section}"):
for var in var_section.findall("Variable"):
name = var.get("name")
value = var.get("value")
if name is not None and value is not None:
# Try to convert value to int or float if possible
try:
if '.' in value:
value_converted = float(value)
else:
value_converted = int(value)
except Exception:
value_converted = value
variables[name] = value_converted
except Exception as e:
raise ModelParsingError(f"Error parsing PLECS file variables: {e}")
return variables

Copilot uses AI. Check for mistakes.
@tinix84
tinix84 removed the request for review from Copilot March 23, 2026 21:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants