12
12
from BaseHTTPServer import BaseHTTPRequestHandler
13
13
except ImportError :
14
14
# Python 3
15
+ unicode = str
15
16
from http .server import BaseHTTPRequestHandler
16
17
from functools import wraps
17
18
from threading import Lock
18
19
19
20
__all__ = ['Counter' , 'Gauge' , 'Summary' , 'Histogram' ]
21
+ # http://stackoverflow.com/questions/19913653/no-unicode-in-all-for-a-packages-init
22
+ __all__ = [n .encode ('ascii' ) for n in __all__ ]
20
23
21
24
_METRIC_NAME_RE = re .compile (r'^[a-zA-Z_:][a-zA-Z0-9_:]*$' )
22
25
_METRIC_LABEL_NAME_RE = re .compile (r'^[a-zA-Z_:][a-zA-Z0-9_:]*$' )
@@ -108,7 +111,7 @@ def labels(self, *labelvalues):
108
111
'''Return the child for the given labelset.'''
109
112
if len (labelvalues ) != len (self ._labelnames ):
110
113
raise ValueError ('Incorrect label count' )
111
- labelvalues = tuple (labelvalues )
114
+ labelvalues = tuple ([ unicode ( l ) for l in labelvalues ] )
112
115
with self ._lock :
113
116
if labelvalues not in self ._metrics :
114
117
self ._metrics [labelvalues ] = self ._wrappedClass (** self ._kwargs )
@@ -118,7 +121,7 @@ def remove(self, *labelvalues):
118
121
'''Remove the given labelset from the metric.'''
119
122
if len (labelvalues ) != len (self ._labelnames ):
120
123
raise ValueError ('Incorrect label count' )
121
- labelvalues = tuple (labelvalues )
124
+ labelvalues = tuple ([ unicode ( l ) for l in labelvalues ] )
122
125
with self ._lock :
123
126
del self ._metrics [labelvalues ]
124
127
0 commit comments