Skip to content

Commit 789d7e2

Browse files
danwosnhatnamnguyengtvthcm
authored andcommitted
👌 From string fix (#1031)
1 parent 3e8007d commit 789d7e2

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

‎sphinx_needs/external_needs.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import json
22
import os
3+
from functools import lru_cache
34

45
import requests
5-
from jinja2 import Environment
6+
from jinja2 import Environment, Template
67
from requests_file import FileAdapter
78
from sphinx.application import Sphinx
89
from sphinx.environment import BuildEnvironment
@@ -17,6 +18,16 @@
1718
log = get_logger(__name__)
1819

1920

21+
@lru_cache(maxsize=20)
22+
def get_target_template(target_url: str) -> Template:
23+
"""
24+
Provides template for target_link style
25+
Can be cached, as the template is always the same for a given target_url
26+
"""
27+
mem_template = Environment().from_string(target_url)
28+
return mem_template
29+
30+
2031
def load_external_needs(app: Sphinx, env: BuildEnvironment, _docname: str) -> None:
2132
needs_config = NeedsSphinxConfig(app.config)
2233
for source in needs_config.external_needs:
@@ -95,7 +106,7 @@ def load_external_needs(app: Sphinx, env: BuildEnvironment, _docname: str) -> No
95106

96107
if target_url:
97108
# render jinja content
98-
mem_template = Environment().from_string(target_url)
109+
mem_template = get_target_template(target_url)
99110
cal_target_url = mem_template.render(**{"need": need})
100111
need_params["external_url"] = f'{source["base_url"]}/{cal_target_url}'
101112
else:

0 commit comments

Comments
 (0)