diff --git a/src/lib/components/chat/Messages/CodeBlock.svelte b/src/lib/components/chat/Messages/CodeBlock.svelte
index 91b4dc79d..a488b7f05 100644
--- a/src/lib/components/chat/Messages/CodeBlock.svelte
+++ b/src/lib/components/chat/Messages/CodeBlock.svelte
@@ -21,6 +21,116 @@
}, 1000);
};
+ const checkPythonCode = (str) => {
+ // Check if the string contains typical Python keywords, syntax, or functions
+ const pythonKeywords = [
+ 'def',
+ 'class',
+ 'import',
+ 'from',
+ 'if',
+ 'else',
+ 'elif',
+ 'for',
+ 'while',
+ 'try',
+ 'except',
+ 'finally',
+ 'return',
+ 'yield',
+ 'lambda',
+ 'assert',
+ 'pass',
+ 'break',
+ 'continue',
+ 'global',
+ 'nonlocal',
+ 'del',
+ 'True',
+ 'False',
+ 'None',
+ 'and',
+ 'or',
+ 'not',
+ 'in',
+ 'is',
+ 'as',
+ 'with'
+ ];
+
+ for (let keyword of pythonKeywords) {
+ if (str.includes(keyword)) {
+ return true;
+ }
+ }
+
+ // Check if the string contains typical Python syntax characters
+ const pythonSyntax = [
+ 'def ',
+ 'class ',
+ 'import ',
+ 'from ',
+ 'if ',
+ 'else:',
+ 'elif ',
+ 'for ',
+ 'while ',
+ 'try:',
+ 'except:',
+ 'finally:',
+ 'return ',
+ 'yield ',
+ 'lambda ',
+ 'assert ',
+ 'pass',
+ 'break',
+ 'continue',
+ 'global ',
+ 'nonlocal ',
+ 'del ',
+ 'True',
+ 'False',
+ 'None',
+ ' and ',
+ ' or ',
+ ' not ',
+ ' in ',
+ ' is ',
+ ' as ',
+ ' with ',
+ ':',
+ '=',
+ '==',
+ '!=',
+ '>',
+ '<',
+ '>=',
+ '<=',
+ '+',
+ '-',
+ '*',
+ '/',
+ '%',
+ '**',
+ '//',
+ '(',
+ ')',
+ '[',
+ ']',
+ '{',
+ '}'
+ ];
+
+ for (let syntax of pythonSyntax) {
+ if (str.includes(syntax)) {
+ return true;
+ }
+ }
+
+ // If none of the above conditions met, it's probably not Python code
+ return false;
+ };
+
const executePython = async (text) => {
executed = true;
@@ -31,9 +141,15 @@
outputDiv.innerText = 'Running...';
}
+ text = text
+ .split('\n')
+ .map((line, index) => (index === 0 ? line : ' ' + line))
+ .join('\n');
+
// pyscript
let div = document.createElement('div');
- let html = `