Skip to content

Logic Functions

Functions for checking existence, emptiness, and membership. Functions marked vectorized operate element-wise on NumPy arrays.

from everysk.sdk.engines import Expression
expression_engine = Expression()


Existence & Emptiness

exists

exists(value)

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

is_empty(value)

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 (NaN or inf)
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

is_in(source, target)

Vectorized. Returns True if source is found within target.

  • When target is a string, checks if source is a substring.
  • When target is an array or list, checks if source is 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

contains(source, target)

The inverse of is_in: returns True if source contains target. Internally calls is_in(target, source).

  • When source is a string, checks if target is a substring.
  • When source is an array or list, checks if target is 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]