Python supercharged for fastai development
56
Build a command-line tool that searches through a codebase directory to find and analyze Python files based on various criteria. The tool should support filtering by file patterns, searching for specific content within files, and generating reports about the files found.
Create a function find_python_files(root_dir, file_pattern=None, exclude_dirs=None) that:
root_dir to find Python files"test_*.py", "*_helper.py")[".git", "__pycache__", "venv"])Create a function search_in_files(file_paths, pattern, use_regex=False) that:
use_regex flagCreate a function generate_file_stats(file_paths) that:
"total_files", "total_size", "largest_file"Create a function create_report(stats, matches) that:
Provides enhanced file and path operations for efficient directory traversal and file searching.
Setup: Create a test directory structure:
test_project/
├── main.py
├── utils/
│ ├── helper.py
│ └── test_helper.py
└── __pycache__/
└── main.cpython-39.pycTest:
# test_file_search.py
from file_search_tool import find_python_files
def test_basic_file_discovery():
files = find_python_files("test_project", exclude_dirs=["__pycache__"])
assert len(files) == 3
assert any("main.py" in str(f) for f in files)
assert any("helper.py" in str(f) for f in files)
assert any("test_helper.py" in str(f) for f in files)Test:
# test_file_search.py
from file_search_tool import find_python_files
def test_pattern_filtering():
files = find_python_files("test_project", file_pattern="test_*.py", exclude_dirs=["__pycache__"])
assert len(files) == 1
assert any("test_helper.py" in str(f) for f in files)Setup: Assume test_project/main.py contains:
def calculate(x, y):
return x + y
result = calculate(5, 3)Test:
# test_file_search.py
from file_search_tool import search_in_files, find_python_files
def test_content_search():
files = find_python_files("test_project", exclude_dirs=["__pycache__"])
matches = search_in_files(files, "calculate")
assert len(matches) > 0
# At least one file should contain "calculate"
assert any(len(line_nums) > 0 for line_nums in matches.values())Test:
# test_file_search.py
from file_search_tool import find_python_files, generate_file_stats
def test_file_statistics():
files = find_python_files("test_project", exclude_dirs=["__pycache__"])
stats = generate_file_stats(files)
assert stats["total_files"] == 3
assert stats["total_size"] > 0
assert "largest_file" in statsfile_search_tool.py containing all required functionstest_file_search.py with the test cases aboveInstall with Tessl CLI
npx tessl i tessl/pypi-fastcoredocs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10