Logic Functions¶
Functions for checking existence, emptiness, and membership. Functions marked vectorized operate element-wise on NumPy arrays.
Existence & Emptiness¶
exists¶
Vectorized. Returns True if value is not None, False otherwise.
expression_engine.solve('exists(value)', {'value': None})
# False
expression_engine.solve('exists(value)', {'value': 'hello'})
# True
import numpy as np
expression_engine.solve('exists(values)', {'values': np.array([None, 'a', 1, False], dtype='object')})
# [False, True, True, True]
is_empty¶
Vectorized. Returns True if value is considered empty. A value is empty when it is:
None- an empty string
'' - an empty dict
{} - an empty list
[] - a non-finite float (
NaNorinf)
expression_engine.solve('is_empty(value)', {'value': None})
# True
expression_engine.solve('is_empty(value)', {'value': ''})
# True
expression_engine.solve('is_empty(value)', {'value': 1.0})
# False
import numpy as np
expression_engine.solve('is_empty(values)', {
'values': np.array([None, '', 0, 1.0, float('nan')], dtype='object')
})
# [True, True, False, False, True]
Membership¶
is_in¶
Vectorized. Returns True if source is found within target.
- When
targetis a string, checks ifsourceis a substring. - When
targetis an array or list, checks ifsourceis one of its elements.
expression_engine.solve('is_in("FIM", "MEU FUNDO FIM IE")')
# True
expression_engine.solve('is_in("FIM", ["FIA", "FIM", "FIRF"])')
# True
expression_engine.solve('is_in("FIM", ["FIA", "FIRF"])')
# False
import numpy as np
expression_engine.solve('is_in(types, "MEU FUNDO FIM IE")', {
'types': np.array(['FI', 'FIA', 'FIM'])
})
# [True, False, True]
contains¶
The inverse of is_in: returns True if source contains target. Internally calls is_in(target, source).
- When
sourceis a string, checks iftargetis a substring. - When
sourceis an array or list, checks iftargetis one of its elements.
expression_engine.solve('contains("MEU FUNDO FIM IE", "FIM")')
# True
expression_engine.solve('contains(["FIA", "FIM", "FIRF"], "FIM")')
# True
expression_engine.solve('contains(["FIA", "FIRF"], "FIM")')
# False
import numpy as np
expression_engine.solve('contains("MEU FUNDO FIM IE", types)', {
'types': np.array(['FI', 'FIA', 'FIM'])
})
# [True, False, True]