File tree 2 files changed +35
-7
lines changed
Filter options
2 files changed +35
-7
lines changed
Original file line number Diff line number Diff line change @@ -47,9 +47,13 @@ def _escape_tag(tag):
47
47
def _escape_value (value ):
48
48
value = _get_unicode (value )
49
49
if isinstance (value , text_type ) and value != '' :
50
- return "\" {}\" " .format (value .replace (
51
- "\" " , "\\ \" "
52
- ))
50
+ return "\" {}\" " .format (
51
+ value .replace (
52
+ "\" " , "\\ \" "
53
+ ).replace (
54
+ "\n " , "\\ n"
55
+ )
56
+ )
53
57
else :
54
58
return str (value )
55
59
@@ -60,6 +64,8 @@ def _get_unicode(data, force=False):
60
64
"""
61
65
if isinstance (data , binary_type ):
62
66
return data .decode ('utf-8' )
67
+ elif data is None :
68
+ return ''
63
69
elif force :
64
70
return str (data )
65
71
else :
@@ -102,10 +108,13 @@ def make_lines(data, precision=None):
102
108
# add fields
103
109
field_values = []
104
110
for field_key in sorted (point ['fields' ].keys ()):
105
- field_values .append ("{key}={value}" .format (
106
- key = _escape_tag (field_key ),
107
- value = _escape_value (point ['fields' ][field_key ]),
108
- ))
111
+ key = _escape_tag (field_key )
112
+ value = _escape_value (point ['fields' ][field_key ])
113
+ if key != '' and value != '' :
114
+ field_values .append ("{key}={value}" .format (
115
+ key = key ,
116
+ value = value
117
+ ))
109
118
field_values = ',' .join (field_values )
110
119
elements .append (field_values )
111
120
Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ def test_make_lines(self):
10
10
data = {
11
11
"tags" : {
12
12
"empty_tag" : "" ,
13
+ "none_tag" : None ,
13
14
"integer_tag" : 2 ,
14
15
"string_tag" : "hello"
15
16
},
@@ -19,6 +20,7 @@ def test_make_lines(self):
19
20
"fields" : {
20
21
"string_val" : "hello!" ,
21
22
"int_val" : 1 ,
23
+ "none_field" : None ,
22
24
}
23
25
}
24
26
]
@@ -29,3 +31,20 @@ def test_make_lines(self):
29
31
'test,integer_tag=2,string_tag=hello '
30
32
'int_val=1,string_val="hello!"\n '
31
33
)
34
+
35
+ def test_string_val_newline (self ):
36
+ data = {
37
+ "points" : [
38
+ {
39
+ "measurement" : "m1" ,
40
+ "fields" : {
41
+ "multi_line" : "line1\n line1\n line3"
42
+ }
43
+ }
44
+ ]
45
+ }
46
+
47
+ self .assertEqual (
48
+ line_protocol .make_lines (data ),
49
+ 'm1 multi_line="line1\\ nline1\\ nline3"\n '
50
+ )
You can’t perform that action at this time.
0 commit comments