From 6bf63f72fd34cd11dc4b13ec7110d50f16a2f501 Mon Sep 17 00:00:00 2001 From: William Ballenthin Date: Sun, 28 Jun 2020 08:30:43 -0600 Subject: [PATCH] render: document import loop and fix --- capa/render/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/capa/render/__init__.py b/capa/render/__init__.py index b0f14120..e79363dc 100644 --- a/capa/render/__init__.py +++ b/capa/render/__init__.py @@ -235,18 +235,25 @@ def convert_capabilities_to_result_document(rules, capabilities): def render_vverbose(rules, capabilities): + # there's an import loop here + # if capa.render imports capa.render.vverbose + # and capa.render.vverbose import capa.render (implicitly, as a submodule) + # so, defer the import until routine is called, breaking the import loop. import capa.render.vverbose doc = convert_capabilities_to_result_document(rules, capabilities) return capa.render.vverbose.render_vverbose(doc) def render_verbose(rules, capabilities): + # break import loop import capa.render.verbose doc = convert_capabilities_to_result_document(rules, capabilities) return capa.render.verbose.render_verbose(doc) def render_default(rules, capabilities): + # break import loop + import capa.render.verbose import capa.render.default doc = convert_capabilities_to_result_document(rules, capabilities) return capa.render.default.render_default(doc)