feat: Initial Commit
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def json_string_to_py(json_text: str, output_file: str = "generated.py"):
|
||||
"""
|
||||
Convert an AI response containing:
|
||||
{
|
||||
"file_name": "...",
|
||||
"script": "..."
|
||||
}
|
||||
|
||||
into a valid Python .py file.
|
||||
"""
|
||||
|
||||
# Parse the JSON response
|
||||
data = json.loads(json_text)
|
||||
|
||||
# Validate that the script exists
|
||||
if "script" not in data:
|
||||
raise ValueError("JSON does not contain a 'script' field.")
|
||||
|
||||
script = data["script"]
|
||||
|
||||
if not isinstance(script, str):
|
||||
raise TypeError("'script' must be a string.")
|
||||
|
||||
# Write the Python source code exactly as provided
|
||||
output_path = Path("builders/" + output_file)
|
||||
output_path.write_text(script, encoding="utf-8")
|
||||
|
||||
print(f"Created: {output_path.resolve()}")
|
||||
|
||||
return output_path
|
||||
|
||||
|
||||
# Example usage
|
||||
if __name__ == "__main__":
|
||||
|
||||
ai_response = r'''
|
||||
{
|
||||
"file_name": "small_oak_tree",
|
||||
"script": "import random\n\nSEED = 42\nrandom.seed(SEED)\n\nprint(\"Hello, World!\")"
|
||||
}
|
||||
'''
|
||||
|
||||
data = json.loads(ai_response)
|
||||
|
||||
# Prefer the AI-provided filename
|
||||
filename = data.get("file_name", "generated")
|
||||
output_file = f"{filename}.py"
|
||||
|
||||
json_string_to_py(ai_response, output_file)
|
||||
Reference in New Issue
Block a user