Skip to content

Commit c1fec1a

Browse files
committed
allow for single output processor
1 parent 308ff99 commit c1fec1a

File tree

4 files changed

+34
-11
lines changed

4 files changed

+34
-11
lines changed

src/datajudge/constraints/base.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import abc
22
from dataclasses import dataclass, field
33
from functools import lru_cache
4-
from typing import Any, Callable, Collection, List, Optional, Tuple, TypeVar
4+
from typing import Any, Callable, Collection, List, Optional, Tuple, TypeVar, Union
55

66
import sqlalchemy as sa
77

@@ -120,7 +120,9 @@ def __init__(
120120
ref2=None,
121121
ref_value: Any = None,
122122
name: str = None,
123-
output_processors: List[OutputProcessor] = None,
123+
output_processors: Optional[
124+
Union[OutputProcessor, List[OutputProcessor]]
125+
] = None,
124126
):
125127
self._check_if_valid_between_or_within(ref2, ref_value)
126128
self.ref = ref
@@ -131,6 +133,11 @@ def __init__(
131133
self.target_selections: OptionalSelections = None
132134
self.factual_queries: Optional[List[str]] = None
133135
self.target_queries: Optional[List[str]] = None
136+
137+
if (output_processors is not None) and (
138+
not isinstance(output_processors, list)
139+
):
140+
output_processors = [output_processors]
134141
self.output_processors = output_processors
135142

136143
def _check_if_valid_between_or_within(

src/datajudge/constraints/uniques.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,9 @@ def __init__(
102102
self,
103103
ref: DataReference,
104104
name: str = None,
105-
output_processors: List[OutputProcessor] = None,
105+
output_processors: Optional[
106+
Union[OutputProcessor, List[OutputProcessor]]
107+
] = None,
106108
*,
107109
ref2: DataReference = None,
108110
uniques: Collection = None,

src/datajudge/requirements.py

+21-7
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,9 @@ def add_uniques_equality_constraint(
263263
filter_func: Callable[[List[T]], List[T]] = None,
264264
map_func: Callable[[T], T] = None,
265265
reduce_func: Callable[[Collection], Collection] = None,
266-
output_processors: List[OutputProcessor] = None,
266+
output_processors: Optional[
267+
Union[OutputProcessor, List[OutputProcessor]]
268+
] = None,
267269
condition: Condition = None,
268270
name: str = None,
269271
):
@@ -311,7 +313,9 @@ def add_uniques_superset_constraint(
311313
reduce_func: Callable[[Collection], Collection] = None,
312314
condition: Condition = None,
313315
name: str = None,
314-
output_processors: List[OutputProcessor] = None,
316+
output_processors: Optional[
317+
Union[OutputProcessor, List[OutputProcessor]]
318+
] = None,
315319
):
316320
"""Check if unique values of columns are contained in the reference data.
317321
@@ -365,7 +369,9 @@ def add_uniques_subset_constraint(
365369
reduce_func: Callable[[Collection], Collection] = None,
366370
condition: Condition = None,
367371
name: str = None,
368-
output_processors: List[OutputProcessor] = None,
372+
output_processors: Optional[
373+
Union[OutputProcessor, List[OutputProcessor]]
374+
] = None,
369375
):
370376
"""Check if the data's unique values are contained in a given set of values.
371377
@@ -867,7 +873,9 @@ def add_functional_dependency_constraint(
867873
value_columns: List[str],
868874
condition: Condition = None,
869875
name: str = None,
870-
output_processors: List[OutputProcessor] = None,
876+
output_processors: Optional[
877+
Union[OutputProcessor, List[OutputProcessor]]
878+
] = None,
871879
):
872880
"""
873881
Expresses a functional dependency, a constraint where the `value_columns` are uniquely determined by the `key_columns`.
@@ -1464,7 +1472,9 @@ def add_uniques_equality_constraint(
14641472
filter_func: Callable[[List[T]], List[T]] = None,
14651473
map_func: Callable[[T], T] = None,
14661474
reduce_func: Callable[[Collection], Collection] = None,
1467-
output_processors: List[OutputProcessor] = None,
1475+
output_processors: Optional[
1476+
Union[OutputProcessor, List[OutputProcessor]]
1477+
] = None,
14681478
condition1: Condition = None,
14691479
condition2: Condition = None,
14701480
name: str = None,
@@ -1515,7 +1525,9 @@ def add_uniques_superset_constraint(
15151525
condition1: Condition = None,
15161526
condition2: Condition = None,
15171527
name: str = None,
1518-
output_processors: List[OutputProcessor] = None,
1528+
output_processors: Optional[
1529+
Union[OutputProcessor, List[OutputProcessor]]
1530+
] = None,
15191531
):
15201532
"""Check if unique values of columns are contained in the reference data.
15211533
@@ -1572,7 +1584,9 @@ def add_uniques_subset_constraint(
15721584
condition1: Condition = None,
15731585
condition2: Condition = None,
15741586
name: str = None,
1575-
output_processors: List[OutputProcessor] = None,
1587+
output_processors: Optional[
1588+
Union[OutputProcessor, List[OutputProcessor]]
1589+
] = None,
15761590
):
15771591
"""Check if the given columns's unique values in are contained in reference data.
15781592

tests/integration/test_integration.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ def test_uniques_equality_within(engine, unique_table1, data):
321321
[(0, "hi0"), (1, "hi0")],
322322
filternull_element_or_tuple_any,
323323
None,
324-
[output_processor_sort],
324+
output_processor_sort,
325325
None,
326326
"column(s) 'col_int', 'col_varchar' has the excess element(s) '[(1, 'hi1'), (2, 'hi1'), (3, 'hi2'), (4, 'hi2'), (4, 'hi3'), (5, 'hi3'), (6, 'hi4'), (7, 'hi4'), (7, 'hi5'), (8, 'hi5'), (9, 'hi6'), (10, 'hi6'), (10, 'hi7'), (11, 'hi7'), (12, 'hi8'), (13, 'hi8'), (13, 'hi9'), (14, 'hi9'), (15, 'hi10'), (16, 'hi10'), (16, 'hi11'), (17, 'hi11'), (18, 'hi12'), (19, 'hi12'), (19, 'hi13'), (20, 'hi13'), (21, 'hi14'), (22, 'hi14'), (22, 'hi15'), (23, 'hi15'), (24, 'hi16'), (25, 'hi16'), (25, 'hi17'), (26, 'hi17'), (27, 'hi18'), (28, 'hi18'), (28, 'hi19'), (29, 'hi19')]' when compared with the reference values. ",
327327
),

0 commit comments

Comments
 (0)