Example #1
0
 def serialise_tracker(self, tracker: "DialogueStateTracker") -> Dict:
     """Serializes the tracker, returns object with decimal types"""
     d = tracker.as_dialogue().as_dict()
     d.update({
         "sender_id": tracker.sender_id,
     })
     # DynamoDB cannot store `float`s, so we'll convert them to `Decimal`s
     return core_utils.replace_floats_with_decimals(d)
Example #2
0
 def serialise_tracker(self, tracker: "DialogueStateTracker") -> Dict:
     """Serializes the tracker, returns object with decimal types"""
     d = tracker.as_dialogue().as_dict()
     d.update(
         {
             "sender_id": tracker.sender_id,
             "session_date": int(datetime.now(tz=timezone.utc).timestamp()),
         }
     )
     return replace_floats_with_decimals(d)
Example #3
0
def test_float_conversion_to_decimal():
    # Create test objects
    d = {
        "int": -1,
        "float": 2.1,
        "list": ["one", "two"],
        "list_of_floats": [1.0, -2.1, 3.2],
        "nested_dict_with_floats": {"list_with_floats": [4.5, -5.6], "float": 6.7},
    }
    d_replaced = replace_floats_with_decimals(d)

    assert isinstance(d_replaced["int"], int)
    assert isinstance(d_replaced["float"], Decimal)
    for t in d_replaced["list"]:
        assert isinstance(t, str)
    for f in d_replaced["list_of_floats"]:
        assert isinstance(f, Decimal)
    for f in d_replaced["nested_dict_with_floats"]["list_with_floats"]:
        assert isinstance(f, Decimal)
    assert isinstance(d_replaced["nested_dict_with_floats"]["float"], Decimal)
Example #4
0
def test_float_conversion_to_decimal():
    # Create test objects
    d = {
        "int": -1,
        "float": 2.1,
        "float_round": 1579507733.1107571125030517578125,
        "decimal_round": Decimal("0.92383747394838437473739439744"),
        "list": ["one", "two"],
        "list_of_floats": [1.0, -2.1, 3.2],
        "nested_dict_with_floats": {"list_with_floats": [4.5, -5.6], "float": 6.7},
    }
    d_replaced = replace_floats_with_decimals(d)

    assert isinstance(d_replaced["int"], int)
    assert isinstance(d_replaced["float"], Decimal)
    assert d_replaced["float_round"] == Decimal("1579507733.110757113")
    assert d_replaced["decimal_round"] == Decimal("0.923837474")
    for t in d_replaced["list"]:
        assert isinstance(t, str)
    for f in d_replaced["list_of_floats"]:
        assert isinstance(f, Decimal)
    for f in d_replaced["nested_dict_with_floats"]["list_with_floats"]:
        assert isinstance(f, Decimal)
    assert isinstance(d_replaced["nested_dict_with_floats"]["float"], Decimal)
Example #5
0
def test_replace_floats_with_decimals(_input: Any, expected: Any):
    assert utils.replace_floats_with_decimals(_input) == expected