| from pathlib import Path | |
| # Helper function to get path to root directory | |
| def get_root_directory(anchor_files: str | list[str] = [".git", "Readme.md", "requirements.txt"]) -> Path: | |
| # Standardize inputs to list[str] | |
| if isinstance(anchor_files, str): | |
| anchor_files = [anchor_files] | |
| # Get absolute path to current file | |
| file_path = Path(__file__).resolve() | |
| # Iterate over each parent directory | |
| for parent in file_path.parents: | |
| # Iterate over each anchor file | |
| for anchor_file in anchor_files: | |
| # Check if anchor file exists in parent directory | |
| if (parent / anchor_file).exists(): | |
| # Return the parent directory in which the anchor file was found, i.e. the root directory | |
| return parent | |
| raise FileNotFoundError(f"Root directory not found: None of the anchor files '{anchor_files}' were found in any parent directory.") | |