1717import logging
1818import os
1919import threading
20+ from typing import Any , Optional , Dict
2021
2122import opentracing
2223from opentracing .propagation import Format
24+ from opentracing .scope_manager import ScopeManager
2325from . import Tracer
2426from .local_agent_net import LocalAgentSender
25- from .throttler import RemoteThrottler
27+ from .throttler import RemoteThrottler , Throttler
2628from .reporter import (
29+ BaseReporter ,
2730 Reporter ,
2831 CompositeReporter ,
2932 LoggingReporter ,
@@ -84,8 +87,15 @@ class Config(object):
8487 _initialized = False
8588 _initialized_lock = threading .Lock ()
8689
87- def __init__ (self , config , metrics = None , service_name = None , metrics_factory = None ,
88- validate = False , scope_manager = None ):
90+ def __init__ (
91+ self ,
92+ config : dict ,
93+ metrics : Optional [Metrics ] = None ,
94+ service_name : Optional [str ] = None ,
95+ metrics_factory : Optional [MetricsFactory ] = None ,
96+ validate : bool = False ,
97+ scope_manager : Optional [ScopeManager ] = None
98+ ) -> None :
8999 """
90100 :param metrics: an instance of Metrics class, or None. This parameter
91101 has been deprecated, please use metrics_factory instead.
@@ -138,42 +148,43 @@ def _validate_config(self, config):
138148 format (',' .join (unexpected_config_keys )))
139149
140150 @property
141- def service_name (self ):
151+ def service_name (self ) -> str :
142152 return self ._service_name
143153
144154 @property
145- def metrics (self ):
146- return self ._metrics
155+ def metrics (self ) -> None :
156+ """Deprecated."""
157+ return None
147158
148159 @property
149- def error_reporter (self ):
160+ def error_reporter (self ) -> ErrorReporter :
150161 return self ._error_reporter
151162
152163 @property
153- def enabled (self ):
164+ def enabled (self ) -> bool :
154165 return get_boolean (self .config .get ('enabled' , True ), True )
155166
156167 @property
157- def reporter_batch_size (self ):
168+ def reporter_batch_size (self ) -> int :
158169 return int (self .config .get ('reporter_batch_size' , 10 ))
159170
160171 @property
161- def reporter_queue_size (self ):
172+ def reporter_queue_size (self ) -> int :
162173 return int (self .config .get ('reporter_queue_size' , 100 ))
163174
164175 @property
165- def logging (self ):
176+ def logging (self ) -> bool :
166177 return get_boolean (self .config .get ('logging' , False ), False )
167178
168179 @property
169- def trace_id_header (self ):
180+ def trace_id_header (self ) -> str :
170181 """
171182 :return: Returns the name of the HTTP header used to encode trace ID
172183 """
173184 return self .config .get ('trace_id_header' , TRACE_ID_HEADER )
174185
175186 @property
176- def generate_128bit_trace_id (self ):
187+ def generate_128bit_trace_id (self ) -> bool :
177188 """
178189 :return: Returns boolean value to indicate if 128bit trace_id
179190 generation is enabled
@@ -183,15 +194,15 @@ def generate_128bit_trace_id(self):
183194 return os .getenv ('JAEGER_TRACEID_128BIT' ) == 'true'
184195
185196 @property
186- def baggage_header_prefix (self ):
197+ def baggage_header_prefix (self ) -> str :
187198 """
188199 :return: Returns the prefix for HTTP headers used to record baggage
189200 items
190201 """
191202 return self .config .get ('baggage_header_prefix' , BAGGAGE_HEADER_PREFIX )
192203
193204 @property
194- def debug_id_header (self ):
205+ def debug_id_header (self ) -> str :
195206 """
196207 :return: Returns the name of HTTP header or a TextMap carrier key
197208 which, if found in the carrier, forces the trace to be sampled as
@@ -202,23 +213,23 @@ def debug_id_header(self):
202213 return self .config .get ('debug_id_header' , DEBUG_ID_HEADER_KEY )
203214
204215 @property
205- def max_tag_value_length (self ):
216+ def max_tag_value_length (self ) -> int :
206217 """
207218 :return: Returns max allowed tag value length. Longer values will
208219 be truncated.
209220 """
210221 return self .config .get ('max_tag_value_length' , MAX_TAG_VALUE_LENGTH )
211222
212223 @property
213- def max_traceback_length (self ):
224+ def max_traceback_length (self ) -> int :
214225 """
215226 :return: Returns max allowed traceback length when logging an error.
216227 Longer values will be truncated.
217228 """
218229 return self .config .get ('max_traceback_length' , MAX_TRACEBACK_LENGTH )
219230
220231 @property
221- def sampler (self ):
232+ def sampler (self ) -> Optional [ Sampler ] :
222233 sampler_config = self .config .get ('sampler' , {})
223234 if isinstance (sampler_config , Sampler ):
224235 return sampler_config
@@ -237,68 +248,68 @@ def sampler(self):
237248 raise ValueError ('Unknown sampler type %s' % sampler_type )
238249
239250 @property
240- def sampling_refresh_interval (self ):
251+ def sampling_refresh_interval (self ) -> int :
241252 return self .config .get ('sampling_refresh_interval' ,
242253 DEFAULT_SAMPLING_INTERVAL )
243254
244255 @property
245- def reporter_flush_interval (self ):
256+ def reporter_flush_interval (self ) -> int :
246257 return self .config .get ('reporter_flush_interval' ,
247258 DEFAULT_FLUSH_INTERVAL )
248259
249- def local_agent_group (self ):
260+ def local_agent_group (self ) -> Optional [ dict ] :
250261 return self .config .get ('local_agent' , None )
251262
252263 @property
253- def local_agent_enabled (self ):
264+ def local_agent_enabled (self ) -> bool :
254265 # noinspection PyBroadException
255266 try :
256- return get_boolean (self .local_agent_group ().get ('enabled' ,
267+ return get_boolean (self .local_agent_group ().get ('enabled' , # type:ignore
257268 LOCAL_AGENT_DEFAULT_ENABLED ),
258269 LOCAL_AGENT_DEFAULT_ENABLED )
259270 except : # noqa: E722
260271 return LOCAL_AGENT_DEFAULT_ENABLED
261272
262273 @property
263- def local_agent_sampling_port (self ):
274+ def local_agent_sampling_port (self ) -> int :
264275 # noinspection PyBroadException
265276 try :
266- return int (self .local_agent_group ()['sampling_port' ])
277+ return int (self .local_agent_group ()['sampling_port' ]) # type:ignore
267278 except : # noqa: E722
268279 return DEFAULT_SAMPLING_PORT
269280
270281 @property
271- def local_agent_reporting_port (self ):
282+ def local_agent_reporting_port (self ) -> int :
272283 # noinspection PyBroadException
273284 try :
274- return int (self .local_agent_group ()['reporting_port' ])
285+ return int (self .local_agent_group ()['reporting_port' ]) # type:ignore
275286 except : # noqa: E722
276287 pass
277288
278289 try :
279- return int (os .getenv ('JAEGER_AGENT_PORT' ))
290+ return int (os .getenv ('JAEGER_AGENT_PORT' )) # type:ignore
280291 except : # noqa: E722
281292 return DEFAULT_REPORTING_PORT
282293
283294 @property
284- def local_agent_reporting_host (self ):
295+ def local_agent_reporting_host (self ) -> str :
285296 # noinspection PyBroadException
286297 try :
287- return self .local_agent_group ()['reporting_host' ]
298+ return self .local_agent_group ()['reporting_host' ] # type:ignore
288299 except : # noqa: E722
289300 pass
290301
291- if os . getenv ( 'JAEGER_AGENT_HOST' ) is not None :
292- return os .getenv ( 'JAEGER_AGENT_HOST' )
302+ if 'JAEGER_AGENT_HOST' in os . environ :
303+ return os .environ [ 'JAEGER_AGENT_HOST' ]
293304 else :
294305 return DEFAULT_REPORTING_HOST
295306
296307 @property
297- def max_operations (self ):
308+ def max_operations (self ) -> Optional [ Any ] :
298309 return self .config .get ('max_operations' , None )
299310
300311 @property
301- def tags (self ):
312+ def tags (self ) -> Dict [ str , Any ] :
302313 """
303314 :return: Returns tags from config and `JAEGER_TAGS` environment variable
304315 to use as process-wide tracer tags
@@ -312,7 +323,7 @@ def tags(self):
312323 return tags
313324
314325 @property
315- def propagation (self ):
326+ def propagation (self ) -> Dict [ str , Any ] :
316327 propagation = self .config .get ('propagation' )
317328 if propagation == 'b3' :
318329 # replace the codec with a B3 enabled instance
@@ -321,11 +332,11 @@ def propagation(self):
321332 )}
322333 return {}
323334
324- def throttler_group (self ):
335+ def throttler_group (self ) -> Optional [ Any ] :
325336 return self .config .get ('throttler' , None )
326337
327338 @property
328- def throttler_port (self ):
339+ def throttler_port (self ) -> Optional [ int ] :
329340 throttler_config = self .throttler_group ()
330341 if throttler_config is None :
331342 return None
@@ -336,7 +347,7 @@ def throttler_port(self):
336347 return DEFAULT_THROTTLER_PORT
337348
338349 @property
339- def throttler_refresh_interval (self ):
350+ def throttler_refresh_interval (self ) -> Optional [ int ] :
340351 throttler_config = self .throttler_group ()
341352 if throttler_config is None :
342353 return None
@@ -347,11 +358,11 @@ def throttler_refresh_interval(self):
347358 return DEFAULT_THROTTLER_REFRESH_INTERVAL
348359
349360 @staticmethod
350- def initialized ():
361+ def initialized () -> bool :
351362 with Config ._initialized_lock :
352363 return Config ._initialized
353364
354- def initialize_tracer (self , io_loop = None ):
365+ def initialize_tracer (self , io_loop : Optional [ Any ] = None ) -> Optional [ Tracer ] :
355366 """
356367 Initialize Jaeger Tracer based on the passed `jaeger_client.Config`.
357368 Save it to `opentracing.tracer` global variable.
@@ -361,15 +372,15 @@ def initialize_tracer(self, io_loop=None):
361372 with Config ._initialized_lock :
362373 if Config ._initialized :
363374 logger .warning ('Jaeger tracer already initialized, skipping' )
364- return
375+ return None
365376 Config ._initialized = True
366377
367378 tracer = self .new_tracer (io_loop )
368379
369380 self ._initialize_global_tracer (tracer = tracer )
370381 return tracer
371382
372- def new_tracer (self , io_loop = None ):
383+ def new_tracer (self , io_loop : Optional [ Any ] = None ) -> Tracer :
373384 """
374385 Create a new Jaeger Tracer based on the passed `jaeger_client.Config`.
375386 Does not set `opentracing.tracer` global variable.
@@ -387,7 +398,7 @@ def new_tracer(self, io_loop=None):
387398 max_operations = self .max_operations )
388399 logger .info ('Using sampler %s' , sampler )
389400
390- reporter = Reporter (
401+ reporter : BaseReporter = Reporter (
391402 channel = channel ,
392403 queue_capacity = self .reporter_queue_size ,
393404 batch_size = self .reporter_batch_size ,
@@ -399,6 +410,7 @@ def new_tracer(self, io_loop=None):
399410 if self .logging :
400411 reporter = CompositeReporter (reporter , LoggingReporter (logger ))
401412
413+ throttler : Optional [Throttler ]
402414 if not self .throttler_group () is None :
403415 throttler = RemoteThrottler (
404416 channel ,
@@ -416,7 +428,9 @@ def new_tracer(self, io_loop=None):
416428 throttler = throttler ,
417429 )
418430
419- def create_tracer (self , reporter , sampler , throttler = None ):
431+ def create_tracer (
432+ self , reporter : BaseReporter , sampler : Sampler , throttler : Optional [Throttler ] = None
433+ ) -> Tracer :
420434 return Tracer (
421435 service_name = self .service_name ,
422436 reporter = reporter ,
0 commit comments