@@ -102,6 +102,49 @@ def _get_unicode(data, force=False):
102
102
return data
103
103
104
104
105
+ def make_line (measurement , tags = None , fields = None , time = None , precision = None ):
106
+ tags = tags or {}
107
+ fields = fields or {}
108
+
109
+ line = _escape_tag (_get_unicode (measurement ))
110
+
111
+ # tags should be sorted client-side to take load off server
112
+ tag_list = []
113
+ for tag_key in sorted (tags .keys ()):
114
+ key = _escape_tag (tag_key )
115
+ value = _escape_tag (tags [tag_key ])
116
+
117
+ if key != '' and value != '' :
118
+ tag_list .append (
119
+ "{key}={value}" .format (key = key , value = value )
120
+ )
121
+
122
+ if tag_list :
123
+ line += ',' + ',' .join (tag_list )
124
+
125
+ field_list = []
126
+ for field_key in sorted (fields .keys ()):
127
+ key = _escape_tag (field_key )
128
+ value = _escape_value (fields [field_key ])
129
+
130
+ if key != '' and value != '' :
131
+ field_list .append ("{key}={value}" .format (
132
+ key = key ,
133
+ value = value
134
+ ))
135
+
136
+ if field_list :
137
+ line += ' ' + ',' .join (field_list )
138
+
139
+ if time :
140
+ timestamp = _get_unicode (str (int (
141
+ _convert_timestamp (time , precision )
142
+ )))
143
+ line += ' ' + timestamp
144
+
145
+ return line
146
+
147
+
105
148
def make_lines (data , precision = None ):
106
149
"""
107
150
Extracts the points from the given dict and returns a Unicode string
@@ -110,52 +153,20 @@ def make_lines(data, precision=None):
110
153
lines = []
111
154
static_tags = data .get ('tags' , None )
112
155
for point in data ['points' ]:
113
- elements = []
114
-
115
- # add measurement name
116
- measurement = _escape_tag (_get_unicode (
117
- point .get ('measurement' , data .get ('measurement' ))
118
- ))
119
- key_values = [measurement ]
120
-
121
- # add tags
122
156
if static_tags is None :
123
157
tags = point .get ('tags' , {})
124
158
else :
125
159
tags = copy (static_tags )
126
160
tags .update (point .get ('tags' , {}))
127
161
128
- # tags should be sorted client-side to take load off server
129
- for tag_key in sorted (tags .keys ()):
130
- key = _escape_tag (tag_key )
131
- value = _escape_tag (tags [tag_key ])
132
-
133
- if key != '' and value != '' :
134
- key_values .append ("{key}={value}" .format (key = key , value = value ))
135
- key_values = ',' .join (key_values )
136
- elements .append (key_values )
137
-
138
- # add fields
139
- field_values = []
140
- for field_key in sorted (point ['fields' ].keys ()):
141
- key = _escape_tag (field_key )
142
- value = _escape_value (point ['fields' ][field_key ])
143
- if key != '' and value != '' :
144
- field_values .append ("{key}={value}" .format (
145
- key = key ,
146
- value = value
147
- ))
148
- field_values = ',' .join (field_values )
149
- elements .append (field_values )
150
-
151
- # add timestamp
152
- if 'time' in point :
153
- timestamp = _get_unicode (str (int (
154
- _convert_timestamp (point ['time' ], precision )
155
- )))
156
- elements .append (timestamp )
157
-
158
- line = ' ' .join (elements )
162
+ line = make_line (
163
+ point .get ('measurement' , data .get ('measurement' )),
164
+ tags = tags ,
165
+ fields = point ['fields' ],
166
+ precision = precision ,
167
+ time = point .get ('time' )
168
+ )
159
169
lines .append (line )
170
+
160
171
lines = '\n ' .join (lines )
161
172
return lines + '\n '
0 commit comments