Skip to content

Commit 7fa9d3d

Browse files
committed
Update examples
1 parent e0fa679 commit 7fa9d3d

File tree

2 files changed

+134
-137
lines changed

2 files changed

+134
-137
lines changed

Diff for: bindings/ceylon/tests/tasks/llm_software_agency.py

+17-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
description=dedent("""
1414
Develop a advanced task management application with features for adding, listing, and completing tasks.
1515
and with priority from list.also need to download list of tasks by date.and need to check finished tasks
16-
no need to use DB. only UI base output is enough. final output must be python script.
16+
This must be a standalone GUI app source code.
1717
""")
1818
)
1919

@@ -49,6 +49,22 @@
4949
tools=[],
5050
llm=code_llm
5151
),
52+
LLMTaskOperator(
53+
name="qa",
54+
role="QA Engineer",
55+
context="Experienced in testing and troubleshooting Python applications.",
56+
skills=[
57+
"Unit Testing",
58+
"Functional Testing",
59+
"Integration Testing",
60+
"End-to-End Testing",
61+
"Security Testing",
62+
"Performance Testing",
63+
"API Testing",
64+
],
65+
tools=[],
66+
llm=code_llm
67+
),
5268
AgentMonitor()
5369
]
5470
# enable_log("INFO")

Diff for: bindings/ceylon/tests/tasks/sample_game.py

+117-136
Original file line numberDiff line numberDiff line change
@@ -1,173 +1,154 @@
11
import tkinter as tk
2-
from tkinter import messagebox, END, filedialog
3-
import csv
2+
from tkinter import messagebox, simpledialog, filedialog
3+
from tkinter import ttk
44
from datetime import datetime
5-
5+
import csv
66

77
class Task:
8-
def __init__(self, description, date):
8+
def __init__(self, title, description, due_date, priority):
9+
self.title = title
910
self.description = description
11+
self.due_date = due_date
12+
self.priority = priority
1013
self.completed = False
11-
self.date = date # New date attribute
12-
13-
14-
class TaskManager:
15-
def __init__(self):
16-
self.tasks = []
17-
18-
def add_task(self, description, date):
19-
task = Task(description, date)
20-
self.tasks.append(task)
21-
22-
def complete_task(self, index):
23-
if 0 <= index < len(self.tasks):
24-
self.tasks[index].completed = True
25-
return self.tasks[index].description
26-
return None
27-
28-
def delete_task(self, index):
29-
if 0 <= index < len(self.tasks):
30-
return self.tasks.pop(index).description
31-
return None
32-
33-
def get_task_list(self):
34-
return [(task.description, task.completed, task.date) for task in self.tasks]
35-
36-
def get_finished_tasks(self):
37-
return [(task.description, task.completed, task.date) for task in self.tasks if task.completed]
38-
39-
def get_tasks_filtered_by_date(self, filter_date):
40-
return [(task.description, task.completed, task.date) for task in self.tasks if task.date == filter_date]
4114

15+
def __str__(self):
16+
status = "Completed" if self.completed else "Pending"
17+
return f"{self.title} - Due: {self.due_date} - Priority: {self.priority} - Status: {status}"
4218

4319
class TaskManagerApp:
44-
def __init__(self, master):
45-
self.master = master
46-
self.task_manager = TaskManager()
47-
master.title("Task Management Application")
20+
def __init__(self, root):
21+
self.root = root
22+
self.root.title("Task Manager")
4823

49-
# Task Entry Section
50-
self.task_label = tk.Label(master, text="Enter Task:")
51-
self.task_label.pack()
24+
self.tasks = [] # List to store Task objects
5225

53-
self.task_entry = tk.Entry(master, width=50)
54-
self.task_entry.pack()
26+
# Menu Bar
27+
self.menu_bar = tk.Menu(self.root)
28+
self.root.config(menu=self.menu_bar)
5529

56-
self.date_label = tk.Label(master, text="Enter Date (YYYY-MM-DD):")
57-
self.date_label.pack()
30+
# Task List Frame
31+
self.frame_task_list = tk.Frame(self.root)
32+
self.frame_task_list.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
5833

59-
self.date_entry = tk.Entry(master, width=50)
60-
self.date_entry.pack()
34+
self.task_listbox = tk.Listbox(self.frame_task_list, selectmode=tk.SINGLE)
35+
self.task_listbox.pack(fill=tk.BOTH, expand=True)
6136

62-
self.add_task_button = tk.Button(master, text="Add Task", command=self.add_task)
63-
self.add_task_button.pack()
37+
# Buttons
38+
self.button_frame = tk.Frame(self.frame_task_list)
39+
self.button_frame.pack()
6440

