Skip to content

Macro that invokes other macros does not work when imported #330

@jjkavalam

Description

@jjkavalam

Version: github.com/flosch/pongo2/v6 v6.0.0

Background

I have a macro main which i want to use in my templates. To implement this macro, i rely on child macros -child.

{% macro child() %}Child{% endmacro %}

{% macro main() export %}Main calls {{ child() }}{% endmacro %}

What is the issue

main does not work correctly when imported.

How to reproduce ?

  1. Create macros.j2 with the contents above.

  2. Create test1.j2 with the following contents:

{# filename: test1.j2 #}

{% import "macros.j2" main %}

{{ main() }}
  1. Render test1.j2 using the default options. We get the following output:
Main calls 

Expected output:

Main calls Child

Other details (may be useful)

When the macro is called from the same file such as below, we get the expected output:

{# filename: test2.j2 #}

{# macro definition above is pasted here #}

{{ main() }}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions