Initial commit
This commit is contained in:
36
skills/code-execution/examples/extract_functions.py
Normal file
36
skills/code-execution/examples/extract_functions.py
Normal file
@@ -0,0 +1,36 @@
|
||||
"""
|
||||
Example: Extract Functions to New File
|
||||
|
||||
Shows how to find and move functions to a separate file
|
||||
with minimal token usage.
|
||||
"""
|
||||
|
||||
from api.code_analysis import find_functions
|
||||
from api.filesystem import copy_lines, paste_code, read_file, write_file
|
||||
|
||||
# Find utility functions (returns metadata ONLY, not source code)
|
||||
functions = find_functions('app.py', pattern='.*_util$', regex=True)
|
||||
|
||||
print(f"Found {len(functions)} utility functions")
|
||||
|
||||
# Extract imports from original file
|
||||
content = read_file('app.py')
|
||||
imports = [line for line in content.splitlines()
|
||||
if line.strip().startswith(('import ', 'from '))]
|
||||
|
||||
# Create new utils.py with imports
|
||||
write_file('utils.py', '\\n'.join(set(imports)) + '\\n\\n')
|
||||
|
||||
# Copy each function to utils.py
|
||||
for func in functions:
|
||||
print(f" Moving {func['name']} (lines {func['start_line']}-{func['end_line']})")
|
||||
code = copy_lines('app.py', func['start_line'], func['end_line'])
|
||||
paste_code('utils.py', -1, code + '\\n\\n') # -1 = append to end
|
||||
|
||||
result = {
|
||||
'functions_extracted': len(functions),
|
||||
'function_names': [f['name'] for f in functions]
|
||||
}
|
||||
|
||||
# Token usage: ~800 tokens
|
||||
# vs ~15,000 tokens reading full file into context
|
||||
Reference in New Issue
Block a user