Conditions/Transitions¶
Conditions represent choices to move between actions – these are read by the application builder when executing the graph.
Note that these will always be specified in order – the first condition that evaluates to True will be the selected action.
- class burr.core.action.Condition(
- keys: List[str],
- resolver: Callable[[State], bool],
- name: str = None,
- optional_keys: List[str] = None,
- __init__(
- keys: List[str],
- resolver: Callable[[State], bool],
- name: str = None,
- optional_keys: List[str] = None,
- Base condition class. Chooses keys to read from the state and a resolver function. If you want a condition that defaults to true, use Condition.default or just default. - Note that you can use a few fundamental operators to build more complex conditions: - ~operator allows you to automatically invert the condition.
- |operator allows you to OR two conditions together.
- &operator allows you to AND two conditions together.
 - Parameters:
- keys – Keys to read from the state 
- resolver – Function to resolve the condition to True or False 
- name – Name of the condition 
 
 
 - __and__(other: Condition) Condition¶
- Combines two conditions with an AND operator. This will return a new condition that is the AND of the two conditions. - To check if both foo is bar and baz is qux: - condition = Condition.when(foo="bar") & Condition.when(baz="qux") # equivalent to condition = Condition.when(foo="bar", baz="qux") - Parameters:
- other – Other condition to AND with 
- Returns:
- A new condition that is the AND of the two conditions 
 
 - __or__(other: Condition) Condition¶
- Combines two conditions with an OR operator. This will return a new condition that is the OR of the two conditions. - To check if either foo is bar or baz is qux: - condition = Condition.when(foo="bar") | Condition.when(baz="qux") - Parameters:
- other – Other condition to OR with 
- Returns:
- A new condition that is the OR of the two conditions 
 
 - static expr(expr: str) Condition¶
- Returns a condition that evaluates the given expression. Expression must use only state variables and Python operators. Do not trust that anything else will work. - Do not accept expressions generated from user-inputted text, this has the potential to be unsafe. - You can also refer to this as - from burr.core import exprin the API.- Parameters:
- expr – Expression to evaluate 
- Returns:
- A condition that evaluates the given expression 
 
 - static lmda(
- resolver: Callable[[State], bool],
- state_keys: List[str],
- Returns a condition that evaluates the given function of State. Note that this is just a simple wrapper over the Condition object. - This does not (yet) support optional (default) arguments. - Parameters:
- fn 
- state_keys 
 
- Returns:
 
 - property reads: list[str]¶
- Returns the keys from the state that this function reads - Returns:
- A list of keys 
 
 - run(state: State, **run_kwargs) dict¶
- Runs the function on the given state and returns the result. The result is just a key/value dictionary. - Parameters:
- state – State to run the function on 
- run_kwargs – Additional arguments to the function passed at runtime. 
 
- Returns:
- Result of the function 
 
 - classmethod when(**kwargs)¶
- Returns a condition that checks if the given keys are in the state and equal to the given values. - You can also refer to this as - from burr.core import whenin the API.- Parameters:
- kwargs – Keyword arguments of keys and values to check – will be an AND condition 
- Returns:
- A condition that checks if the given keys are in the state and equal to the given values