Skip to content

Commit

Permalink
Tidy up, raise error on misconfig
Browse files Browse the repository at this point in the history
  • Loading branch information
joerick committed Nov 1, 2021
1 parent 268f663 commit 69b195b
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions pyinstrument/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,21 @@
MiddlewareMixin = object


def get_renderer_and_extension(path):
"""Return the renderer instance and output file extension."""
def get_renderer(path) -> Renderer:
"""Return the renderer instance."""
if path:
try:
renderer = import_string(path)()
except ImportError as exc:
print("Unable to import the class: %s" % path)
raise exc

if not isinstance(renderer, Renderer):
raise ValueError(f'Renderer should subclass: {Renderer}')

return renderer
else:
renderer = HTMLRenderer()

if isinstance(renderer, Renderer):
return renderer, renderer.output_file_extension
else:
print("Renderer should subclass: %s. Using HTMLRenderer" % Renderer)
return HTMLRenderer(), HTMLRenderer.output_file_extension
return HTMLRenderer()


class ProfilerMiddleware(MiddlewareMixin): # type: ignore
Expand Down Expand Up @@ -62,7 +60,7 @@ def process_response(self, request, response):
profile_session = request.profiler.stop()

configured_renderer = getattr(settings, "PYINSTRUMENT_PROFILE_DIR_RENDERER", None)
renderer, ext = get_renderer_and_extension(configured_renderer)
renderer = get_renderer(configured_renderer)

output = renderer.render(profile_session)

Expand All @@ -78,7 +76,10 @@ def process_response(self, request, response):

if profile_dir:
filename = "{total_time:.3f}s {path} {timestamp:.0f}.{ext}".format(
total_time=profile_session.duration, path=path, timestamp=time.time(), ext=ext
total_time=profile_session.duration,
path=path,
timestamp=time.time(),
ext=renderer.output_file_extension,
)

file_path = os.path.join(profile_dir, filename)
Expand Down

0 comments on commit 69b195b

Please sign in to comment.