Skip to content

Commit 1b21f05

Browse files
Merge pull request #3 from dexhunter/feat/configurable_log_dir
feat: Make log-dir configurable
2 parents 6c2261d + 52e01f3 commit 1b21f05

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

weco/cli.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ def main() -> None:
5050
)
5151
parser.add_argument("--steps", type=int, required=True, help="Number of steps to run")
5252
parser.add_argument("--model", type=str, required=True, help="Model to use for optimization")
53+
parser.add_argument(
54+
"--log-dir", type=str, default=".runs", help="Directory to store logs and results"
55+
)
5356
parser.add_argument(
5457
"--additional-instructions",
5558
default=None,
@@ -83,7 +86,13 @@ def main() -> None:
8386
timeout = 800
8487

8588
# Initialize panels
86-
summary_panel = SummaryPanel(maximize=maximize, metric_name=metric_name, total_steps=steps, model=args.model)
89+
summary_panel = SummaryPanel(
90+
maximize=maximize,
91+
metric_name=metric_name,
92+
total_steps=steps,
93+
model=args.model,
94+
runs_dir=args.log_dir,
95+
)
8796
plan_panel = PlanPanel()
8897
solution_panels = SolutionPanels(metric_name=metric_name)
8998
eval_output_panel = EvaluationOutputPanel()
@@ -112,7 +121,7 @@ def main() -> None:
112121
with Live(layout, refresh_per_second=refresh_rate, screen=True) as live:
113122
# Define the runs directory (.runs/<session-id>)
114123
session_id = session_response["session_id"]
115-
runs_dir = pathlib.Path(".runs") / session_id
124+
runs_dir = pathlib.Path(args.log_dir) / session_id
116125
runs_dir.mkdir(parents=True, exist_ok=True)
117126

118127
# Save the original code (.runs/<session-id>/original.py)

weco/panels.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,16 @@
1111
class SummaryPanel:
1212
"""Holds a summary of the optimization session."""
1313

14-
def __init__(self, maximize: bool, metric_name: str, total_steps: int, model: str, session_id: str = None):
14+
def __init__(self, maximize: bool, metric_name: str, total_steps: int, model: str, runs_dir: str, session_id: str = None):
1515
self.maximize = maximize
1616
self.metric_name = metric_name
1717
self.goal = ("Maximizing" if self.maximize else "Minimizing") + f" {self.metric_name}..."
1818
self.total_input_tokens = 0
1919
self.total_output_tokens = 0
2020
self.total_steps = total_steps
2121
self.model = model
22-
self.session_id = session_id or "N/A"
22+
self.runs_dir = runs_dir
23+
self.session_id = session_id if session_id is not None else "N/A"
2324
self.progress = Progress(
2425
TextColumn("[progress.description]{task.description}"),
2526
BarColumn(bar_width=20),
@@ -55,8 +56,7 @@ def get_display(self, final_message: Optional[str] = None) -> Panel:
5556
summary_table.add_row(f"[bold cyan]Model:[/] {self.model}")
5657
summary_table.add_row("")
5758
# Log directory
58-
runs_dir = f".runs/{self.session_id}"
59-
summary_table.add_row(f"[bold cyan]Logs:[/] [blue underline]{runs_dir}[/]")
59+
summary_table.add_row(f"[bold cyan]Logs:[/] [blue underline]{self.runs_dir}/{self.session_id}[/]")
6060
summary_table.add_row("")
6161
# Token counts
6262
summary_table.add_row(

0 commit comments

Comments
 (0)