65-
# Task List Section
66-
self.task_listbox = tk.Listbox(master, width=50, height=10)
67-
self.task_listbox.pack()
41+
tk.Button(self.button_frame, text="Add Task", command=self.add_task).pack(side=tk.LEFT)
42+
tk.Button(self.button_frame, text="Edit Task", command=self.edit_task).pack(side=tk.LEFT)
43+
tk.Button(self.button_frame, text="Delete Task", command=self.delete_task).pack(side=tk.LEFT)
44+
tk.Button(self.button_frame, text="Complete Task", command=self.complete_task).pack(side=tk.LEFT)
45+
tk.Button(self.button_frame, text="Download Tasks", command=self.download_tasks).pack(side=tk.LEFT) # New button
6846

69-
self.complete_task_button = tk.Button(master, text="Complete Task", command=self.complete_task)
70-
self.complete_task_button.pack()
47+
# Task Details Frame
48+
self.frame_task_details = tk.Frame(self.root)
49+
self.frame_task_details.pack(side=tk.RIGHT, fill=tk.BOTH, expand=True)
7150

72-
self.delete_task_button = tk.Button(master, text="Delete Task", command=self.delete_task)
73-
self.delete_task_button.pack()
51+
tk.Label(self.frame_task_details, text="Title:").pack()
52+
self.entry_title = tk.Entry(self.frame_task_details)
53+
self.entry_title.pack()
7454

75-
# Download Section
76-
self.download_button = tk.Button(master, text="Download Tasks", command=self.download_tasks)
77-
self.download_button.pack()
55+
tk.Label(self.frame_task_details, text="Description:").pack()
56+
self.text_description = tk.Text(self.frame_task_details, height=5)
57+
self.text_description.pack()
7858

79-
# Finished Tasks Section
80-
self.view_finished_tasks_button = tk.Button(master, text="View Finished Tasks",
81-
command=self.view_finished_tasks)
82-
self.view_finished_tasks_button.pack()
59+
tk.Label(self.frame_task_details, text="Due Date (YYYY-MM-DD):").pack()
60+
self.entry_due_date = tk.Entry(self.frame_task_details)
61+
self.entry_due_date.pack()
8362

84-
# Status Section
85-
self.status_label = tk.Label(master, text="", fg="green")
86-
self.status_label.pack()
63+
tk.Label(self.frame_task_details, text="Priority:").pack()
64+
self.priority_var = tk.StringVar(value="Medium")
65+
priority_options = ["Low", "Medium", "High"]
66+
self.priority_menu = ttk.Combobox(self.frame_task_details, textvariable=self.priority_var, values=priority_options)
67+
self.priority_menu.pack()
68+
69+
tk.Button(self.frame_task_details, text="Save Task", command=self.save_task).pack()
8770

8871
def add_task(self):
89-
task = self.task_entry.get()
90-
date_str = self.date_entry.get()
91-
if task and self.validate_date(date_str):
92-
self.task_manager.add_task(task, date_str)
93-
self.task_entry.delete(0, END)
94-
self.date_entry.delete(0, END)
72+
self.clear_task_details()
73+
self.entry_title.focus()
74+
75+
def edit_task(self):
76+
selected_task_index = self.task_listbox.curselection()
77+
if selected_task_index:
78+
task = self.tasks[selected_task_index[0]]
79+
self.entry_title.delete(0, tk.END)
80+
self.entry_title.insert(0, task.title)
81+
self.text_description.delete("1.0", tk.END)
82+
self.text_description.insert("1.0", task.description)
83+
self.entry_due_date.delete(0, tk.END)
84+
self.entry_due_date.insert(0, task.due_date)
85+
self.priority_var.set(task.priority)
86+
87+
def delete_task(self):
88+
selected_task_index = self.task_listbox.curselection()
89+
if selected_task_index:
90+
del self.tasks[selected_task_index[0]]
9591
self.update_task_listbox()
96-
self.update_status("Task added!")
97-
else:
98-
self.update_status("Please enter a valid task and date.")
9992

10093
def complete_task(self):
101-
try:
102-
selected_task_index = self.task_listbox.curselection()[0]
103-
completed_task = self.task_manager.complete_task(selected_task_index)
104-
if completed_task:
105-
self.update_task_listbox()
106-
self.update_status(f"Task '{completed_task}' completed!")
107-
else:
108-
self.update_status("Error completing task.")
109-
except IndexError:
110-
self.update_status("Please select a task to complete.")
94+
selected_task_index = self.task_listbox.curselection()
95+
if selected_task_index:
96+
task = self.tasks[selected_task_index[0]]
97+
task.completed = True
98+
self.update_task_listbox()
11199

