Skip to content

Commit e485486

Browse files
authored
Merge pull request #399 from nodestream-proj/uppercase-normalizer
feat: add an uppercase normalizer to complement lowercase
2 parents 5036dd5 + 7a7f36b commit e485486

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

nodestream/pipeline/normalizers/__init__.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22
from .normalizer import InvalidFlagError, Normalizer
33
from .remove_trailing_dots import RemoveTrailingDots
44
from .trim_whitespace import TrimWhitespace
5+
from .uppercase_strings import UppercaseStrings
56

67
__all__ = (
7-
"Normalizer",
8+
"InvalidFlagError",
89
"LowercaseStrings",
10+
"Normalizer",
911
"RemoveTrailingDots",
10-
"InvalidFlagError",
1112
"TrimWhitespace",
13+
"UppercaseStrings",
1214
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from typing import Any
2+
3+
from .normalizer import Normalizer
4+
5+
6+
class UppercaseStrings(Normalizer, alias="uppercase_strings"):
7+
def normalize_value(self, value: Any) -> Any:
8+
return value.upper() if isinstance(value, str) else value
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import pytest
2+
from hamcrest import assert_that, equal_to
3+
4+
from nodestream.pipeline.normalizers import UppercaseStrings
5+
6+
7+
@pytest.mark.parametrize(
8+
"input_value,expected_value",
9+
[
10+
("SomERandomCaps", "SOMERANDOMCAPS"),
11+
("ALL_CAPS", "ALL_CAPS"),
12+
("all_lower", "ALL_LOWER"),
13+
("123456", "123456"),
14+
("", ""),
15+
(None, None),
16+
([1, 2, 3], [1, 2, 3]),
17+
],
18+
)
19+
def test_uppercase_strings_normalization(input_value, expected_value):
20+
subject = UppercaseStrings()
21+
assert_that(subject.normalize(input_value), equal_to(expected_value))

0 commit comments

Comments
 (0)