Skip to content

Commit 7e8daeb

Browse files
committed
Performance improvements to CLI
1 parent 5a232f9 commit 7e8daeb

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

jinja2cli/cli.py

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,6 @@
1313
import sys
1414
from optparse import Option, OptionParser
1515

16-
import jinja2
17-
from jinja2 import Environment, FileSystemLoader, StrictUndefined
18-
19-
from jinja2cli import __version__
20-
2116
sys.path.insert(0, os.getcwd())
2217

2318
PY3 = sys.version_info[0] == 3
@@ -218,6 +213,8 @@ def _parse_env(data):
218213

219214

220215
def render(template_path, data, extensions, strict=False):
216+
from jinja2 import Environment, FileSystemLoader, StrictUndefined
217+
221218
env = Environment(
222219
loader=FileSystemLoader(os.path.dirname(template_path)),
223220
extensions=extensions,
@@ -340,11 +337,25 @@ def help(self):
340337
return h
341338

342339

340+
class LazyOptionParser(OptionParser):
341+
def __init__(self, **kwargs):
342+
# Fake a version so we can lazy load it later.
343+
# This is due to internals of OptionParser, but it's
344+
# fine
345+
kwargs["version"] = 1
346+
kwargs["option_class"] = LazyHelpOption
347+
OptionParser.__init__(self, **kwargs)
348+
349+
def get_version(self):
350+
from jinja2 import __version__ as jinja_version
351+
from jinja2cli import __version__
352+
353+
return "jinja2-cli v%s\n - Jinja2 v%s" % (__version__, jinja_version)
354+
355+
343356
def main():
344-
parser = OptionParser(
345-
option_class=LazyHelpOption,
346-
usage="usage: %prog [options] <input template> <input data>",
347-
version="jinja2-cli v%s\n - Jinja2 v%s" % (__version__, jinja2.__version__),
357+
parser = LazyOptionParser(
358+
usage="usage: %prog [options] <input template> <input data>"
348359
)
349360
parser.add_option(
350361
"--format",

0 commit comments

Comments
 (0)