Skip to content

Commit

Permalink
feat: add JSON support to type inference logic
Browse files Browse the repository at this point in the history
  • Loading branch information
pabloge committed Oct 1, 2021
1 parent 77b2162 commit aa9c008
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 13 deletions.
4 changes: 3 additions & 1 deletion CHANGELOG.rst
@@ -1,11 +1,13 @@
Toolium Changelog
=================

v2.1.2
v2.2.0
------

*Release date: In development*

- Add JSON object/list conversion to Python dict/list in the type inference logic of the *replace_param* function

v2.1.1
------

Expand Down
2 changes: 1 addition & 1 deletion VERSION
@@ -1 +1 @@
2.1.2.dev0
2.2.0.dev0
28 changes: 18 additions & 10 deletions toolium/test/utils/test_dataset_utils.py
Expand Up @@ -231,22 +231,30 @@ def test_replace_param_lower():


def test_replace_param_type_inference():
param = replace_param('1234')
param = replace_param('1234') # int
assert param == 1234
param = replace_param('0.5')
param = replace_param('0.5') # float
assert param == 0.5
param = replace_param("{'a':'test1','b':'test2','c':'test3'}")
assert param == {'a': 'test1', 'b': 'test2', 'c': 'test3'}
param = replace_param("['1','2','3']")
assert param == ['1', '2', '3']
param = replace_param("{'a':'test1', 'b':True, 'c':None}") # dict
assert param == {'a': 'test1', 'b': True, 'c': None}
param = replace_param("['1', True,None]") # list
assert param == ['1', True, None]
param = replace_param('{"a":"test1", "b":true, "c":null}') # JSON object
assert param == {'a': 'test1', 'b': True, 'c': None}
param = replace_param('["1", true, null]') # JSON list
assert param == ['1', True, None]


def test_replace_param_type_inference_disabled():
param = replace_param('1234', infer_param_type=False)
assert param == '1234'
param = replace_param('0.5', infer_param_type=False)
assert param == '0.5'
param = replace_param("{'a':'test1','b':'test2','c':'test3'}", infer_param_type=False)
assert param == "{'a':'test1','b':'test2','c':'test3'}"
param = replace_param("['1','2','3']", infer_param_type=False)
assert param == "['1','2','3']"
param = replace_param("{'a':'test1', 'b':True, 'c':None}", infer_param_type=False)
assert param == "{'a':'test1', 'b':True, 'c':None}"
param = replace_param("['1', True, None]", infer_param_type=False)
assert param == "['1', True, None]"
param = replace_param('{"a":"test1", "b":true, "c":null}', infer_param_type=False)
assert param == '{"a":"test1", "b":true, "c":null}'
param = replace_param('["1", true, null]', infer_param_type=False)
assert param == '["1", true, null]'
6 changes: 5 additions & 1 deletion toolium/utils/dataset.py
Expand Up @@ -21,6 +21,7 @@
import logging
import random
import string
import json
from ast import literal_eval

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -243,5 +244,8 @@ def _infer_param_type(param):
try:
new_param = literal_eval(param)
except Exception:
pass
try:
new_param = json.loads(param)
except Exception:
pass
return new_param

0 comments on commit aa9c008

Please sign in to comment.