12
12
def _convert_timestamp (timestamp , precision = None ):
13
13
if isinstance (timestamp , int ):
14
14
return timestamp # assume precision is correct if timestamp is int
15
- if isinstance (_force_text (timestamp ), text_type ):
15
+ if isinstance (_get_unicode (timestamp ), text_type ):
16
16
timestamp = parse (timestamp )
17
17
if isinstance (timestamp , datetime ):
18
18
ns = (
@@ -32,6 +32,7 @@ def _convert_timestamp(timestamp, precision=None):
32
32
33
33
34
34
def _escape_tag (tag ):
35
+ tag = _get_unicode (tag , force = True )
35
36
return tag .replace (
36
37
"\\ " , "\\ \\ "
37
38
).replace (
@@ -44,21 +45,23 @@ def _escape_tag(tag):
44
45
45
46
46
47
def _escape_value (value ):
47
- value = _force_text (value )
48
- if isinstance (value , text_type ):
48
+ value = _get_unicode (value )
49
+ if isinstance (value , text_type ) and value != '' :
49
50
return "\" {}\" " .format (value .replace (
50
51
"\" " , "\\ \" "
51
52
))
52
53
else :
53
54
return str (value )
54
55
55
56
56
- def _force_text (data ):
57
+ def _get_unicode (data , force = False ):
57
58
"""
58
59
Try to return a text aka unicode object from the given data.
59
60
"""
60
61
if isinstance (data , binary_type ):
61
62
return data .decode ('utf-8' )
63
+ elif force :
64
+ return str (data )
62
65
else :
63
66
return data
64
67
@@ -74,7 +77,7 @@ def make_lines(data, precision=None):
74
77
elements = []
75
78
76
79
# add measurement name
77
- measurement = _escape_tag (_force_text (
80
+ measurement = _escape_tag (_get_unicode (
78
81
point .get ('measurement' , data .get ('measurement' ))
79
82
))
80
83
key_values = [measurement ]
@@ -90,6 +93,7 @@ def make_lines(data, precision=None):
90
93
for tag_key in sorted (tags .keys ()):
91
94
key = _escape_tag (tag_key )
92
95
value = _escape_tag (tags [tag_key ])
96
+
93
97
if key != '' and value != '' :
94
98
key_values .append ("{key}={value}" .format (key = key , value = value ))
95
99
key_values = ',' .join (key_values )
@@ -107,7 +111,7 @@ def make_lines(data, precision=None):
107
111
108
112
# add timestamp
109
113
if 'time' in point :
110
- timestamp = _force_text (str (int (
114
+ timestamp = _get_unicode (str (int (
111
115
_convert_timestamp (point ['time' ], precision )
112
116
)))
113
117
elements .append (timestamp )
0 commit comments