def test_search_filter_basics(): search_filter = "This is a filter string" anded_expressions = [SearchExpression(), SearchExpression()] # only anded_expressions SearchFilter(anded_expressions=anded_expressions) # only search filter SearchFilter(filter_string=search_filter) # both with pytest.raises(MlflowException) as e: SearchFilter(anded_expressions=anded_expressions, filter_string=search_filter) assert e.message.contains("Can specify only one of 'filter' or 'search_expression'")
def test_anded_expression_2(): m1 = MetricSearchExpression(key="accuracy", double=DoubleClause(comparator=">=", value=.94)) m2 = MetricSearchExpression(key="error", double=DoubleClause(comparator="<", value=.01)) m3 = MetricSearchExpression(key="mse", float=FloatClause(comparator=">=", value=5)) p1 = ParameterSearchExpression(key="a", string=StringClause(comparator="=", value="0")) p2 = ParameterSearchExpression(key="b", string=StringClause(comparator="!=", value="blah")) sf = SearchFilter( SearchRuns(anded_expressions=[ SearchExpression(metric=m1), SearchExpression(metric=m2), SearchExpression(metric=m3), SearchExpression(parameter=p1), SearchExpression(parameter=p2) ])) assert sf._parse() == [{ 'comparator': '>=', 'key': 'accuracy', 'type': 'metric', 'value': 0.94 }, { 'comparator': '<', 'key': 'error', 'type': 'metric', 'value': 0.01 }, { 'comparator': '>=', 'key': 'mse', 'type': 'metric', 'value': 5 }, { 'comparator': '=', 'key': 'a', 'type': 'parameter', 'value': '0' }, { 'comparator': '!=', 'key': 'b', 'type': 'parameter', 'value': 'blah' }]
def test_anded_expression(): se = SearchExpression(metric=MetricSearchExpression( key="accuracy", double=DoubleClause(comparator=">=", value=.94))) sf = SearchFilter(anded_expressions=[se]) assert sf._parse() == [{ "type": "metric", "key": "accuracy", "comparator": ">=", "value": 0.94 }]
def _metric_expression(self, key, comparator, val): expr = SearchExpression() expr.metric.key = key expr.metric.double.comparator = comparator expr.metric.double.value = val return expr
def _param_expression(self, key, comparator, val): expr = SearchExpression() expr.parameter.key = key expr.parameter.string.comparator = comparator expr.parameter.string.value = val return expr