Skip to content

Commit abe1ba0

Browse files
authored
ignore_keys in costs (#263)
* ignore_keys in costs
1 parent abe91fc commit abe1ba0

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

cads_adaptors/costing.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import warnings
44
from typing import Any
55

6+
from cads_adaptors.tools.general import ensure_list
7+
68
from . import constraints
79

810
EXCLUDED_WIDGETS = [
@@ -197,7 +199,8 @@ def estimate_number_of_fields(
197199
) -> int:
198200
weighted_values = kwargs.get("weighted_values", {})
199201
weighted_keys = kwargs.get("weighted_keys", {})
200-
excluded_variables = get_excluded_keys(form)
202+
ignore_keys: list[str] = ensure_list(kwargs.get("ignore_keys", []))
203+
excluded_variables = get_excluded_keys(form) + ensure_list(ignore_keys)
201204
number_of_values = []
202205
for variable_id, variable_value in request.items():
203206
weights_v = weighted_values.get(variable_id, {})

tests/test_10_costing.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,59 @@ def test_estimate_number_of_fields() -> None:
465465
assert number_of_fields == 6
466466

467467

468+
def test_estimate_number_of_fields_ignore_keys() -> None:
469+
form = [
470+
{
471+
"name": "key1",
472+
"label": "Key1",
473+
"details": {"values": {"value1", "value2"}},
474+
"type": "StringListWidget",
475+
},
476+
{
477+
"name": "key2",
478+
"label": "Key2",
479+
"details": {"values": {"value1", "value2"}},
480+
"type": "StringListWidget",
481+
},
482+
{
483+
"name": "key3",
484+
"label": "Key3",
485+
"details": {"values": {"value1", "value2"}},
486+
"type": "StringListWidget",
487+
},
488+
]
489+
490+
costing_kwargs = {
491+
"ignore_keys": ["key3"],
492+
}
493+
494+
request = {
495+
"key1": ["value1", "value2"],
496+
"key2": ["value1", "value2"],
497+
}
498+
number_of_fields = costing.estimate_number_of_fields(form, request)
499+
assert number_of_fields == 4
500+
number_of_fields = costing.estimate_number_of_fields(
501+
form, request, **costing_kwargs
502+
)
503+
assert number_of_fields == 4
504+
505+
request = {
506+
"key1": ["value1", "value2"],
507+
"key2": ["value1", "value2"],
508+
"key3": ["value1", "value2"],
509+
}
510+
number_of_fields = costing.estimate_number_of_fields(
511+
form,
512+
request,
513+
)
514+
assert number_of_fields == 8
515+
number_of_fields = costing.estimate_number_of_fields(
516+
form, request, **costing_kwargs
517+
)
518+
assert number_of_fields == 4
519+
520+
468521
def test_estimate_costs() -> None:
469522
from cads_adaptors import DummyCdsAdaptor
470523

0 commit comments

Comments
 (0)