|  | 
| 12 | 12 | ) | 
| 13 | 13 | from guardrails.errors import ValidationError | 
| 14 | 14 | from guardrails.merge import merge | 
|  | 15 | +from guardrails.telemetry.hub_tracing import trace | 
| 15 | 16 | from guardrails.types import OnFailAction | 
| 16 |  | -from guardrails.utils.hub_telemetry_utils import HubTelemetry | 
| 17 | 17 | from guardrails.classes.validation.validator_logs import ValidatorLogs | 
| 18 | 18 | from guardrails.actions.reask import FieldReAsk | 
| 19 | 19 | from guardrails.telemetry import trace_validator | 
| @@ -43,6 +43,7 @@ def __init__(self, disable_tracer: Optional[bool] = True): | 
| 43 | 43 |     #       This is a well known issue without any real solutions. | 
| 44 | 44 |     #       Using `fork` instead of `spawn` may alleviate the symptom for POSIX systems, | 
| 45 | 45 |     #       but is relatively unsupported on Windows. | 
|  | 46 | +    @trace(name="/validator_usage", origin="ValidatorServiceBase.execute_validator") | 
| 46 | 47 |     def execute_validator( | 
| 47 | 48 |         self, | 
| 48 | 49 |         validator: Validator, | 
| @@ -152,26 +153,6 @@ def after_run_validator( | 
| 152 | 153 |         validator_logs.validation_result = result | 
| 153 | 154 |         validator_logs.end_time = end_time | 
| 154 | 155 | 
 | 
| 155 |  | -        if not self._disable_tracer: | 
| 156 |  | -            # Get HubTelemetry singleton and create a new span to | 
| 157 |  | -            # log the validator usage | 
| 158 |  | -            _hub_telemetry = HubTelemetry() | 
| 159 |  | -            _hub_telemetry.create_new_span( | 
| 160 |  | -                span_name="/validator_usage", | 
| 161 |  | -                attributes=[ | 
| 162 |  | -                    ("validator_name", validator.rail_alias), | 
| 163 |  | -                    ("validator_on_fail", validator.on_fail_descriptor), | 
| 164 |  | -                    ( | 
| 165 |  | -                        "validator_result", | 
| 166 |  | -                        result.outcome | 
| 167 |  | -                        if isinstance(result, ValidationResult) | 
| 168 |  | -                        else None, | 
| 169 |  | -                    ), | 
| 170 |  | -                ], | 
| 171 |  | -                is_parent=False,  # This span will have no children | 
| 172 |  | -                has_parent=True,  # This span has a parent | 
| 173 |  | -            ) | 
| 174 |  | - | 
| 175 | 156 |         return validator_logs | 
| 176 | 157 | 
 | 
| 177 | 158 |     def run_validator( | 
|  | 
0 commit comments