refactor(parser/find_all): about ~95% speed increase

Boom!
This commit is contained in:
Karim shoair
2025-01-30 23:39:46 +02:00
parent f37538320f
commit 57090f90a4
+2 -10
View File
@@ -593,14 +593,6 @@ class Adaptor(SelectorsGeneration):
tags, patterns = set(), set() tags, patterns = set(), set()
results, functions, selectors = Adaptors([]), [], [] results, functions, selectors = Adaptors([]), [], []
def _search_tree(element: Adaptor, filter_function: Callable) -> None:
"""Collect element if it fulfills passed function otherwise, traverse the children tree and iterate"""
if filter_function(element):
results.append(element)
for branch in element.children:
_search_tree(branch, filter_function)
# Brace yourself for a wonderful journey! # Brace yourself for a wonderful journey!
for arg in args: for arg in args:
if type(arg) is str: if type(arg) is str:
@@ -661,9 +653,9 @@ class Adaptor(SelectorsGeneration):
for pattern in patterns: for pattern in patterns:
results.extend(self.find_by_regex(pattern, first_match=False)) results.extend(self.find_by_regex(pattern, first_match=False))
for result in (results or [self]): # Collect element if it fulfills passed function otherwise
for function in functions: for function in functions:
_search_tree(result, function) results.extend((results or self.below_elements).filter(function))
return results return results