77)
88
99from  opentelemetry .trace  import  Span 
10+ from  opentelemetry .trace .propagation  import  set_span_in_context 
1011
1112from  guardrails .classes .validation .validation_result  import  ValidationResult 
1213from  guardrails .hub_token .token  import  VALIDATOR_HUB_SERVICE 
@@ -129,27 +130,20 @@ def trace(
129130    * ,
130131    name : str ,
131132    origin : Optional [str ] =  None ,
132-     is_parent : Optional [bool ] =  False ,
133133    ** attrs ,
134134):
135-     # def decorator(fn: Callable[..., R]): 
136135    def  decorator (fn ):
137136        @wraps (fn ) 
138-         # def wrapper(*args, **kwargs) -> R: 
139137        def  wrapper (* args , ** kwargs ):
140138            hub_telemetry  =  HubTelemetry ()
141139            if  hub_telemetry ._enabled  and  hub_telemetry ._tracer  is  not   None :
142-                 context  =  (
143-                     hub_telemetry .extract_current_context () if  not  is_parent  else  None 
144-                 )
145140                with  hub_telemetry ._tracer .start_span (
146141                    name ,
147-                     context = context ,
142+                     context = hub_telemetry . extract_current_context () ,
148143                    set_status_on_exception = True ,
149144                ) as  span :  # noqa 
150-                     if  is_parent :
151-                         # Inject the current context 
152-                         hub_telemetry .inject_current_context ()
145+                     context  =  set_span_in_context (span )
146+                     hub_telemetry .inject_current_context (context = context )
153147                    nonlocal  origin 
154148                    origin  =  origin  if  origin  is  not   None  else  name 
155149
@@ -170,24 +164,19 @@ def async_trace(
170164    * ,
171165    name : str ,
172166    origin : Optional [str ] =  None ,
173-     is_parent : Optional [bool ] =  False ,
174167):
175-     # def decorator(fn: Callable[..., Awaitable[R]]): 
176168    def  decorator (fn ):
177169        @wraps (fn ) 
178-         # async def async_wrapper(*args, **kwargs) -> R: 
179170        async  def  async_wrapper (* args , ** kwargs ):
180171            hub_telemetry  =  HubTelemetry ()
181172            if  hub_telemetry ._enabled  and  hub_telemetry ._tracer  is  not   None :
182-                 context  =  (
183-                     hub_telemetry .extract_current_context () if  not  is_parent  else  None 
184-                 )
185-                 with  hub_telemetry ._tracer .start_as_current_span (
186-                     name , context = context 
173+                 with  hub_telemetry ._tracer .start_span (
174+                     name ,
175+                     context = hub_telemetry .extract_current_context (),
176+                     set_status_on_exception = True ,
187177                ) as  span :  # noqa 
188-                     if  is_parent :
189-                         # Inject the current context 
190-                         hub_telemetry .inject_current_context ()
178+                     context  =  set_span_in_context (span )
179+                     hub_telemetry .inject_current_context (context = context )
191180
192181                    nonlocal  origin 
193182                    origin  =  origin  if  origin  is  not   None  else  name 
@@ -211,27 +200,20 @@ def trace_stream(
211200    * ,
212201    name : str ,
213202    origin : Optional [str ] =  None ,
214-     is_parent : Optional [bool ] =  False ,
215203    ** attrs ,
216204):
217-     # def decorator(fn: Callable[..., Iterator[R]]): 
218205    def  decorator (fn ):
219206        @wraps (fn ) 
220-         # def wrapper(*args, **kwargs) -> Iterator[R]: 
221207        def  wrapper (* args , ** kwargs ):
222208            hub_telemetry  =  HubTelemetry ()
223209            if  hub_telemetry ._enabled  and  hub_telemetry ._tracer  is  not   None :
224-                 context  =  (
225-                     hub_telemetry .extract_current_context () if  not  is_parent  else  None 
226-                 )
227210                with  hub_telemetry ._tracer .start_span (
228211                    name ,
229-                     context = context ,
212+                     context = hub_telemetry . extract_current_context () ,
230213                    set_status_on_exception = True ,
231214                ) as  span :  # noqa 
232-                     if  is_parent :
233-                         # Inject the current context 
234-                         hub_telemetry .inject_current_context ()
215+                     context  =  set_span_in_context (span )
216+                     hub_telemetry .inject_current_context (context = context )
235217
236218                    nonlocal  origin 
237219                    origin  =  origin  if  origin  is  not   None  else  name 
@@ -255,26 +237,20 @@ def async_trace_stream(
255237    * ,
256238    name : str ,
257239    origin : Optional [str ] =  None ,
258-     is_parent : Optional [bool ] =  False ,
259240    ** attrs ,
260241):
261-     # def decorator(fn: Callable[..., AsyncIterator[R]]): 
262242    def  decorator (fn ):
263243        @wraps (fn ) 
264244        async  def  wrapper (* args , ** kwargs ):
265245            hub_telemetry  =  HubTelemetry ()
266246            if  hub_telemetry ._enabled  and  hub_telemetry ._tracer  is  not   None :
267-                 context  =  (
268-                     hub_telemetry .extract_current_context () if  not  is_parent  else  None 
269-                 )
270247                with  hub_telemetry ._tracer .start_span (
271248                    name ,
272-                     context = context ,
249+                     context = hub_telemetry . extract_current_context () ,
273250                    set_status_on_exception = True ,
274251                ) as  span :  # noqa 
275-                     if  is_parent :
276-                         # Inject the current context 
277-                         hub_telemetry .inject_current_context ()
252+                     context  =  set_span_in_context (span )
253+                     hub_telemetry .inject_current_context (context = context )
278254
279255                    nonlocal  origin 
280256                    origin  =  origin  if  origin  is  not   None  else  name 
0 commit comments