@@ -381,7 +381,7 @@ class ReadableSpan:
381381 def __init__ (
382382 self ,
383383 name : str ,
384- context : Optional [ trace_api .SpanContext ] = None ,
384+ context : trace_api .SpanContext ,
385385 parent : Optional [trace_api .SpanContext ] = None ,
386386 resource : Optional [Resource ] = None ,
387387 attributes : types .Attributes = None ,
@@ -625,12 +625,12 @@ def __init__(
625625 max_span_attribute_length : Optional [int ] = None ,
626626 ):
627627 # span events and links count
628- self .max_events = self ._from_env_if_absent (
628+ self .max_events = self ._from_env_if_absent_with_default (
629629 max_events ,
630630 OTEL_SPAN_EVENT_COUNT_LIMIT ,
631631 _DEFAULT_OTEL_SPAN_EVENT_COUNT_LIMIT ,
632632 )
633- self .max_links = self ._from_env_if_absent (
633+ self .max_links = self ._from_env_if_absent_with_default (
634634 max_links ,
635635 OTEL_SPAN_LINK_COUNT_LIMIT ,
636636 _DEFAULT_OTEL_SPAN_LINK_COUNT_LIMIT ,
@@ -646,7 +646,7 @@ def __init__(
646646 else _DEFAULT_OTEL_ATTRIBUTE_COUNT_LIMIT
647647 )
648648
649- self .max_span_attributes = self ._from_env_if_absent (
649+ self .max_span_attributes = self ._from_env_if_absent_with_default (
650650 max_span_attributes ,
651651 OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT ,
652652 (
@@ -655,7 +655,7 @@ def __init__(
655655 else _DEFAULT_OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT
656656 ),
657657 )
658- self .max_event_attributes = self ._from_env_if_absent (
658+ self .max_event_attributes = self ._from_env_if_absent_with_default (
659659 max_event_attributes ,
660660 OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT ,
661661 (
@@ -664,7 +664,7 @@ def __init__(
664664 else _DEFAULT_OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT
665665 ),
666666 )
667- self .max_link_attributes = self ._from_env_if_absent (
667+ self .max_link_attributes = self ._from_env_if_absent_with_default (
668668 max_link_attributes ,
669669 OTEL_LINK_ATTRIBUTE_COUNT_LIMIT ,
670670 (
@@ -717,6 +717,13 @@ def _from_env_if_absent(
717717 raise ValueError (err_msg .format (env_var , value ))
718718 return value
719719
720+ @classmethod
721+ def _from_env_if_absent_with_default (
722+ cls , value : Optional [int ], env_var : str , default : int
723+ ) -> int :
724+ value_from_env = cls ._from_env_if_absent (value , env_var , default )
725+ return value_from_env if value_from_env is not None else default
726+
720727
721728_UnsetLimits = SpanLimits (
722729 max_attributes = SpanLimits .UNSET ,
@@ -1002,7 +1009,7 @@ def __exit__(
10021009 self .record_exception (exception = exc_val , escaped = True )
10031010 # Records status if span is used as context manager
10041011 # i.e. with tracer.start_span() as span:
1005- if self ._set_status_on_exception :
1012+ if exc_type and self ._set_status_on_exception :
10061013 self .set_status (
10071014 Status (
10081015 status_code = StatusCode .ERROR ,
@@ -1114,11 +1121,14 @@ def start_span( # pylint: disable=too-many-locals
11141121 context : Optional [context_api .Context ] = None ,
11151122 kind : trace_api .SpanKind = trace_api .SpanKind .INTERNAL ,
11161123 attributes : types .Attributes = None ,
1117- links : Optional [Sequence [trace_api .Link ]] = () ,
1124+ links : Optional [Sequence [trace_api .Link ]] = None ,
11181125 start_time : Optional [int ] = None ,
11191126 record_exception : bool = True ,
11201127 set_status_on_exception : bool = True ,
11211128 ) -> trace_api .Span :
1129+ if links is None :
1130+ links = ()
1131+
11221132 parent_span_context = trace_api .get_current_span (
11231133 context
11241134 ).get_span_context ()
0 commit comments