Skip to content

Commit

Permalink
fix: string conversion in dataset utils (#222)
Browse files Browse the repository at this point in the history
* fix: string conversion in dataset utils

* add upper/lower conversion to replace param method

* update changelog
  • Loading branch information
Raúl Bejerano Urrea committed Mar 10, 2021
1 parent 773b0c3 commit 153fa39
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 3 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.rst
Expand Up @@ -7,6 +7,8 @@ v1.9.1
*Release date: In development*

- Move CI from Travis to Github Actions
- Fix string conversion in dataset utilities
- Add upper/lower conversion to replace param method

v1.9.0
------
Expand Down
22 changes: 21 additions & 1 deletion toolium/test/utils/test_dataset_utils.py
Expand Up @@ -85,12 +85,18 @@ def test_replace_param_false():
assert param is False


def test_replace_param_str():
def test_replace_param_str_int():
param = replace_param("[STR:28]")
assert type(param) == str
assert param == "28"


def test_replace_param_str():
param = replace_param("[STR:abc]")
assert type(param) == str
assert param == "abc"


def test_replace_param_int():
param = replace_param("[INT:28]")
assert type(param) == int
Expand Down Expand Up @@ -201,3 +207,17 @@ def test_replace_param_float_with_length():
def test_replace_param_float_array_with_length():
param = replace_param("[FLOAT_ARRAY_WITH_LENGTH_4]")
assert param == "[FLOAT_ARRAY_WITH_LENGTH_4]"


def test_replace_param_upper():
param = replace_param("[UPPER:test]")
assert param == "TEST"
param = replace_param("[UPPER:TeSt]")
assert param == "TEST"


def test_replace_param_lower():
param = replace_param("[LOWER:TEST]")
assert param == "test"
param = replace_param("[LOWER:TeSt]")
assert param == "test"
16 changes: 14 additions & 2 deletions toolium/utils/dataset.py
Expand Up @@ -59,6 +59,9 @@ def replace_param(param, language="es"):
type_mapping_regex = "\[(DICT|LIST|INT|FLOAT|STR):(.*)\]"
type_mapping_match_group = re.match(type_mapping_regex, param)

string_format_regex = '\[(UPPER|LOWER):(.*)\]'
string_format_match_group = re.match(string_format_regex, param)

if "[MISSING_PARAM]" in param:
new_param = None
elif "[EMPTY]" in param:
Expand All @@ -81,8 +84,11 @@ def replace_param(param, language="es"):
return None
elif type_mapping_match_group and type_mapping_match_group.group(1) in \
["LIST", "DICT", "INT", "FLOAT", "STR"]:
exec(u"exec_param = {type}({value})".format(type=type_mapping_match_group.group(1).lower(),
value=type_mapping_match_group.group(2)))
if type_mapping_match_group.group(1) == "STR":
return type_mapping_match_group.group(2)
else:
exec(u"exec_param = {type}({value})".format(type=type_mapping_match_group.group(1).lower(),
value=type_mapping_match_group.group(2)))
return locals()["exec_param"]
elif date_matcher and len(date_matcher.groups()) == 3:
configuration = dict([(date_matcher.group(3).lower(), int(date_matcher.group(2).replace(
Expand All @@ -92,6 +98,12 @@ def replace_param(param, language="es"):
replace_value = reference_date + datetime.timedelta(**configuration)
return replace_value.strftime(date_format) if now else replace_value.strftime(
date_day_format)
elif string_format_match_group and string_format_match_group.group(1) in ["UPPER", "LOWER"]:
if string_format_match_group.group(1) == "UPPER":
return string_format_match_group.group(2).upper()
elif string_format_match_group.group(1) == "LOWER":
return string_format_match_group.group(2).lower()

else:
new_param = generate_fixed_length_param(param)
logger.debug("Input param: %s, output param: %s" % (param, new_param))
Expand Down

0 comments on commit 153fa39

Please sign in to comment.