""" Compare structure of working mapping vs our test mapping """ import grpc import sys sys.path.append(r'C:\DEV\COPILOT\geutebruck-api\src\api') from protos import configuration_pb2 from protos import configuration_pb2_grpc def compare_structures(): channel = grpc.insecure_channel('localhost:50051') stub = configuration_pb2_grpc.ConfigurationServiceStub(channel) print("Reading configuration from GeViSoft...") # Read the raw configuration config_request = configuration_pb2.ReadConfigurationRequest() config_response = stub.ReadConfiguration(config_request) print(f"Configuration size: {config_response.file_size} bytes") # Also read via action mappings mappings_request = configuration_pb2.ReadActionMappingsRequest() mappings_response = stub.ReadActionMappings(mappings_request) print(f"\nTotal mappings: {len(mappings_response.mappings)}") # Find a working mapping (not our test) working_mapping = None test_mapping = None for mapping in mappings_response.mappings: if "GRPC_TEST" not in mapping.name and working_mapping is None: working_mapping = mapping if "GRPC_TEST" in mapping.name and test_mapping is None: test_mapping = mapping if working_mapping and test_mapping: break if working_mapping: print(f"\n{'='*70}") print("WORKING MAPPING (GeViSet can display this):") print(f"{'='*70}") print(f"Name: {working_mapping.name[:60]}") print(f"Start Offset: {working_mapping.start_offset}") print(f"End Offset: {working_mapping.end_offset}") print(f"Output Actions: {len(working_mapping.output_actions)}") print(f"Input Actions: {len(working_mapping.input_actions)}") print(f"Legacy Actions: {len(working_mapping.actions)}") if working_mapping.output_actions: print("\nFirst Output Action:") action = working_mapping.output_actions[0] print(f" Action: {action.action}") print(f" Parameters: {len(action.parameters)}") for param in action.parameters: print(f" - {param.name} = {param.value}") if test_mapping: print(f"\n{'='*70}") print("TEST MAPPING (GeViSet CANNOT display this):") print(f"{'='*70}") print(f"Name: {test_mapping.name}") print(f"Start Offset: {test_mapping.start_offset}") print(f"End Offset: {test_mapping.end_offset}") print(f"Output Actions: {len(test_mapping.output_actions)}") print(f"Input Actions: {len(test_mapping.input_actions)}") print(f"Legacy Actions: {len(test_mapping.actions)}") if test_mapping.output_actions: print("\nFirst Output Action:") action = test_mapping.output_actions[0] print(f" Action: {action.action}") print(f" Parameters: {len(action.parameters)}") for param in action.parameters: print(f" - {param.name} = {param.value}") print(f"\n{'='*70}") print("COMPARISON:") print(f"{'='*70}") if working_mapping and test_mapping: print(f"\nWorking has {len(working_mapping.output_actions)} output actions") print(f"Test has {len(test_mapping.output_actions)} output actions") print(f"\nWorking has {len(working_mapping.input_actions)} input actions") print(f"Test has {len(test_mapping.input_actions)} input actions") if working_mapping.output_actions and test_mapping.output_actions: w_action = working_mapping.output_actions[0] t_action = test_mapping.output_actions[0] print(f"\nWorking action has {len(w_action.parameters)} parameters") print(f"Test action has {len(t_action.parameters)} parameters") print(f"\n{'='*70}") if __name__ == "__main__": try: compare_structures() except Exception as e: print(f"ERROR: {e}") import traceback traceback.print_exc()