def _node_match_query(self, node, identifier, *args, **kwargs):
if not self._attribute_match_query(node.generate_identifiers(), identifier.lower() if isinstance(identifier,
string_instance) and not identifier.startswith(
"re:") else identifier):
return False
all_my_keys = node._str_keys + node._list_keys + node._dict_keys
if args and isinstance(args[0], (string_instance, re._pattern_type, list, tuple)):
if not self._attribute_match_query([getattr(node, node._default_test_value)], args[0]):
return False
args = args[1:]
for arg in args:
if not arg(node):
return False
for key, value in kwargs.items():
if key not in all_my_keys:
return False
if not self._attribute_match_query([getattr(node, key)], value):
return False
return True
评论列表
文章目录