improve: exract Code Node provider for each supported scripting language (#4164)
parent
de3a7603ac
commit
083ef2e6fc
@ -0,0 +1,55 @@
|
|||||||
|
from abc import abstractmethod
|
||||||
|
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
from core.helper.code_executor.code_executor import CodeExecutor
|
||||||
|
|
||||||
|
|
||||||
|
class CodeNodeProvider(BaseModel):
|
||||||
|
@staticmethod
|
||||||
|
@abstractmethod
|
||||||
|
def get_language() -> str:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def is_accept_language(cls, language: str) -> bool:
|
||||||
|
return language == cls.get_language()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@abstractmethod
|
||||||
|
def get_default_code(cls) -> str:
|
||||||
|
"""
|
||||||
|
get default code in specific programming language for the code node
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default_available_packages(cls) -> list[dict]:
|
||||||
|
return [p.dict() for p in CodeExecutor.list_dependencies(cls.get_language())]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default_config(cls) -> dict:
|
||||||
|
return {
|
||||||
|
"type": "code",
|
||||||
|
"config": {
|
||||||
|
"variables": [
|
||||||
|
{
|
||||||
|
"variable": "arg1",
|
||||||
|
"value_selector": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"variable": "arg2",
|
||||||
|
"value_selector": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"code_language": cls.get_language(),
|
||||||
|
"code": cls.get_default_code(),
|
||||||
|
"outputs": {
|
||||||
|
"result": {
|
||||||
|
"type": "string",
|
||||||
|
"children": None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"available_dependencies": cls.get_default_available_packages(),
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
from textwrap import dedent
|
||||||
|
|
||||||
|
from core.helper.code_executor.code_executor import CodeLanguage
|
||||||
|
from core.helper.code_executor.code_node_provider import CodeNodeProvider
|
||||||
|
|
||||||
|
|
||||||
|
class JavascriptCodeProvider(CodeNodeProvider):
|
||||||
|
@staticmethod
|
||||||
|
def get_language() -> str:
|
||||||
|
return CodeLanguage.JAVASCRIPT
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default_code(cls) -> str:
|
||||||
|
return dedent(
|
||||||
|
"""
|
||||||
|
function main({arg1, arg2}) {
|
||||||
|
return {
|
||||||
|
result: arg1 + arg2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
""")
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
from textwrap import dedent
|
||||||
|
|
||||||
|
from core.helper.code_executor.code_executor import CodeLanguage
|
||||||
|
from core.helper.code_executor.code_node_provider import CodeNodeProvider
|
||||||
|
|
||||||
|
|
||||||
|
class Python3CodeProvider(CodeNodeProvider):
|
||||||
|
@staticmethod
|
||||||
|
def get_language() -> str:
|
||||||
|
return CodeLanguage.PYTHON3
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default_code(cls) -> str:
|
||||||
|
return dedent(
|
||||||
|
"""
|
||||||
|
def main(arg1: int, arg2: int) -> dict:
|
||||||
|
return {
|
||||||
|
"result": arg1 + arg2,
|
||||||
|
}
|
||||||
|
""")
|
||||||
Loading…
Reference in New Issue