Download code_interpreters/languages/applescript.py from aiflows/InterpreterFlowModule: direct link, hf CLI and curl.
- Browser
- Download file 1.94 kB
-
https://huggingface.co/aiflows/InterpreterFlowModule/resolve/f5ba9f9afc5a4b5f9cc00ef80230b60bcc8bd9cc/code_interpreters/languages/applescript.py
- Command line
-
hf download hf://aiflows/InterpreterFlowModule@f5ba9f9afc5a4b5f9cc00ef80230b60bcc8bd9cc/code_interpreters/languages/applescript.py
-
curl -L -o applescript.py https://huggingface.co/aiflows/InterpreterFlowModule/resolve/f5ba9f9afc5a4b5f9cc00ef80230b60bcc8bd9cc/code_interpreters/languages/applescript.py
1.94 kB
| import os | |
| from ..subprocess_code_interpreter import SubprocessCodeInterpreter | |
| class AppleScript(SubprocessCodeInterpreter): | |
| file_extension = "applescript" | |
| proper_name = "AppleScript" | |
| def __init__(self): | |
| super().__init__() | |
| self.start_cmd = os.environ.get('SHELL', '/bin/zsh') | |
| def preprocess_code(self, code): | |
| """ | |
| Inserts an end_of_execution marker and adds active line indicators. | |
| """ | |
| # Add active line indicators to the code | |
| code = self.add_active_line_indicators(code) | |
| # Escape double quotes | |
| code = code.replace('"', r'\"') | |
| # Wrap in double quotes | |
| code = '"' + code + '"' | |
| # Prepend start command for AppleScript | |
| code = "osascript -e " + code | |
| # Append end of execution indicator | |
| code += '; echo "## end_of_execution ##"' | |
| return code | |
| def add_active_line_indicators(self, code): | |
| """ | |
| Adds log commands to indicate the active line of execution in the AppleScript. | |
| """ | |
| modified_lines = [] | |
| lines = code.split('\n') | |
| for idx, line in enumerate(lines): | |
| # Add log command to indicate the line number | |
| if line.strip(): # Only add if line is not empty | |
| modified_lines.append(f'log "## active_line {idx + 1} ##"') | |
| modified_lines.append(line) | |
| return '\n'.join(modified_lines) | |
| def detect_active_line(self, line): | |
| """ | |
| Detects active line indicator in the output. | |
| """ | |
| prefix = "## active_line " | |
| if prefix in line: | |
| try: | |
| return int(line.split(prefix)[1].split()[0]) | |
| except: | |
| pass | |
| return None | |
| def detect_end_of_execution(self, line): | |
| """ | |
| Detects end of execution marker in the output. | |
| """ | |
| return "## end_of_execution ##" in line |