| """ |
| Stub for core.parser module to satisfy imports. |
| Since parser flow is ignored, providing minimal implementation. |
| """ |
| |
| import json |
| import re |
| |
| |
| def tidy_json(json_string: str) -> str: |
| """ |
| Clean up JSON string to make it parseable. |
| Simple implementation to satisfy the import requirement. |
| """ |
| if not isinstance(json_string, str): |
| return "{}" |
| |
| # Remove markdown code blocks |
| json_string = re.sub(r"```(?:json)?", "", json_string, flags=re.IGNORECASE) |
| |
| # Remove leading "json" labels |
| json_string = re.sub(r"^\s*json\s*\n", "", json_string, flags=re.IGNORECASE | re.MULTILINE) |
| |
| # Strip whitespace |
| json_string = json_string.strip() |
| |
| # If empty, return empty object |
| if not json_string: |
| return "{}" |
| |
| # Try to fix common JSON issues |
| try: |
| # Test if it's already valid JSON |
| json.loads(json_string) |
| return json_string |
| except json.JSONDecodeError: |
| # Basic cleanup attempts |
| |
| # Fix single quotes to double quotes |
| json_string = re.sub(r"'([^']*)':", r'"\1":', json_string) |
| json_string = re.sub(r":\s*'([^']*)'", r': "\1"', json_string) |
| |
| # Ensure it starts and ends with braces |
| json_string = json_string.strip() |
| if not json_string.startswith('{'): |
| json_string = '{' + json_string |
| if not json_string.endswith('}'): |
| json_string = json_string + '}' |
| |
| return json_string |
| |
| |
| def parse_nl_input(query: str, retries: int = 3, temperature: float = 0.0) -> dict: |
| """ |
| Stub for natural language parsing. |
| Returns a basic structure for testing. |
| """ |
| return { |
| "model_name": "parsed_model", |
| "description": f"Parsed from: {query[:50]}...", |
| "parameters": { |
| "param1": {"type": "float", "default": 1.0}, |
| "param2": {"type": "float", "default": 0.5} |
| } |
| } |