112-
def delete_task(self):
113-
try:
114-
selected_task_index = self.task_listbox.curselection()[0]
115-
deleted_task = self.task_manager.delete_task(selected_task_index)
116-
if deleted_task:
100+
def save_task(self):
101+
title = self.entry_title.get()
102+
description = self.text_description.get("1.0", tk.END).strip()
103+
due_date = self.entry_due_date.get()
104+
priority = self.priority_var.get()
105+
106+
if title and due_date:
107+
try:
108+
# Validate the date format
109+
datetime.strptime(due_date, '%Y-%m-%d')
110+
task = Task(title, description, due_date, priority)
111+
self.tasks.append(task)
117112
self.update_task_listbox()
118-
self.update_status(f"Task '{deleted_task}' deleted!")
119-
else:
120-
self.update_status("Error deleting task.")
121-
except IndexError:
122-
self.update_status("Please select a task to delete.")
123-
124-
def download_tasks(self):
125-
filter_date = self.date_entry.get()
126-
if self.validate_date(filter_date):
127-
tasks_to_download = self.task_manager.get_tasks_filtered_by_date(filter_date)
128-
if tasks_to_download:
129-
file_path = filedialog.asksaveasfilename(defaultextension=".csv", filetypes=[("CSV files", "*.csv")])
130-
if file_path:
131-
with open(file_path, mode='w', newline='') as file:
132-
writer = csv.writer(file)
133-
writer.writerow(["Task Description", "Completed", "Date"])
134-
for task_desc, completed, date in tasks_to_download:
135-
writer.writerow([task_desc, completed, date])
136-
self.update_status("Tasks downloaded successfully!")
137-
else:
138-
self.update_status("Download cancelled.")
139-
else:
140-
self.update_status("No tasks found for this date.")
113+
self.clear_task_details()
114+
messagebox.showinfo("Info", "Task saved successfully!")
115+
except ValueError:
116+
messagebox.showerror("Error", "Invalid date format. Please use YYYY-MM-DD.")
141117
else:
142-
self.update_status("Please enter a valid date (YYYY-MM-DD).")
143-
144-
def view_finished_tasks(self):
145-
finished_tasks = self.task_manager.get_finished_tasks()
146-
self.task_listbox.delete(0, END)
147-
if finished_tasks:
148-
for task_description, completed, date in finished_tasks:
149-
self.task_listbox.insert(END, f"✔️ {task_description} (Date: {date})")
150-
else:
151-
self.task_listbox.insert(END, "No finished tasks.")
118+
messagebox.showwarning("Warning", "Title and Due Date are required.")
152119

153-
def validate_date(self, date_str):
154-
try:
155-
datetime.strptime(date_str, '%Y-%m-%d')
156-
return True
157-
except ValueError:
158-
return False
120+
def clear_task_details(self):
121+
self.entry_title.delete(0, tk.END)
122+
self.text_description.delete("1.0", tk.END)
123+
self.entry_due_date.delete(0, tk.END)
124+
self.priority_var.set("Medium")
159125

160126
def update_task_listbox(self):
161-
self.task_listbox.delete(0, END)
162-
for task_description, completed, date in self.task_manager.get_task_list():
163-
status = "✔️" if completed else "❌"
164-
self.task_listbox.insert(END, f"{status} {task_description} (Date: {date})")
127+
# Sort tasks by priority before updating the listbox
128+
priority_order = {"High": 1, "Medium": 2, "Low": 3}
129+
self.tasks.sort(key=lambda x: priority_order[x.priority]) # Sort by priority
165130

166-
def update_status(self, message):
167-
self.status_label.config(text=message)
131+
self.task_listbox.delete(0, tk.END)
132+
for task in self.tasks:
133+
self.task_listbox.insert(tk.END, str(task))
168134

135+
def download_tasks(self):
136+
# Open a file dialog to choose the save location
137+
file_path = filedialog.asksaveasfilename(defaultextension=".csv",
138+
filetypes=[("CSV files", "*.csv"), ("All files", "*.*")])
139+
if file_path:
140+
try:
141+
with open(file_path, mode='w', newline='') as file:
142+
writer = csv.writer(file)
143+
# Write the header
144+
writer.writerow(["Title", "Description", "Due Date", "Priority", "Status"])
145+
for task in self.tasks:
146+
writer.writerow([task.title, task.description, task.due_date, task.priority, "Completed" if task.completed else "Pending"])
147+
messagebox.showinfo("Success", "Tasks downloaded successfully!")
148+
except Exception as e:
149+
messagebox.showerror("Error", f"Failed to download tasks: {e}")
169150

170151
if __name__ == "__main__":
171152
root = tk.Tk()
172153
app = TaskManagerApp(root)
173-
root.mainloop()
154+
root.mainloop()

0 commit comments

Comments
 (0)