def traced_template_render(django, pin, wrapped, instance, args, kwargs): """Instrument django.template.base.Template.render for tracing template rendering.""" template_name = maybe_stringify(getattr(instance, "name", None)) if template_name: resource = template_name else: resource = "{0}.{1}".format(func_name(instance), wrapped.__name__) with pin.tracer.trace("django.template.render", resource=resource, span_type=http.TEMPLATE) as span: if template_name: span._set_str_tag("django.template.name", template_name) engine = getattr(instance, "engine", None) if engine: span._set_str_tag("django.template.engine.class", func_name(engine)) return wrapped(*args, **kwargs)
def test_maybe_stringify(obj): assert type(maybe_stringify(obj)) is (obj is not None and six.text_type or type(None))