Exemple #1
0
def match(data, query):
    """Checks if `data` object satisfies `query`"""
    ast = parser.parse(query)
    # validation
    KeyExistenceValidatorVisitor(ast).evaluate()

    dq = DataQueryVisitor(ast)
    return dq.evaluate(data)
Exemple #2
0
def filter(data,
           query,
           use_nested_keys=True,
           key_separator='.',
           case_sensitive=True,
           raise_keyerror=False):
    """Filters iterable. Checks if each item satisfies `query`"""
    ast = parser.parse(query)
    dq = DataQueryVisitor(ast,
                          use_nested_keys=use_nested_keys,
                          key_separator=key_separator,
                          case_sensitive=case_sensitive,
                          raise_keyerror=raise_keyerror)
    for item in data:
        if not dq.evaluate(item):
            continue
        yield item
 def test_visit_empty(self):
     parser = DataQueryParser()
     ast = parser.parse('')
     dqv = DataQueryVisitor(ast)
     self.assertFalse(dqv.evaluate({}))