SYMBOL INDEX (926 symbols across 158 files) FILE: examples/code_generator_graph/ollama/code_generator_graph_ollama.py class Project (line 19) | class Project(BaseModel): class Projects (line 24) | class Projects(BaseModel): FILE: examples/code_generator_graph/openai/code_generator_graph_openai.py class Project (line 20) | class Project(BaseModel): class Projects (line 25) | class Projects(BaseModel): FILE: examples/extras/authenticated_playwright.py function do_login (line 28) | async def do_login(): function main (line 48) | async def main(): FILE: examples/extras/chromium_selenium.py function analyze_content_with_scrapegraph (line 20) | async def analyze_content_with_scrapegraph(content: str): function test_scraper_with_analysis (line 53) | async def test_scraper_with_analysis(scraper: ChromiumLoader, urls: list): function main (line 88) | async def main(): FILE: examples/extras/serch_graph_scehma.py class CeoName (line 19) | class CeoName(BaseModel): class Ceos (line 23) | class Ceos(BaseModel): FILE: examples/markdownify/markdownify_scrapegraphai.py function main (line 10) | def main(): FILE: examples/script_generator_graph/openai/script_generator_schema_openai.py class Project (line 21) | class Project(BaseModel): class Projects (line 26) | class Projects(BaseModel): FILE: examples/search_graph/ollama/search_graph_schema_ollama.py class Dish (line 17) | class Dish(BaseModel): class Dishes (line 22) | class Dishes(BaseModel): FILE: examples/search_graph/openai/search_graph_schema_openai.py class Dish (line 21) | class Dish(BaseModel): class Dishes (line 26) | class Dishes(BaseModel): FILE: examples/search_graph/scrapegraphai/searchscraper_scrapegraphai.py function format_response (line 12) | def format_response(response: Dict[str, Any]) -> None: function main (line 52) | def main(): FILE: examples/smart_scraper_graph/ollama/smart_scraper_schema_ollama.py class Project (line 16) | class Project(BaseModel): class Projects (line 21) | class Projects(BaseModel): FILE: examples/smart_scraper_graph/openai/smart_scraper_schema_openai.py class Project (line 20) | class Project(BaseModel): class Projects (line 25) | class Projects(BaseModel): FILE: examples/smart_scraper_graph/scrapegraphai/smartscraper_scrapegraphai.py function main (line 10) | def main(): FILE: scrapegraphai/builders/graph_builder.py class GraphBuilder (line 13) | class GraphBuilder: method __init__ (line 44) | def __init__(self, prompt: str, config: dict): method _create_llm (line 54) | def _create_llm(self, llm_config: dict): method _generate_nodes_description (line 83) | def _generate_nodes_description(self): method _create_extraction_chain (line 99) | def _create_extraction_chain(self): method build_graph (line 126) | def build_graph(self): method convert_json_to_graphviz (line 137) | def convert_json_to_graphviz(json_data, format: str = "pdf"): FILE: scrapegraphai/docloaders/browser_base.py function browser_base_fetch (line 9) | def browser_base_fetch( FILE: scrapegraphai/docloaders/chromium.py class ChromiumLoader (line 14) | class ChromiumLoader(BaseLoader): method __init__ (line 27) | def __init__( method scrape (line 76) | async def scrape(self, url: str) -> str: method ascrape_undetected_chromedriver (line 87) | async def ascrape_undetected_chromedriver(self, url: str) -> str: method ascrape_playwright_scroll (line 166) | async def ascrape_playwright_scroll( method ascrape_playwright (line 323) | async def ascrape_playwright(self, url: str, browser_name: str = "chro... method ascrape_with_js_support (line 382) | async def ascrape_with_js_support( method lazy_load (line 439) | def lazy_load(self) -> Iterator[Document]: method alazy_load (line 460) | async def alazy_load(self) -> AsyncIterator[Document]: FILE: scrapegraphai/docloaders/scrape_do.py function scrape_do_fetch (line 14) | def scrape_do_fetch( FILE: scrapegraphai/graphs/abstract_graph.py class AbstractGraph (line 27) | class AbstractGraph(ABC): method __init__ (line 56) | def __init__( method set_common_params (line 107) | def set_common_params(self, params: dict, overwrite=False): method _create_llm (line 118) | def _create_llm(self, llm_config: dict) -> object: method get_state (line 278) | def get_state(self, key=None) -> dict: method append_node (line 293) | def append_node(self, node): method get_execution_info (line 303) | def get_execution_info(self): method _create_graph (line 314) | def _create_graph(self): method run (line 320) | def run(self) -> str: method run_safe_async (line 329) | async def run_safe_async(self) -> str: FILE: scrapegraphai/graphs/base_graph.py class BaseGraph (line 18) | class BaseGraph: method __init__ (line 56) | def __init__( method _create_edges (line 83) | def _create_edges(self, edges: list) -> dict: method _set_conditional_node_edges (line 100) | def _set_conditional_node_edges(self): method _get_node_by_name (line 126) | def _get_node_by_name(self, node_name: str): method _update_source_info (line 130) | def _update_source_info(self, current_node, state): method _get_model_info (line 157) | def _get_model_info(self, current_node): method _get_schema (line 181) | def _get_schema(self, current_node): method _execute_node (line 198) | def _execute_node(self, current_node, state, llm_model, llm_model_name): method _get_next_node (line 222) | def _get_next_node(self, current_node, result): method _execute_standard (line 236) | def _execute_standard(self, initial_state: dict) -> Tuple[dict, list]: method execute (line 344) | def execute(self, initial_state: dict) -> Tuple[dict, list]: method append_node (line 380) | def append_node(self, node): FILE: scrapegraphai/graphs/code_generator_graph.py class CodeGeneratorGraph (line 22) | class CodeGeneratorGraph(AbstractGraph): method __init__ (line 58) | def __init__( method _create_graph (line 69) | def _create_graph(self) -> BaseGraph: method run (line 170) | def run(self) -> str: FILE: scrapegraphai/graphs/csv_scraper_graph.py class CSVScraperGraph (line 14) | class CSVScraperGraph(AbstractGraph): method __init__ (line 51) | def __init__( method _create_graph (line 65) | def _create_graph(self): method run (line 95) | def run(self) -> str: FILE: scrapegraphai/graphs/csv_scraper_multi_graph.py class CSVScraperMultiGraph (line 17) | class CSVScraperMultiGraph(AbstractGraph): method __init__ (line 45) | def __init__( method _create_graph (line 57) | def _create_graph(self) -> BaseGraph: method run (line 92) | def run(self) -> str: FILE: scrapegraphai/graphs/depth_search_graph.py class DepthSearchGraph (line 20) | class DepthSearchGraph(AbstractGraph): method __init__ (line 56) | def __init__( method _create_graph (line 67) | def _create_graph(self) -> BaseGraph: method run (line 143) | def run(self) -> str: FILE: scrapegraphai/graphs/document_scraper_graph.py class DocumentScraperGraph (line 14) | class DocumentScraperGraph(AbstractGraph): method __init__ (line 46) | def __init__( method _create_graph (line 57) | def _create_graph(self) -> BaseGraph: method run (line 103) | def run(self) -> str: FILE: scrapegraphai/graphs/document_scraper_multi_graph.py class DocumentScraperMultiGraph (line 17) | class DocumentScraperMultiGraph(AbstractGraph): method __init__ (line 45) | def __init__( method _create_graph (line 57) | def _create_graph(self) -> BaseGraph: method run (line 93) | def run(self) -> str: FILE: scrapegraphai/graphs/json_scraper_graph.py class JSONScraperGraph (line 14) | class JSONScraperGraph(AbstractGraph): method __init__ (line 44) | def __init__( method _create_graph (line 55) | def _create_graph(self) -> BaseGraph: method run (line 88) | def run(self) -> str: FILE: scrapegraphai/graphs/json_scraper_multi_graph.py class JSONScraperMultiGraph (line 17) | class JSONScraperMultiGraph(AbstractGraph): method __init__ (line 45) | def __init__( method _create_graph (line 57) | def _create_graph(self) -> BaseGraph: method run (line 93) | def run(self) -> str: FILE: scrapegraphai/graphs/markdownify_graph.py class MarkdownifyGraph (line 14) | class MarkdownifyGraph(BaseGraph): method __init__ (line 37) | def __init__( method execute (line 67) | def execute(self, initial_state: Dict) -> Tuple[Dict, List[Dict]]: FILE: scrapegraphai/graphs/omni_scraper_graph.py class OmniScraperGraph (line 15) | class OmniScraperGraph(AbstractGraph): method __init__ (line 49) | def __init__( method _create_graph (line 62) | def _create_graph(self) -> BaseGraph: method run (line 124) | def run(self) -> str: FILE: scrapegraphai/graphs/omni_search_graph.py class OmniSearchGraph (line 17) | class OmniSearchGraph(AbstractGraph): method __init__ (line 44) | def __init__( method _create_graph (line 55) | def _create_graph(self) -> BaseGraph: method run (line 98) | def run(self) -> str: FILE: scrapegraphai/graphs/screenshot_scraper_graph.py class ScreenshotScraperGraph (line 14) | class ScreenshotScraperGraph(AbstractGraph): method __init__ (line 35) | def __init__( method _create_graph (line 44) | def _create_graph(self) -> BaseGraph: method run (line 71) | def run(self) -> str: FILE: scrapegraphai/graphs/script_creator_graph.py class ScriptCreatorGraph (line 14) | class ScriptCreatorGraph(AbstractGraph): method __init__ (line 46) | def __init__( method _create_graph (line 59) | def _create_graph(self) -> BaseGraph: method run (line 114) | def run(self) -> str: FILE: scrapegraphai/graphs/script_creator_multi_graph.py class ScriptCreatorMultiGraph (line 17) | class ScriptCreatorMultiGraph(AbstractGraph): method __init__ (line 44) | def __init__( method _create_graph (line 55) | def _create_graph(self) -> BaseGraph: method run (line 90) | def run(self) -> str: FILE: scrapegraphai/graphs/search_graph.py class SearchGraph (line 17) | class SearchGraph(AbstractGraph): method __init__ (line 45) | def __init__( method _create_graph (line 56) | def _create_graph(self) -> BaseGraph: method run (line 103) | def run(self) -> str: method get_considered_urls (line 120) | def get_considered_urls(self) -> List[str]: FILE: scrapegraphai/graphs/search_link_graph.py class SearchLinkGraph (line 14) | class SearchLinkGraph(AbstractGraph): method __init__ (line 39) | def __init__( method _create_graph (line 46) | def _create_graph(self) -> BaseGraph: method run (line 92) | def run(self) -> str: FILE: scrapegraphai/graphs/smart_scraper_graph.py class SmartScraperGraph (line 25) | class SmartScraperGraph(AbstractGraph): method __init__ (line 58) | def __init__( method _create_graph (line 72) | def _create_graph(self) -> BaseGraph: method run (line 294) | def run(self) -> str: FILE: scrapegraphai/graphs/smart_scraper_lite_graph.py class SmartScraperLiteGraph (line 14) | class SmartScraperLiteGraph(AbstractGraph): method __init__ (line 42) | def __init__( method _create_graph (line 53) | def _create_graph(self) -> BaseGraph: method run (line 92) | def run(self) -> str: FILE: scrapegraphai/graphs/smart_scraper_multi_concat_graph.py class SmartScraperMultiConcatGraph (line 22) | class SmartScraperMultiConcatGraph(AbstractGraph): method __init__ (line 49) | def __init__( method _create_graph (line 61) | def _create_graph(self) -> BaseGraph: method run (line 117) | def run(self) -> str: FILE: scrapegraphai/graphs/smart_scraper_multi_graph.py class SmartScraperMultiGraph (line 17) | class SmartScraperMultiGraph(AbstractGraph): method __init__ (line 51) | def __init__( method _create_graph (line 64) | def _create_graph(self) -> BaseGraph: method run (line 100) | def run(self) -> str: FILE: scrapegraphai/graphs/smart_scraper_multi_lite_graph.py class SmartScraperMultiLiteGraph (line 17) | class SmartScraperMultiLiteGraph(AbstractGraph): method __init__ (line 51) | def __init__( method _create_graph (line 62) | def _create_graph(self) -> BaseGraph: method run (line 95) | def run(self) -> str: FILE: scrapegraphai/graphs/speech_graph.py class SpeechGraph (line 16) | class SpeechGraph(AbstractGraph): method __init__ (line 46) | def __init__( method _create_graph (line 57) | def _create_graph(self) -> BaseGraph: method run (line 100) | def run(self) -> str: FILE: scrapegraphai/graphs/xml_scraper_graph.py class XMLScraperGraph (line 14) | class XMLScraperGraph(AbstractGraph): method __init__ (line 46) | def __init__( method _create_graph (line 57) | def _create_graph(self) -> BaseGraph: method run (line 87) | def run(self) -> str: FILE: scrapegraphai/graphs/xml_scraper_multi_graph.py class XMLScraperMultiGraph (line 17) | class XMLScraperMultiGraph(AbstractGraph): method __init__ (line 45) | def __init__( method _create_graph (line 56) | def _create_graph(self) -> BaseGraph: method run (line 91) | def run(self) -> str: FILE: scrapegraphai/integrations/burr_bridge.py class PrintLnHook (line 29) | class PrintLnHook(PostRunStepHook, PreRunStepHook): method pre_run_step (line 34) | def pre_run_step(self, *, state: "State", action: "Action", **future_k... method post_run_step (line 37) | def post_run_step(self, *, state: "State", action: "Action", **future_... class BurrNodeBridge (line 41) | class BurrNodeBridge(Action): method __init__ (line 47) | def __init__(self, node): method reads (line 53) | def reads(self) -> list[str]: method run (line 56) | def run(self, state: State, **run_kwargs) -> dict: method writes (line 62) | def writes(self) -> list[str]: method update (line 65) | def update(self, result: dict, state: State) -> State: method get_source (line 68) | def get_source(self) -> str: function parse_boolean_expression (line 72) | def parse_boolean_expression(expression: str) -> List[str]: class BurrBridge (line 89) | class BurrBridge: method __init__ (line 110) | def __init__(self, base_graph, burr_config): method _initialize_burr_app (line 118) | def _initialize_burr_app(self, initial_state: Dict[str, Any] = None) -... method _create_actions (line 163) | def _create_actions(self) -> Dict[str, Any]: method _create_transitions (line 178) | def _create_transitions(self) -> List[Tuple[str, str, Any]]: method _convert_state_from_burr (line 191) | def _convert_state_from_burr(self, burr_state: State) -> Dict[str, Any]: method execute (line 207) | def execute(self, initial_state: Dict[str, Any] = {}) -> Dict[str, Any]: FILE: scrapegraphai/integrations/indexify_node.py class IndexifyNode (line 10) | class IndexifyNode(BaseNode): method __init__ (line 24) | def __init__( method execute (line 37) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/models/clod.py class CLoD (line 8) | class CLoD(ChatOpenAI): method __init__ (line 18) | def __init__(self, **llm_config): FILE: scrapegraphai/models/deepseek.py class DeepSeek (line 8) | class DeepSeek(ChatOpenAI): method __init__ (line 18) | def __init__(self, **llm_config): FILE: scrapegraphai/models/minimax.py class MiniMax (line 8) | class MiniMax(ChatOpenAI): method __init__ (line 18) | def __init__(self, **llm_config): FILE: scrapegraphai/models/nvidia.py class Nvidia (line 6) | class Nvidia: method __new__ (line 20) | def __new__(cls, **llm_config): FILE: scrapegraphai/models/oneapi.py class OneApi (line 8) | class OneApi(ChatOpenAI): method __init__ (line 17) | def __init__(self, **llm_config): FILE: scrapegraphai/models/openai_itt.py class OpenAIImageToText (line 9) | class OpenAIImageToText(ChatOpenAI): method __init__ (line 20) | def __init__(self, llm_config: dict): method run (line 23) | def run(self, image_url: str) -> str: FILE: scrapegraphai/models/openai_tts.py class OpenAITextToSpeech (line 8) | class OpenAITextToSpeech: method __init__ (line 21) | def __init__(self, tts_config: dict): method run (line 28) | def run(self, text: str) -> bytes: FILE: scrapegraphai/models/xai.py class XAI (line 8) | class XAI(ChatOpenAI): method __init__ (line 18) | def __init__(self, **llm_config): FILE: scrapegraphai/nodes/base_node.py class BaseNode (line 12) | class BaseNode(ABC): method __init__ (line 48) | def __init__( method execute (line 71) | def execute(self, state: dict) -> dict: method update_config (line 84) | def update_config(self, params: dict, overwrite: bool = False): method get_input_keys (line 98) | def get_input_keys(self, state: dict) -> List[str]: method _validate_input_keys (line 119) | def _validate_input_keys(self, input_keys): method _parse_input_keys (line 136) | def _parse_input_keys(self, state: dict, expression: str) -> List[str]: FILE: scrapegraphai/nodes/concat_answers_node.py class ConcatAnswersNode (line 10) | class ConcatAnswersNode(BaseNode): method __init__ (line 25) | def __init__( method _merge_dict (line 38) | def _merge_dict(self, items): method execute (line 41) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/conditional_node.py class ConditionalNode (line 12) | class ConditionalNode(BaseNode): method __init__ (line 36) | def __init__( method execute (line 61) | def execute(self, state: dict) -> dict: method _evaluate_condition (line 86) | def _evaluate_condition(self, state: dict, condition: str) -> bool: FILE: scrapegraphai/nodes/description_node.py class DescriptionNode (line 15) | class DescriptionNode(BaseNode): method __init__ (line 33) | def __init__( method execute (line 47) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/fetch_node.py class FetchNode (line 20) | class FetchNode(BaseNode): method __init__ (line 40) | def __init__( method execute (line 90) | def execute(self, state): method handle_directory (line 125) | def handle_directory(self, state, input_type, source): method handle_file (line 142) | def handle_file(self, state, input_type, source): method load_file_content (line 168) | def load_file_content(self, source, input_type): method handle_local_source (line 219) | def handle_local_source(self, state, source): method handle_web_source (line 262) | def handle_web_source(self, state, source): FILE: scrapegraphai/nodes/fetch_node_level_k.py class FetchNodeLevelK (line 15) | class FetchNodeLevelK(BaseNode): method __init__ (line 40) | def __init__( method execute (line 72) | def execute(self, state: dict) -> dict: method fetch_content (line 104) | def fetch_content(self, source: str, loader_kwargs) -> Optional[str]: method extract_links (line 150) | def extract_links(self, html_content: str) -> list: method get_full_links (line 165) | def get_full_links(self, base_url: str, links: list) -> list: method obtain_content (line 234) | def obtain_content(self, documents: List, loader_kwargs) -> List: method process_links (line 275) | def process_links( FILE: scrapegraphai/nodes/fetch_screen_node.py class FetchScreenNode (line 12) | class FetchScreenNode(BaseNode): method __init__ (line 17) | def __init__( method execute (line 27) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/generate_answer_csv_node.py class GenerateAnswerCSVNode (line 22) | class GenerateAnswerCSVNode(BaseNode): method __init__ (line 47) | def __init__( method execute (line 70) | def execute(self, state): FILE: scrapegraphai/nodes/generate_answer_from_image_node.py class GenerateAnswerFromImageNode (line 14) | class GenerateAnswerFromImageNode(BaseNode): method __init__ (line 20) | def __init__( method process_image (line 29) | async def process_image(self, session, api_key, image_data, user_prompt): method execute_async (line 69) | async def execute_async(self, state: dict) -> dict: method execute (line 112) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/generate_answer_node.py class GenerateAnswerNode (line 30) | class GenerateAnswerNode(BaseNode): method __init__ (line 52) | def __init__( method invoke_with_timeout (line 75) | def invoke_with_timeout(self, chain, inputs, timeout): method process (line 90) | def process(self, state: dict) -> dict: method execute (line 118) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/generate_answer_node_k_level.py class GenerateAnswerNodeKLevel (line 31) | class GenerateAnswerNodeKLevel(BaseNode): method __init__ (line 49) | def __init__( method execute (line 73) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/generate_answer_omni_node.py class GenerateAnswerOmniNode (line 27) | class GenerateAnswerOmniNode(BaseNode): method __init__ (line 45) | def __init__( method execute (line 64) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/generate_code_node.py class GenerateCodeNode (line 37) | class GenerateCodeNode(BaseNode): method __init__ (line 53) | def __init__( method execute (line 93) | def execute(self, state: dict) -> dict: method overall_reasoning_loop (line 145) | def overall_reasoning_loop(self, state: dict) -> dict: method syntax_reasoning_loop (line 206) | def syntax_reasoning_loop(self, state: dict) -> dict: method execution_reasoning_loop (line 235) | def execution_reasoning_loop(self, state: dict) -> dict: method validation_reasoning_loop (line 264) | def validation_reasoning_loop(self, state: dict) -> dict: method semantic_comparison_loop (line 298) | def semantic_comparison_loop(self, state: dict) -> dict: method generate_initial_code (line 335) | def generate_initial_code(self, state: dict) -> str: method semantic_comparison (line 362) | def semantic_comparison( method syntax_check (line 419) | def syntax_check(self, code): method create_sandbox_and_execute (line 435) | def create_sandbox_and_execute(self, function_code): method validate_dict (line 472) | def validate_dict(self, data: dict, schema): FILE: scrapegraphai/nodes/generate_scraper_node.py class GenerateScraperNode (line 13) | class GenerateScraperNode(BaseNode): method __init__ (line 34) | def __init__( method execute (line 55) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/get_probable_tags_node.py class GetProbableTagsNode (line 14) | class GetProbableTagsNode(BaseNode): method __init__ (line 31) | def __init__( method execute (line 45) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/graph_iterator_node.py class GraphIteratorNode (line 16) | class GraphIteratorNode(BaseNode): method __init__ (line 31) | def __init__( method execute (line 46) | def execute(self, state: dict) -> dict: method _async_execute (line 81) | async def _async_execute(self, state: dict, batchsize: int) -> dict: FILE: scrapegraphai/nodes/html_analyzer_node.py class HtmlAnalyzerNode (line 16) | class HtmlAnalyzerNode(BaseNode): method __init__ (line 31) | def __init__( method execute (line 58) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/image_to_text_node.py class ImageToTextNode (line 12) | class ImageToTextNode(BaseNode): method __init__ (line 28) | def __init__( method execute (line 43) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/markdownify_node.py class MarkdownifyNode (line 11) | class MarkdownifyNode(BaseNode): method __init__ (line 28) | def __init__( method execute (line 41) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/merge_answers_node.py class MergeAnswersNode (line 21) | class MergeAnswersNode(BaseNode): method __init__ (line 36) | def __init__( method execute (line 57) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/merge_generated_scripts_node.py class MergeGeneratedScriptsNode (line 14) | class MergeGeneratedScriptsNode(BaseNode): method __init__ (line 27) | def __init__( method execute (line 41) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/parse_node.py class ParseNode (line 17) | class ParseNode(BaseNode): method __init__ (line 40) | def __init__( method execute (line 62) | def execute(self, state: dict) -> dict: method _extract_urls (line 131) | def _extract_urls(self, text: str, source: str) -> Tuple[List[str], Li... method _clean_urls (line 179) | def _clean_urls(self, urls: List[str]) -> List[str]: method _is_valid_url (line 207) | def _is_valid_url(url: str) -> bool: FILE: scrapegraphai/nodes/parse_node_depth_k_node.py class ParseNodeDepthK (line 12) | class ParseNodeDepthK(BaseNode): method __init__ (line 29) | def __init__( method execute (line 42) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/prompt_refiner_node.py class PromptRefinerNode (line 16) | class PromptRefinerNode(BaseNode): method __init__ (line 33) | def __init__( method execute (line 62) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/rag_node.py class RAGNode (line 10) | class RAGNode(BaseNode): method __init__ (line 28) | def __init__( method execute (line 43) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/reasoning_node.py class ReasoningNode (line 16) | class ReasoningNode(BaseNode): method __init__ (line 33) | def __init__( method execute (line 56) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/robots_node.py class RobotsNode (line 17) | class RobotsNode(BaseNode): method __init__ (line 40) | def __init__( method execute (line 58) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/search_internet_node.py class SearchInternetNode (line 16) | class SearchInternetNode(BaseNode): method __init__ (line 34) | def __init__( method execute (line 60) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/search_link_node.py class SearchLinkNode (line 18) | class SearchLinkNode(BaseNode): method __init__ (line 35) | def __init__( method _is_same_domain (line 58) | def _is_same_domain(self, url, domain): method _is_image_url (line 67) | def _is_image_url(self, url): method _is_language_url (line 73) | def _is_language_url(self, url): method _is_potentially_irrelevant (line 86) | def _is_potentially_irrelevant(self, url): method execute (line 93) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/search_node_with_context.py class SearchLinksWithContext (line 18) | class SearchLinksWithContext(BaseNode): method __init__ (line 37) | def __init__( method execute (line 50) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/nodes/text_to_speech_node.py class TextToSpeechNode (line 10) | class TextToSpeechNode(BaseNode): method __init__ (line 25) | def __init__( method execute (line 39) | def execute(self, state: dict) -> dict: FILE: scrapegraphai/telemetry/telemetry.py function _load_config (line 18) | def _load_config(config_location: str) -> configparser.ConfigParser: function _check_config_and_environ_for_telemetry_flag (line 39) | def _check_config_and_environ_for_telemetry_flag(default_value: bool, co... function disable_telemetry (line 65) | def disable_telemetry(): function is_telemetry_enabled (line 70) | def is_telemetry_enabled() -> bool: function _build_telemetry_payload (line 80) | def _build_telemetry_payload( function _send_telemetry (line 125) | def _send_telemetry(payload: dict): function _send_telemetry_threaded (line 145) | def _send_telemetry_threaded(payload: dict): function log_event (line 155) | def log_event(event: str, properties: Dict[str, any]): function log_graph_execution (line 159) | def log_graph_execution( function capture_function_usage (line 195) | def capture_function_usage(call_fn: Callable) -> Callable: FILE: scrapegraphai/utils/cleanup_code.py function extract_code (line 8) | def extract_code(code: str) -> str: FILE: scrapegraphai/utils/cleanup_html.py function extract_from_script_tags (line 13) | def extract_from_script_tags(soup): function cleanup_html (line 48) | def cleanup_html(html_content: str, base_url: str) -> str: function minify_html (line 104) | def minify_html(html): function reduce_html (line 124) | def reduce_html(html, reduction): FILE: scrapegraphai/utils/code_error_analysis.py class AnalysisError (line 29) | class AnalysisError(Exception): class InvalidStateError (line 35) | class InvalidStateError(AnalysisError): class CodeAnalysisState (line 41) | class CodeAnalysisState(BaseModel): method validate_errors (line 50) | def validate_errors(cls, v): class ExecutionAnalysisState (line 57) | class ExecutionAnalysisState(CodeAnalysisState): method validate_execution_errors (line 64) | def validate_execution_errors(cls, v): class ValidationAnalysisState (line 72) | class ValidationAnalysisState(CodeAnalysisState): method validate_validation_errors (line 79) | def validate_validation_errors(cls, v): function get_optimal_analysis_template (line 87) | def get_optimal_analysis_template(error_type: str) -> str: function syntax_focused_analysis (line 106) | def syntax_focused_analysis(state: Dict[str, Any], llm_model) -> str: function execution_focused_analysis (line 159) | def execution_focused_analysis(state: Dict[str, Any], llm_model) -> str: function validation_focused_analysis (line 214) | def validation_focused_analysis(state: Dict[str, Any], llm_model) -> str: function semantic_focused_analysis (line 275) | def semantic_focused_analysis( FILE: scrapegraphai/utils/code_error_correction.py class CodeGenerationError (line 29) | class CodeGenerationError(Exception): class InvalidCorrectionStateError (line 35) | class InvalidCorrectionStateError(CodeGenerationError): class CorrectionState (line 41) | class CorrectionState(BaseModel): class Config (line 48) | class Config: class ValidationCorrectionState (line 52) | class ValidationCorrectionState(CorrectionState): class SemanticCorrectionState (line 58) | class SemanticCorrectionState(CorrectionState): function get_optimal_correction_template (line 66) | def get_optimal_correction_template(error_type: str) -> str: function syntax_focused_code_generation (line 86) | def syntax_focused_code_generation( function execution_focused_code_generation (line 139) | def execution_focused_code_generation( function validation_focused_code_generation (line 192) | def validation_focused_code_generation( function semantic_focused_code_generation (line 251) | def semantic_focused_code_generation( FILE: scrapegraphai/utils/convert_to_md.py function convert_to_md (line 10) | def convert_to_md(html: str, url: str = None) -> str: FILE: scrapegraphai/utils/copy.py class DeepCopyError (line 9) | class DeepCopyError(Exception): function is_boto3_client (line 17) | def is_boto3_client(obj): function safe_deepcopy (line 35) | def safe_deepcopy(obj: Any) -> Any: FILE: scrapegraphai/utils/custom_callback.py function get_token_cost_for_model (line 21) | def get_token_cost_for_model( class CustomCallbackHandler (line 43) | class CustomCallbackHandler(BaseCallbackHandler): method __init__ (line 52) | def __init__(self, llm_model_name: str) -> None: method __repr__ (line 57) | def __repr__(self) -> str: method always_verbose (line 67) | def always_verbose(self) -> bool: method on_llm_start (line 71) | def on_llm_start( method on_llm_new_token (line 77) | def on_llm_new_token(self, token: str, **kwargs: Any) -> None: method on_llm_end (line 81) | def on_llm_end(self, response: LLMResult, **kwargs: Any) -> None: method __copy__ (line 134) | def __copy__(self) -> "CustomCallbackHandler": method __deepcopy__ (line 138) | def __deepcopy__(self, memo: Any) -> "CustomCallbackHandler": function get_custom_callback (line 150) | def get_custom_callback(llm_model_name: str): FILE: scrapegraphai/utils/data_export.py function export_to_json (line 12) | def export_to_json(data: List[Dict[str, Any]], filename: str) -> None: function export_to_csv (line 24) | def export_to_csv(data: List[Dict[str, Any]], filename: str) -> None: function export_to_xml (line 43) | def export_to_xml( FILE: scrapegraphai/utils/dict_content_compare.py function normalize_dict (line 15) | def normalize_dict(d: Dict[str, Any]) -> Dict[str, Any]: function normalize_list (line 39) | def normalize_list(lst: List[Any]) -> List[Any]: function are_content_equal (line 65) | def are_content_equal( FILE: scrapegraphai/utils/llm_callback_manager.py class CustomLLMCallbackManager (line 21) | class CustomLLMCallbackManager: method exclusive_get_callback (line 37) | def exclusive_get_callback(self, llm_model, llm_model_name): FILE: scrapegraphai/utils/logging.py function _get_library_root_logger (line 25) | def _get_library_root_logger() -> logging.Logger: function _set_library_root_logger (line 35) | def _set_library_root_logger() -> None: function get_logger (line 62) | def get_logger(name: Optional[str] = None) -> logging.Logger: function get_verbosity (line 79) | def get_verbosity() -> int: function set_verbosity (line 90) | def set_verbosity(verbosity: int) -> None: function set_verbosity_debug (line 101) | def set_verbosity_debug() -> None: function set_verbosity_info (line 108) | def set_verbosity_info() -> None: function set_verbosity_warning (line 115) | def set_verbosity_warning() -> None: function set_verbosity_error (line 122) | def set_verbosity_error() -> None: function set_verbosity_fatal (line 129) | def set_verbosity_fatal() -> None: function set_handler (line 136) | def set_handler(handler: logging.Handler) -> None: function setDEFAULT_HANDLER (line 150) | def setDEFAULT_HANDLER() -> None: function unset_handler (line 157) | def unset_handler(handler: logging.Handler) -> None: function unsetDEFAULT_HANDLER (line 171) | def unsetDEFAULT_HANDLER() -> None: function set_propagation (line 178) | def set_propagation() -> None: function unset_propagation (line 185) | def unset_propagation() -> None: function set_formatting (line 192) | def set_formatting() -> None: function unset_formatting (line 206) | def unset_formatting() -> None: function warning_once (line 215) | def warning_once(self, *args, **kwargs): FILE: scrapegraphai/utils/output_parser.py function get_structured_output_parser (line 12) | def get_structured_output_parser( function get_pydantic_output_parser (line 30) | def get_pydantic_output_parser( function _base_model_v1_output_parser (line 54) | def _base_model_v1_output_parser(x: BaseModelV1) -> dict: function _base_model_v2_output_parser (line 77) | def _base_model_v2_output_parser(x: BaseModelV2) -> dict: function _dict_output_parser (line 90) | def _dict_output_parser(x: dict) -> dict: FILE: scrapegraphai/utils/parse_state_keys.py function parse_expression (line 8) | def parse_expression(expression, state: dict) -> list: FILE: scrapegraphai/utils/prettify_exec_info.py function prettify_exec_info (line 8) | def prettify_exec_info( FILE: scrapegraphai/utils/proxy_rotation.py class ProxyBrokerCriteria (line 16) | class ProxyBrokerCriteria(TypedDict, total=False): class ProxySettings (line 28) | class ProxySettings(TypedDict, total=False): class Proxy (line 39) | class Proxy(ProxySettings): function search_proxy_servers (line 47) | def search_proxy_servers( function _parse_proxy (line 134) | def _parse_proxy(proxy: ProxySettings) -> ProxySettings: function _search_proxy (line 163) | def _search_proxy(proxy: Proxy) -> ProxySettings: function is_ipv4_address (line 182) | def is_ipv4_address(address: str) -> bool: function parse_or_search_proxy (line 191) | def parse_or_search_proxy(proxy: Proxy) -> ProxySettings: FILE: scrapegraphai/utils/research_web.py class ResearchWebError (line 18) | class ResearchWebError(Exception): class SearchConfigError (line 24) | class SearchConfigError(ResearchWebError): class SearchRequestError (line 30) | class SearchRequestError(ResearchWebError): class ProxyConfig (line 36) | class ProxyConfig(BaseModel): class SearchConfig (line 48) | class SearchConfig(BaseModel): method validate_search_engine (line 64) | def validate_search_engine(cls, v): method validate_query (line 74) | def validate_query(cls, v): method validate_max_results (line 81) | def validate_max_results(cls, v): function rate_limited (line 93) | def rate_limited(calls: int, period: int = 60): function sanitize_search_query (line 123) | def sanitize_search_query(query: str) -> str: function get_random_user_agent (line 150) | def get_random_user_agent() -> str: function search_on_web (line 161) | def search_on_web( function _search_bing (line 250) | def _search_bing( function _search_searxng (line 297) | def _search_searxng(query: str, max_results: int, port: int, timeout: in... function _search_serper (line 338) | def _search_serper( function format_proxy (line 384) | def format_proxy(proxy_config: Union[str, Dict, ProxyConfig]) -> str: function filter_pdf_links (line 408) | def filter_pdf_links(urls: List[str]) -> List[str]: function verify_request_signature (line 421) | def verify_request_signature( FILE: scrapegraphai/utils/save_audio_from_bytes.py function save_audio_from_bytes (line 9) | def save_audio_from_bytes(byte_response: bytes, output_path: Union[str, ... FILE: scrapegraphai/utils/save_code_to_file.py function save_code_to_file (line 6) | def save_code_to_file(code: str, filename: str) -> None: FILE: scrapegraphai/utils/schema_trasform.py function transform_schema (line 6) | def transform_schema(pydantic_schema): FILE: scrapegraphai/utils/screenshot_scraping/screenshot_preparation.py function take_screenshot (line 11) | async def take_screenshot(url: str, save_path: str = None, quality: int ... function select_area_with_opencv (line 40) | def select_area_with_opencv(image): function select_area_with_ipywidget (line 133) | def select_area_with_ipywidget(image): function crop_image (line 218) | def crop_image( FILE: scrapegraphai/utils/screenshot_scraping/text_detection.py function detect_text (line 6) | def detect_text(image, languages: list = ["en"]): FILE: scrapegraphai/utils/split_text_into_chunks.py function split_text_into_chunks (line 10) | def split_text_into_chunks(text: str, chunk_size: int, use_semchunk=True... FILE: scrapegraphai/utils/sys_dynamic_import.py function srcfile_import (line 15) | def srcfile_import(modpath: str, modname: str) -> "types.ModuleType": function dynamic_import (line 48) | def dynamic_import(modname: str, message: str = "") -> None: FILE: scrapegraphai/utils/tokenizer.py function num_tokens_calculus (line 8) | def num_tokens_calculus(string: str) -> int: FILE: scrapegraphai/utils/tokenizers/tokenizer_mistral.py function num_tokens_mistral (line 10) | def num_tokens_mistral(text: str, llm_model: BaseChatModel) -> int: FILE: scrapegraphai/utils/tokenizers/tokenizer_ollama.py function num_tokens_ollama (line 10) | def num_tokens_ollama(text: str, llm_model: BaseChatModel) -> int: FILE: scrapegraphai/utils/tokenizers/tokenizer_openai.py function num_tokens_openai (line 10) | def num_tokens_openai(text: str) -> int: FILE: tests/conftest.py function openai_config (line 34) | def openai_config() -> Dict[str, Any]: function openai_gpt4_config (line 49) | def openai_gpt4_config() -> Dict[str, Any]: function ollama_config (line 64) | def ollama_config() -> Dict[str, Any]: function anthropic_config (line 78) | def anthropic_config() -> Dict[str, Any]: function groq_config (line 93) | def groq_config() -> Dict[str, Any]: function azure_config (line 108) | def azure_config() -> Dict[str, Any]: function gemini_config (line 124) | def gemini_config() -> Dict[str, Any]: function multi_llm_config (line 144) | def multi_llm_config(request): function mock_llm_model (line 155) | def mock_llm_model(): function mock_embedder_model (line 165) | def mock_embedder_model(): function sample_html (line 179) | def sample_html() -> str: function sample_json_data (line 211) | def sample_json_data() -> Dict[str, Any]: function sample_xml (line 226) | def sample_xml() -> str: function sample_csv (line 246) | def sample_csv() -> str: function temp_json_file (line 260) | def temp_json_file(tmp_path, sample_json_data): function temp_html_file (line 268) | def temp_html_file(tmp_path, sample_html): function temp_xml_file (line 276) | def temp_xml_file(tmp_path, sample_xml): function temp_csv_file (line 284) | def temp_csv_file(tmp_path, sample_csv): function benchmark_config (line 297) | def benchmark_config(): function performance_tracker (line 307) | def performance_tracker(): function mock_server (line 323) | def mock_server(): function mock_server_url (line 334) | def mock_server_url(mock_server): function mock_website_url (line 340) | def mock_website_url(): function pytest_configure (line 354) | def pytest_configure(config): function pytest_collection_modifyitems (line 373) | def pytest_collection_modifyitems(config, items): function pytest_addoption (line 400) | def pytest_addoption(parser): FILE: tests/fixtures/benchmarking.py class BenchmarkResult (line 23) | class BenchmarkResult: class BenchmarkSummary (line 37) | class BenchmarkSummary: class BenchmarkTracker (line 52) | class BenchmarkTracker: method __init__ (line 55) | def __init__(self, output_dir: Optional[Path] = None): method record (line 65) | def record(self, result: BenchmarkResult): method get_summary (line 69) | def get_summary(self, test_name: str) -> Optional[BenchmarkSummary]: method save_results (line 100) | def save_results(self, filename: str = "benchmark_results.json"): method generate_report (line 126) | def generate_report(self) -> str: function benchmark (line 163) | def benchmark( function benchmark_tracker (line 226) | def benchmark_tracker(): function pytest_benchmark_compare (line 234) | def pytest_benchmark_compare(baseline_file: Path, current_file: Path) ->... FILE: tests/fixtures/helpers.py function assert_valid_scrape_result (line 22) | def assert_valid_scrape_result(result: Any, expected_keys: Optional[List... function assert_execution_info_valid (line 37) | def assert_execution_info_valid(exec_info: Dict[str, Any]): function assert_response_time_acceptable (line 47) | def assert_response_time_acceptable(execution_time: float, max_time: flo... function assert_no_errors_in_result (line 59) | def assert_no_errors_in_result(result: Union[Dict, str]): function create_mock_llm_response (line 85) | def create_mock_llm_response(content: str, **kwargs) -> Mock: function create_mock_graph_result (line 102) | def create_mock_graph_result( function generate_test_html (line 133) | def generate_test_html( function generate_test_json (line 164) | def generate_test_json(num_records: int = 3) -> Dict[str, Any]: function generate_test_csv (line 187) | def generate_test_csv(num_rows: int = 3) -> str: function validate_schema_match (line 206) | def validate_schema_match(data: Dict, schema_class) -> bool: function validate_extracted_fields (line 223) | def validate_extracted_fields( function load_test_fixture (line 252) | def load_test_fixture(fixture_name: str, fixture_dir: Optional[Path] = N... function save_test_output (line 269) | def save_test_output( function compare_results (line 292) | def compare_results(result1: Dict, result2: Dict, ignore_keys: Optional[... function fuzzy_match_strings (line 312) | def fuzzy_match_strings(str1: str, str2: str, threshold: float = 0.8) ->... class RateLimitHelper (line 345) | class RateLimitHelper: method __init__ (line 348) | def __init__(self, max_requests: int, time_window: float): method can_make_request (line 359) | def can_make_request(self) -> bool: method record_request (line 374) | def record_request(self): function retry_with_backoff (line 386) | def retry_with_backoff( FILE: tests/fixtures/mock_server/server.py class MockHTTPRequestHandler (line 20) | class MockHTTPRequestHandler(BaseHTTPRequestHandler): method log_message (line 26) | def log_message(self, format, *args): method do_GET (line 30) | def do_GET(self): method _serve_home (line 64) | def _serve_home(self): method _serve_products (line 85) | def _serve_products(self): method _serve_projects (line 121) | def _serve_projects(self): method _serve_json_data (line 149) | def _serve_json_data(self): method _serve_xml_data (line 164) | def _serve_xml_data(self): method _serve_csv_data (line 184) | def _serve_csv_data(self): method _serve_slow_response (line 192) | def _serve_slow_response(self): method _serve_404 (line 197) | def _serve_404(self): method _serve_500 (line 204) | def _serve_500(self): method _serve_rate_limited (line 211) | def _serve_rate_limited(self): method _serve_dynamic_content (line 225) | def _serve_dynamic_content(self): method _serve_pagination (line 244) | def _serve_pagination(self, query_params): method _send_html_response (line 282) | def _send_html_response(self, html: str, status: int = 200): method _send_json_response (line 289) | def _send_json_response(self, data: dict, status: int = 200): method _send_xml_response (line 296) | def _send_xml_response(self, xml: str, status: int = 200): method _send_csv_response (line 303) | def _send_csv_response(self, csv: str, status: int = 200): class MockHTTPServer (line 311) | class MockHTTPServer: method __init__ (line 314) | def __init__(self, host: str = "localhost", port: int = 8888): method start (line 320) | def start(self): method stop (line 327) | def stop(self): method get_url (line 335) | def get_url(self, path: str = "") -> str: method __enter__ (line 339) | def __enter__(self): method __exit__ (line 344) | def __exit__(self, exc_type, exc_val, exc_tb): FILE: tests/graphs/abstract_graph_test.py function test_llm_missing_tokens (line 17) | def test_llm_missing_tokens(monkeypatch, capsys): function test_burr_kwargs (line 35) | def test_burr_kwargs(): function test_set_common_params (line 51) | def test_set_common_params(): class TestGraph (line 78) | class TestGraph(AbstractGraph): method __init__ (line 79) | def __init__(self, prompt: str, config: dict): method _create_graph (line 82) | def _create_graph(self) -> BaseGraph: method run (line 108) | def run(self) -> str: class TestAbstractGraph (line 115) | class TestAbstractGraph: method test_create_llm (line 148) | def test_create_llm(self, llm_config, expected_model): method test_create_llm_unknown_provider (line 152) | def test_create_llm_unknown_provider(self): method test_create_llm_with_rate_limit (line 208) | def test_create_llm_with_rate_limit(self, llm_config, expected_model): method test_run_safe_async (line 213) | async def test_run_safe_async(self): method test_create_llm_with_custom_model_instance (line 228) | def test_create_llm_with_custom_model_instance(self): method test_set_common_params (line 249) | def test_set_common_params(self): method test_get_state (line 276) | def test_get_state(self): method test_append_node (line 294) | def test_append_node(self): method test_get_execution_info (line 307) | def test_get_execution_info(self): FILE: tests/graphs/code_generator_graph_openai_test.py class Project (line 21) | class Project(BaseModel): class Projects (line 26) | class Projects(BaseModel): function graph_config (line 31) | def graph_config(): function test_code_generator_graph (line 55) | def test_code_generator_graph(graph_config: dict): function test_code_generator_execution_info (line 71) | def test_code_generator_execution_info(graph_config: dict): FILE: tests/graphs/depth_search_graph_openai_test.py function graph_config (line 16) | def graph_config(): function test_depth_search_graph (line 33) | def test_depth_search_graph(graph_config: dict): function test_depth_search_execution_info (line 48) | def test_depth_search_execution_info(graph_config: dict): FILE: tests/graphs/scrape_plain_text_mistral_test.py function sample_text (line 13) | def sample_text(): function graph_config (line 28) | def graph_config(): function test_scraping_pipeline (line 42) | def test_scraping_pipeline(sample_text, graph_config): FILE: tests/graphs/scrape_xml_ollama_test.py function sample_xml (line 13) | def sample_xml(): function graph_config (line 28) | def graph_config(): function test_scraping_pipeline (line 42) | def test_scraping_pipeline(sample_xml: str, graph_config: dict): FILE: tests/graphs/screenshot_scraper_test.py function graph_config (line 15) | def graph_config(): function test_screenshot_scraper_graph (line 29) | def test_screenshot_scraper_graph(graph_config): FILE: tests/graphs/script_generator_test.py function graph_config (line 11) | def graph_config(): function test_script_creator_graph (line 27) | def test_script_creator_graph(graph_config: dict): FILE: tests/graphs/search_graph_openai_test.py function graph_config (line 20) | def graph_config(): function test_search_graph (line 40) | def test_search_graph(graph_config: dict): function test_search_graph_execution_info (line 54) | def test_search_graph_execution_info(graph_config: dict): FILE: tests/graphs/search_link_ollama.py function test_smart_scraper_pipeline (line 4) | def test_smart_scraper_pipeline(): FILE: tests/graphs/smart_scraper_clod_test.py function graph_config (line 16) | def graph_config(): function test_scraping_pipeline (line 29) | def test_scraping_pipeline(graph_config): function test_get_execution_info (line 43) | def test_get_execution_info(graph_config): FILE: tests/graphs/smart_scraper_ernie_test.py function graph_config (line 11) | def graph_config(): function test_scraping_pipeline (line 25) | def test_scraping_pipeline(graph_config: dict): function test_get_execution_info (line 40) | def test_get_execution_info(graph_config: dict): FILE: tests/graphs/smart_scraper_fireworks_test.py function graph_config (line 16) | def graph_config(): function test_scraping_pipeline (line 29) | def test_scraping_pipeline(graph_config): function test_get_execution_info (line 43) | def test_get_execution_info(graph_config): FILE: tests/graphs/smart_scraper_multi_lite_graph_openai_test.py function graph_config (line 16) | def graph_config(): function test_scraping_pipeline (line 30) | def test_scraping_pipeline(graph_config): function test_get_execution_info (line 44) | def test_get_execution_info(graph_config): FILE: tests/graphs/smart_scraper_ollama_test.py function graph_config (line 11) | def graph_config(): function test_scraping_pipeline (line 25) | def test_scraping_pipeline(graph_config: dict): function test_get_execution_info (line 40) | def test_get_execution_info(graph_config: dict): FILE: tests/graphs/smart_scraper_openai_test.py function graph_config (line 17) | def graph_config(): function test_scraping_pipeline (line 30) | def test_scraping_pipeline(graph_config): function test_get_execution_info (line 44) | def test_get_execution_info(graph_config): function test_get_execution_info_with_schema (line 59) | def test_get_execution_info_with_schema(graph_config): FILE: tests/graphs/xml_scraper_openai_test.py function graph_config (line 21) | def graph_config(): function xml_content (line 36) | def xml_content(): function test_xml_scraper_graph (line 53) | def test_xml_scraper_graph(graph_config: dict, xml_content: str): function test_xml_scraper_execution_info (line 68) | def test_xml_scraper_execution_info(graph_config: dict, xml_content: str): function test_xml_scraper_save_results (line 86) | def test_xml_scraper_save_results(graph_config: dict, xml_content: str): FILE: tests/integration/test_file_formats_integration.py class TestJSONScraperIntegration (line 22) | class TestJSONScraperIntegration: method test_scrape_json_file (line 25) | def test_scrape_json_file(self, openai_config, temp_json_file): method test_scrape_json_url (line 37) | def test_scrape_json_url(self, openai_config, mock_server): class TestXMLScraperIntegration (line 54) | class TestXMLScraperIntegration: method test_scrape_xml_file (line 57) | def test_scrape_xml_file(self, openai_config, temp_xml_file): method test_scrape_xml_url (line 69) | def test_scrape_xml_url(self, openai_config, mock_server): class TestCSVScraperIntegration (line 86) | class TestCSVScraperIntegration: method test_scrape_csv_file (line 89) | def test_scrape_csv_file(self, openai_config, temp_csv_file): method test_scrape_csv_url (line 101) | def test_scrape_csv_url(self, openai_config, mock_server): class TestFileFormatPerformance (line 118) | class TestFileFormatPerformance: method test_json_scraping_performance (line 122) | def test_json_scraping_performance( FILE: tests/integration/test_multi_graph_integration.py class TestMultiGraphIntegration (line 18) | class TestMultiGraphIntegration: method test_scrape_multiple_pages (line 21) | def test_scrape_multiple_pages(self, openai_config, mock_server): method test_concurrent_scraping_performance (line 39) | def test_concurrent_scraping_performance( class TestSearchGraphIntegration (line 80) | class TestSearchGraphIntegration: method test_search_and_scrape (line 85) | def test_search_and_scrape(self, openai_config): FILE: tests/integration/test_smart_scraper_integration.py class ProjectSchema (line 20) | class ProjectSchema(BaseModel): class ProjectListSchema (line 27) | class ProjectListSchema(BaseModel): class TestSmartScraperIntegration (line 35) | class TestSmartScraperIntegration: method test_scrape_with_openai (line 38) | def test_scrape_with_openai(self, openai_config, mock_server): method test_scrape_with_schema (line 54) | def test_scrape_with_schema(self, openai_config, mock_server): method test_scrape_products_page (line 75) | def test_scrape_products_page(self, openai_config, mock_server): method test_scrape_with_timeout (line 90) | def test_scrape_with_timeout(self, openai_config, mock_server): method test_error_handling_404 (line 107) | def test_error_handling_404(self, openai_config, mock_server): class TestMultiProviderIntegration (line 130) | class TestMultiProviderIntegration: method test_consistent_results_across_providers (line 134) | def test_consistent_results_across_providers( class TestRealWebsiteIntegration (line 157) | class TestRealWebsiteIntegration: method test_scrape_test_website (line 161) | def test_scrape_test_website(self, openai_config, mock_website_url): class TestSmartScraperPerformance (line 177) | class TestSmartScraperPerformance: method test_scraping_performance (line 181) | def test_scraping_performance( FILE: tests/nodes/fetch_node_test.py function test_fetch_html (line 6) | def test_fetch_html(mocker): function test_fetch_json (line 42) | def test_fetch_json(): function test_fetch_xml (line 51) | def test_fetch_xml(): function test_fetch_csv (line 60) | def test_fetch_csv(): function test_fetch_txt (line 69) | def test_fetch_txt(): FILE: tests/nodes/robot_node_test.py function mock_llm_model (line 9) | def mock_llm_model(): function robots_node (line 17) | def robots_node(mock_llm_model): function test_robots_node_scrapable (line 25) | def test_robots_node_scrapable(robots_node): function test_robots_node_not_scrapable (line 41) | def test_robots_node_not_scrapable(robots_node): function test_robots_node_force_scrapable (line 59) | def test_robots_node_force_scrapable(robots_node): FILE: tests/nodes/search_internet_node_test.py class TestSearchInternetNode (line 8) | class TestSearchInternetNode(unittest.TestCase): method setUp (line 9) | def setUp(self): method test_execute_search_node (line 33) | def test_execute_search_node(self): FILE: tests/nodes/search_link_node_test.py function setup (line 10) | def setup(): function test_search_link_node (line 42) | def test_search_link_node(setup): FILE: tests/test_chromium.py class MockPlaywright (line 13) | class MockPlaywright: method __init__ (line 14) | def __init__(self): class MockBrowser (line 19) | class MockBrowser: method __init__ (line 20) | def __init__(self): class MockContext (line 24) | class MockContext: method __init__ (line 25) | def __init__(self): class MockPage (line 29) | class MockPage: method __init__ (line 30) | def __init__(self): function mock_playwright (line 40) | def mock_playwright(): function dummy_scraper (line 56) | async def dummy_scraper(url): function loader_with_dummy (line 62) | def loader_with_dummy(monkeypatch): function test_lazy_load (line 72) | def test_lazy_load(loader_with_dummy): function test_alazy_load (line 83) | async def test_alazy_load(loader_with_dummy): function test_scrape_method_unsupported_backend (line 94) | async def test_scrape_method_unsupported_backend(): function test_scrape_method_selenium (line 102) | async def test_scrape_method_selenium(monkeypatch): function test_ascrape_playwright_scroll (line 117) | async def test_ascrape_playwright_scroll(mock_playwright): function test_ascrape_with_js_support (line 146) | async def test_ascrape_with_js_support(mock_playwright): function test_scrape_method_playwright (line 171) | async def test_scrape_method_playwright(mock_playwright): function test_scrape_method_retry_logic (line 189) | async def test_scrape_method_retry_logic(mock_playwright): function test_ascrape_playwright_scroll_invalid_params (line 216) | async def test_ascrape_playwright_scroll_invalid_params(): function test_ascrape_with_js_support_retry_failure (line 236) | async def test_ascrape_with_js_support_retry_failure(monkeypatch): function test_ascrape_undetected_chromedriver_success (line 293) | async def test_ascrape_undetected_chromedriver_success(monkeypatch): function test_lazy_load_exception (line 319) | async def test_lazy_load_exception(loader_with_dummy, monkeypatch): function test_ascrape_undetected_chromedriver_unsupported_browser (line 333) | async def test_ascrape_undetected_chromedriver_unsupported_browser(monke... function test_alazy_load_partial_failure (line 351) | async def test_alazy_load_partial_failure(monkeypatch): function test_ascrape_playwright_retry_failure (line 368) | async def test_ascrape_playwright_retry_failure(monkeypatch): function test_init_overrides (line 420) | async def test_init_overrides(): function test_lazy_load_with_js_support (line 452) | async def test_lazy_load_with_js_support(monkeypatch): function test_no_retry_returns_none (line 470) | async def test_no_retry_returns_none(monkeypatch): function test_alazy_load_empty_urls (line 486) | async def test_alazy_load_empty_urls(): function test_lazy_load_empty_urls (line 493) | def test_lazy_load_empty_urls(): function test_ascrape_undetected_chromedriver_missing_import (line 501) | async def test_ascrape_undetected_chromedriver_missing_import(monkeypatch): function test_ascrape_undetected_chromedriver_quit_called (line 518) | async def test_ascrape_undetected_chromedriver_quit_called(monkeypatch): function test_dynamic_import_failure (line 562) | def test_dynamic_import_failure(monkeypatch, backend): function test_ascrape_with_js_support_retry_success (line 576) | async def test_ascrape_with_js_support_retry_success(monkeypatch): function test_proxy_parsing_in_init (line 636) | async def test_proxy_parsing_in_init(monkeypatch): function test_scrape_method_selenium_firefox (line 650) | async def test_scrape_method_selenium_firefox(monkeypatch): function test_init_with_no_proxy (line 664) | def test_init_with_no_proxy(): function test_ascrape_playwright_negative_retry (line 672) | async def test_ascrape_playwright_negative_retry(monkeypatch): function test_ascrape_with_js_support_negative_retry (line 697) | async def test_ascrape_with_js_support_negative_retry(monkeypatch): function test_ascrape_with_js_support_storage_state (line 726) | async def test_ascrape_with_js_support_storage_state(monkeypatch): function test_ascrape_playwright_browser_config (line 804) | async def test_ascrape_playwright_browser_config(monkeypatch): function test_scrape_method_js_support (line 868) | async def test_scrape_method_js_support(monkeypatch): function test_ascrape_playwright_scroll_retry_failure (line 882) | async def test_ascrape_playwright_scroll_retry_failure(monkeypatch): function test_alazy_load_order (line 942) | async def test_alazy_load_order(monkeypatch): function test_ascrape_with_js_support_calls_close (line 969) | async def test_ascrape_with_js_support_calls_close(monkeypatch): function test_lazy_load_invalid_backend (line 1024) | async def test_lazy_load_invalid_backend(monkeypatch): function test_ascrape_undetected_chromedriver_failure (line 1034) | async def test_ascrape_undetected_chromedriver_failure(monkeypatch): function test_ascrape_playwright_scroll_constant_height (line 1070) | async def test_ascrape_playwright_scroll_constant_height(mock_playwright): function test_lazy_load_empty_content (line 1085) | def test_lazy_load_empty_content(monkeypatch): function test_lazy_load_scraper_returns_none (line 1105) | async def test_lazy_load_scraper_returns_none(monkeypatch): function test_alazy_load_mixed_none_and_content (line 1125) | async def test_alazy_load_mixed_none_and_content(monkeypatch): function test_ascrape_with_js_support_exception_cleanup (line 1146) | async def test_ascrape_with_js_support_exception_cleanup(monkeypatch): function test_init_dynamic_import_called (line 1204) | def test_init_dynamic_import_called(mock_dynamic_import): function test_alazy_load_selenium_backend (line 1212) | async def test_alazy_load_selenium_backend(monkeypatch): function test_ascrape_undetected_chromedriver_zero_retry (line 1228) | async def test_ascrape_undetected_chromedriver_zero_retry(monkeypatch): function test_scrape_selenium_exception (line 1247) | async def test_scrape_selenium_exception(monkeypatch): function test_ascrape_playwright_scroll_exception_cleanup (line 1264) | async def test_ascrape_playwright_scroll_exception_cleanup(monkeypatch): function test_ascrape_with_js_support_non_timeout_retry (line 1330) | async def test_ascrape_with_js_support_non_timeout_retry(monkeypatch): function test_scrape_uses_js_support_flag (line 1387) | async def test_scrape_uses_js_support_flag(monkeypatch): function test_ascrape_playwright_calls_apply_stealth (line 1405) | async def test_ascrape_playwright_calls_apply_stealth(monkeypatch): function test_lazy_load_non_string_scraper (line 1463) | async def test_lazy_load_non_string_scraper(monkeypatch): function test_alazy_load_non_string_scraper (line 1485) | async def test_alazy_load_non_string_scraper(monkeypatch): function test_ascrape_playwright_scroll_timeout_none (line 1506) | async def test_ascrape_playwright_scroll_timeout_none(monkeypatch, mock_... function test_ascrape_with_js_support_browser_error_cleanup (line 1527) | async def test_ascrape_with_js_support_browser_error_cleanup(monkeypatch): function dummy_non_async_scraper (line 1584) | def dummy_non_async_scraper(url): function test_lazy_load_with_non_async_scraper (line 1589) | def test_lazy_load_with_non_async_scraper(monkeypatch, loader_with_dummy): function test_ascrape_playwright_stealth_exception_cleanup (line 1603) | async def test_ascrape_playwright_stealth_exception_cleanup(monkeypatch): function test_ascrape_with_js_support_value_error_success (line 1663) | async def test_ascrape_with_js_support_value_error_success(monkeypatch): function test_ascrape_with_js_support_value_error_failure (line 1721) | async def test_ascrape_with_js_support_value_error_failure(monkeypatch): function test_ascrape_playwright_scroll_scroll_to_bottom_false (line 1775) | async def test_ascrape_playwright_scroll_scroll_to_bottom_false( function test_ascrape_with_js_support_browser_name_override_new (line 1800) | async def test_ascrape_with_js_support_browser_name_override_new(monkeyp... function test_ascrape_playwright_scroll_load_state (line 1855) | async def test_ascrape_playwright_scroll_load_state(mock_playwright): function test_alazy_load_concurrency (line 1877) | async def test_alazy_load_concurrency(monkeypatch): function test_scrape_playwright_value_error_retry_failure (line 1905) | async def test_scrape_playwright_value_error_retry_failure(monkeypatch): function test_invalid_proxy_raises_error (line 1922) | async def test_invalid_proxy_raises_error(monkeypatch): function test_alazy_load_with_single_url_string (line 1937) | async def test_alazy_load_with_single_url_string(monkeypatch): function test_lazy_load_with_single_url_string (line 1956) | def test_lazy_load_with_single_url_string(monkeypatch): function test_ascrape_playwright_scroll_invalid_type (line 1974) | async def test_ascrape_playwright_scroll_invalid_type(monkeypatch): function test_alazy_load_non_iterable_urls (line 1987) | async def test_alazy_load_non_iterable_urls(): function test_lazy_load_non_iterable_urls (line 1995) | def test_lazy_load_non_iterable_urls(): function test_ascrape_playwright_caplog (line 2002) | async def test_ascrape_playwright_caplog(monkeypatch, caplog): function test_ascrape_with_js_support_context_error_cleanup (line 2096) | async def test_ascrape_with_js_support_context_error_cleanup(monkeypatch): function test_lazy_load_with_none_urls (line 2139) | async def test_lazy_load_with_none_urls(monkeypatch): function test_lazy_load_sequential_timing (line 2147) | def test_lazy_load_sequential_timing(monkeypatch): function test_lazy_load_with_tuple_urls (line 2170) | def test_lazy_load_with_tuple_urls(monkeypatch): FILE: tests/test_cleanup_html.py function test_extract_from_script_tags (line 13) | def test_extract_from_script_tags(): function test_cleanup_html_success (line 32) | def test_cleanup_html_success(): function test_cleanup_html_no_body (line 61) | def test_cleanup_html_no_body(): function test_minify_html (line 70) | def test_minify_html(): function test_reduce_html_reduction_0 (line 86) | def test_reduce_html_reduction_0(): function test_reduce_html_reduction_1 (line 101) | def test_reduce_html_reduction_1(): function test_reduce_html_reduction_2 (line 120) | def test_reduce_html_reduction_2(): function test_reduce_html_no_body (line 142) | def test_reduce_html_no_body(): FILE: tests/test_csv_scraper_multi_graph.py class DummyGraph (line 12) | class DummyGraph: method __init__ (line 15) | def __init__(self, answer): method execute (line 18) | def execute(self, inputs): class DummyGraphNoAnswer (line 23) | class DummyGraphNoAnswer: method execute (line 26) | def execute(self, inputs): class DummyBaseGraph (line 31) | class DummyBaseGraph: method __init__ (line 34) | def __init__(self, nodes, edges, entry_point, graph_name): function test_run_no_answer (line 58) | def test_run_no_answer(): function test_create_graph_structure (line 74) | def test_create_graph_structure(monkeypatch): function test_config_deepcopy (line 103) | def test_config_deepcopy(): function test_run_argument_passing (line 119) | def test_run_argument_passing(): function test_run_with_exception_in_execute (line 146) | def test_run_with_exception_in_execute(): FILE: tests/test_depth_search_graph.py class TestDepthSearchGraph (line 9) | class TestDepthSearchGraph: method test_depth_search_graph_initialization (line 19) | def test_depth_search_graph_initialization(self, source, expected_inpu... FILE: tests/test_fetch_node_timeout.py class TestFetchNodeTimeout (line 20) | class TestFetchNodeTimeout(unittest.TestCase): method setUp (line 23) | def setUp(self): method tearDown (line 57) | def tearDown(self): method test_timeout_default_value (line 65) | def test_timeout_default_value(self): method test_timeout_custom_value (line 74) | def test_timeout_custom_value(self): method test_timeout_none_value (line 83) | def test_timeout_none_value(self): method test_timeout_no_config (line 92) | def test_timeout_no_config(self): method test_requests_get_with_timeout (line 102) | def test_requests_get_with_timeout(self, mock_requests): method test_requests_get_without_timeout_when_none (line 125) | def test_requests_get_without_timeout_when_none(self, mock_requests): method test_pdf_parsing_with_timeout (line 147) | def test_pdf_parsing_with_timeout(self): method test_pdf_parsing_timeout_exceeded (line 163) | def test_pdf_parsing_timeout_exceeded(self): method test_timeout_propagated_to_chromium_loader (line 189) | def test_timeout_propagated_to_chromium_loader(self, mock_loader_class): method test_timeout_not_overridden_in_loader_kwargs (line 213) | def test_timeout_not_overridden_in_loader_kwargs(self, mock_loader_cla... FILE: tests/test_generate_answer_node.py class DummyLLM (line 19) | class DummyLLM: method __call__ (line 20) | def __call__(self, *args, **kwargs): class DummyLogger (line 24) | class DummyLogger: method info (line 25) | def info(self, msg): method error (line 28) | def error(self, msg): function dummy_node (line 33) | def dummy_node(): function test_process_missing_content_and_user_prompt (line 45) | def test_process_missing_content_and_user_prompt(dummy_node): class DummyLLMWithPipe (line 59) | class DummyLLMWithPipe: method __or__ (line 64) | def __or__(self, other): method __call__ (line 67) | def __call__(self, *args, **kwargs): function dummy_node_with_pipe (line 72) | def dummy_node_with_pipe(): function test_execute_multiple_chunks (line 84) | def test_execute_multiple_chunks(dummy_node_with_pipe): function test_execute_single_chunk (line 109) | def test_execute_single_chunk(dummy_node_with_pipe): function test_execute_merge_json_decode_error (line 125) | def test_execute_merge_json_decode_error(dummy_node_with_pipe): class DummyChain (line 152) | class DummyChain: method invoke (line 156) | def invoke(self, inputs): function dummy_node_for_process (line 161) | def dummy_node_for_process(): function test_process_success (line 174) | def test_process_success(dummy_node_for_process): function test_execute_timeout_single_chunk (line 190) | def test_execute_timeout_single_chunk(dummy_node_with_pipe): function test_execute_script_creator_single_chunk (line 206) | def test_execute_script_creator_single_chunk(): class DummyChatOllama (line 238) | class DummyChatOllama(ChatOllama): class DummySchema (line 242) | class DummySchema: method model_json_schema (line 245) | def model_json_schema(self): function test_init_chat_ollama_format (line 249) | def test_init_chat_ollama_format(): FILE: tests/test_json_scraper_graph.py class TestJSONScraperGraph (line 9) | class TestJSONScraperGraph: method mock_llm_model (line 11) | def mock_llm_model(self): method mock_embedder_model (line 15) | def mock_embedder_model(self): method test_json_scraper_graph_with_directory (line 21) | def test_json_scraper_graph_with_directory( method test_json_scraper_graph_with_single_file (line 78) | def test_json_scraper_graph_with_single_file( method test_json_scraper_graph_no_answer_found (line 135) | def test_json_scraper_graph_no_answer_found( method test_json_scraper_graph_with_custom_schema (line 189) | def test_json_scraper_graph_with_custom_schema( FILE: tests/test_minimax_models.py function models_tokens (line 11) | def models_tokens(): function test_minimax_m27_in_model_list (line 28) | def test_minimax_m27_in_model_list(models_tokens): function test_minimax_m27_listed_first (line 35) | def test_minimax_m27_listed_first(models_tokens): function test_minimax_old_models_still_present (line 42) | def test_minimax_old_models_still_present(models_tokens): function test_minimax_m27_token_limits (line 51) | def test_minimax_m27_token_limits(models_tokens): FILE: tests/test_models_tokens.py class TestModelsTokens (line 4) | class TestModelsTokens: method test_openai_tokens (line 7) | def test_openai_tokens(self): method test_azure_openai_tokens (line 18) | def test_azure_openai_tokens(self): method test_google_providers (line 26) | def test_google_providers(self): method test_non_existent_provider (line 41) | def test_non_existent_provider(self): method test_total_model_keys (line 47) | def test_total_model_keys(self): method test_specific_token_value (line 52) | def test_specific_token_value(self): method test_non_empty_model_keys (line 58) | def test_non_empty_model_keys(self): method test_token_limits_range (line 66) | def test_token_limits_range(self): method test_provider_structure (line 74) | def test_provider_structure(self): method test_non_empty_provider (line 81) | def test_non_empty_provider(self): method test_specific_model_token_values (line 88) | def test_specific_model_token_values(self): method test_providers_count (line 108) | def test_providers_count(self): method test_non_existent_model (line 114) | def test_non_existent_model(self): method test_no_whitespace_in_model_names (line 121) | def test_no_whitespace_in_model_names(self): method test_specific_models_additional (line 130) | def test_specific_models_additional(self): method test_nvidia_specific (line 159) | def test_nvidia_specific(self): method test_groq_specific (line 168) | def test_groq_specific(self): method test_togetherai_specific (line 177) | def test_togetherai_specific(self): method test_ernie_all_values (line 187) | def test_ernie_all_values(self): FILE: tests/test_omni_search_graph.py class DummyGraph (line 8) | class DummyGraph: method __init__ (line 9) | def __init__(self, final_state): method execute (line 12) | def execute(self, inputs): class DummySchema (line 18) | class DummySchema(BaseModel): class TestOmniSearchGraph (line 22) | class TestOmniSearchGraph: method test_run_with_answer (line 25) | def test_run_with_answer(self): method test_run_without_answer (line 42) | def test_run_without_answer(self): method test_create_graph_structure (line 58) | def test_create_graph_structure(self): method test_config_deepcopy (line 81) | def test_config_deepcopy(self): method test_schema_deepcopy (line 96) | def test_schema_deepcopy(self): FILE: tests/test_scrape_do.py function test_scrape_do_fetch_without_proxy (line 9) | def test_scrape_do_fetch_without_proxy(): function test_scrape_do_fetch_with_proxy_no_geo (line 36) | def test_scrape_do_fetch_with_proxy_no_geo(): function test_scrape_do_fetch_with_proxy_with_geo (line 70) | def test_scrape_do_fetch_with_proxy_with_geo(): function test_scrape_do_fetch_without_proxy_custom_env (line 107) | def test_scrape_do_fetch_without_proxy_custom_env(): function test_scrape_do_fetch_with_proxy_custom_env (line 131) | def test_scrape_do_fetch_with_proxy_custom_env(): function test_scrape_do_fetch_exception_propagation (line 161) | def test_scrape_do_fetch_exception_propagation(): function test_scrape_do_fetch_with_proxy_with_geo_and_super_false (line 174) | def test_scrape_do_fetch_with_proxy_with_geo_and_super_false(): function test_scrape_do_fetch_empty_token_without_proxy (line 208) | def test_scrape_do_fetch_empty_token_without_proxy(): function test_scrape_do_fetch_with_proxy_with_empty_geo (line 230) | def test_scrape_do_fetch_with_proxy_with_empty_geo(): function test_scrape_do_fetch_api_encoding_special_characters (line 265) | def test_scrape_do_fetch_api_encoding_special_characters(): FILE: tests/test_script_creator_multi_graph.py function set_api_key_env (line 12) | def set_api_key_env(monkeypatch): class DummyGraph (line 17) | class DummyGraph: method __init__ (line 18) | def __init__(self, final_state, execution_info): method execute (line 22) | def execute(self, inputs): class DummySchema (line 26) | class DummySchema(BaseModel): class TestScriptCreatorMultiGraph (line 30) | class TestScriptCreatorMultiGraph: method test_run_success (line 33) | def test_run_success(self): method test_run_failure (line 50) | def test_run_failure(self): method test_create_graph_structure (line 65) | def test_create_graph_structure(self): method test_config_deepcopy (line 84) | def test_config_deepcopy(self): method test_init_attributes (line 98) | def test_init_attributes(self): method test_run_no_schema (line 116) | def test_run_no_schema(self): method test_create_graph_node_configs (line 130) | def test_create_graph_node_configs(self): method test_entry_point_node (line 150) | def test_entry_point_node(self): method test_run_exception (line 162) | def test_run_exception(self): method test_run_with_empty_prompt (line 181) | def test_run_with_empty_prompt(self): method test_run_called_twice (line 196) | def test_run_called_twice(self): FILE: tests/test_search_graph.py class TestSearchGraph (line 8) | class TestSearchGraph: method test_get_considered_urls (line 17) | def test_get_considered_urls(self, mock_create_llm, mock_base_graph, u... method test_run_no_answer_found (line 41) | def test_run_no_answer_found(self, mock_create_llm, mock_base_graph): method test_max_results_config (line 68) | def test_max_results_config( method test_custom_search_engine_config (line 97) | def test_custom_search_engine_config( FILE: tests/utils/convert_to_md_test.py function test_basic_html_to_md (line 4) | def test_basic_html_to_md(): function test_html_with_links_and_images (line 9) | def test_html_with_links_and_images(): function test_html_with_tables (line 14) | def test_html_with_tables(): function test_empty_html (line 25) | def test_empty_html(): function test_complex_html_structure (line 30) | def test_complex_html_structure(): FILE: tests/utils/copy_utils_test.py class PydantObject (line 8) | class PydantObject(BaseModel): class NormalObject (line 12) | class NormalObject: method __init__ (line 13) | def __init__(self, value): class NonDeepcopyable (line 18) | class NonDeepcopyable: method __init__ (line 19) | def __init__(self, value): method __deepcopy__ (line 22) | def __deepcopy__(self, memo): class WithoutDict (line 26) | class WithoutDict: method __init__ (line 29) | def __init__(self, value): method __deepcopy__ (line 32) | def __deepcopy__(self, memo): method __copy__ (line 35) | def __copy__(self): class NonCopyableObject (line 39) | class NonCopyableObject: method __init__ (line 42) | def __init__(self, value): method __deepcopy__ (line 45) | def __deepcopy__(self, memo): method __copy__ (line 48) | def __copy__(self): function test_deepcopy_simple_dict (line 52) | def test_deepcopy_simple_dict(): function test_deepcopy_simple_list (line 60) | def test_deepcopy_simple_list(): function test_deepcopy_with_tuple (line 68) | def test_deepcopy_with_tuple(): function test_deepcopy_with_frozenset (line 76) | def test_deepcopy_with_frozenset(): function test_deepcopy_with_object (line 83) | def test_deepcopy_with_object(): function test_deepcopy_with_custom_deepcopy_fallback (line 91) | def test_deepcopy_with_custom_deepcopy_fallback(): function test_shallow_copy_fallback (line 98) | def test_shallow_copy_fallback(): function test_circular_reference (line 105) | def test_circular_reference(): function test_deepcopy_object_without_dict (line 113) | def test_deepcopy_object_without_dict(): function test_unhandled_type (line 152) | def test_unhandled_type(): function test_client (line 158) | def test_client(): function test_circular_reference_in_dict (line 174) | def test_circular_reference_in_dict(): function test_with_pydantic (line 185) | def test_with_pydantic(): function test_with_boto3 (line 192) | def test_with_boto3(): FILE: tests/utils/parse_state_keys_test.py function test_parse_expression (line 8) | def test_parse_expression(): FILE: tests/utils/research_web_test.py function test_google_search (line 8) | def test_google_search(): function test_bing_search (line 15) | def test_bing_search(): function test_invalid_search_engine (line 22) | def test_invalid_search_engine(): function test_max_results (line 28) | def test_max_results(): FILE: tests/utils/test_proxy_rotation.py function test_search_proxy_servers_success (line 14) | def test_search_proxy_servers_success(): function test_search_proxy_servers_exception (line 28) | def test_search_proxy_servers_exception(): function test_parse_proxy_success (line 40) | def test_parse_proxy_success(): function test_parse_proxy_exception (line 52) | def test_parse_proxy_exception(): function test_search_proxy_success (line 61) | def test_search_proxy_success(): function test_is_ipv4_address (line 69) | def test_is_ipv4_address(): function test_parse_or_search_proxy_success (line 75) | def test_parse_or_search_proxy_success(): function test_parse_or_search_proxy_exception (line 101) | def test_parse_or_search_proxy_exception(): function test_parse_or_search_proxy_unknown_server (line 113) | def test_parse_or_search_proxy_unknown_server(): FILE: tests/utils/test_sys_dynamic_import.py function _create_sample_file (line 9) | def _create_sample_file(filepath: str, content: str): function _delete_sample_file (line 15) | def _delete_sample_file(filepath: str): function test_srcfile_import_success (line 21) | def test_srcfile_import_success(): function test_srcfile_import_missing_spec (line 36) | def test_srcfile_import_missing_spec(): function test_srcfile_import_missing_spec_loader (line 44) | def test_srcfile_import_missing_spec_loader(mocker): function test_dynamic_import_success (line 62) | def test_dynamic_import_success(): function test_dynamic_import_module_already_imported (line 74) | def test_dynamic_import_module_already_imported(): function test_dynamic_import_import_error_with_custom_message (line 86) | def test_dynamic_import_import_error_with_custom_message():