Skip to content

Commit a34a86f

Browse files
committed
Refactor is_provided into helpers.py.
1 parent 577145f commit a34a86f

3 files changed

Lines changed: 31 additions & 31 deletions

File tree

aider/tools/insert_block.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
format_tool_result,
1010
generate_unified_diff_snippet,
1111
handle_tool_error,
12+
is_provided,
1213
select_occurrence_index,
1314
validate_file_for_edit,
1415
)
@@ -75,14 +76,7 @@ def execute(
7576
tool_name = "InsertBlock"
7677
try:
7778
# 1. Validate parameters
78-
def _is_provided(value):
79-
if value is None:
80-
return False
81-
if isinstance(value, str) and value == "":
82-
return False
83-
return True
84-
85-
if sum(_is_provided(x) for x in [after_pattern, before_pattern, position]) != 1:
79+
if sum(is_provided(x) for x in [after_pattern, before_pattern, position]) != 1:
8680
raise ToolError(
8781
"Must specify exactly one of: after_pattern, before_pattern, or position"
8882
)

aider/tools/show_numbered_context.py

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
import os
22

33
from aider.tools.utils.base_tool import BaseTool
4-
from aider.tools.utils.helpers import ToolError, handle_tool_error, resolve_paths
4+
from aider.tools.utils.helpers import (
5+
ToolError,
6+
handle_tool_error,
7+
is_provided,
8+
resolve_paths,
9+
)
510

611

712
class Tool(BaseTool):
@@ -34,22 +39,15 @@ def execute(cls, coder, file_path, pattern=None, line_number=None, context_lines
3439
tool_name = "ShowNumberedContext"
3540
try:
3641
# 1. Validate arguments
37-
def _is_provided(value):
38-
if value is None:
39-
return False
40-
if isinstance(value, str) and value == "":
41-
return False
42-
if isinstance(value, (int, float)) and value == 0:
43-
return False
44-
return True
45-
46-
provided_counts = [_is_provided(x) for x in [pattern, line_number]]
47-
if sum(provided_counts) != 1:
42+
pattern_provided = is_provided(pattern)
43+
line_number_provided = is_provided(line_number, treat_zero_as_missing=True)
44+
45+
if sum([pattern_provided, line_number_provided]) != 1:
4846
raise ToolError("Provide exactly one of 'pattern' or 'line_number'.")
4947

50-
if not provided_counts[0]:
48+
if not pattern_provided:
5149
pattern = None
52-
if not provided_counts[1]:
50+
if not line_number_provided:
5351
line_number = None
5452

5553
# 2. Resolve path

aider/tools/utils/helpers.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,21 @@ class ToolError(Exception):
1010
pass
1111

1212

13+
def is_provided(value, *, treat_zero_as_missing=False):
14+
"""
15+
Normalizes parameter presence checks across tools.
16+
17+
Returns True when the value should be considered user-provided.
18+
"""
19+
if value is None:
20+
return False
21+
if isinstance(value, str) and value == "":
22+
return False
23+
if treat_zero_as_missing and isinstance(value, (int, float)) and value == 0:
24+
return False
25+
return True
26+
27+
1328
def resolve_paths(coder, file_path):
1429
"""Resolves absolute and relative paths for a given file path."""
1530
try:
@@ -106,17 +121,10 @@ def determine_line_range(
106121
Raises ToolError if end_pattern is not found or line_count is invalid.
107122
"""
108123

109-
def _is_provided(value):
110-
if value is None:
111-
return False
112-
if isinstance(value, str) and value == "":
113-
return False
114-
return True
115-
116124
# Parameter validation: Ensure only one targeting method is used
117125
targeting_methods = [
118-
_is_provided(target_symbol),
119-
_is_provided(start_pattern_line_index),
126+
is_provided(target_symbol),
127+
is_provided(start_pattern_line_index),
120128
# Note: line_count and end_pattern depend on start_pattern_line_index
121129
]
122130
if sum(targeting_methods) > 1:

0 commit comments

Comments
 (0)