added cache_clear function
--HG--
branch : trunk
diff --git a/jinja2/__init__.py b/jinja2/__init__.py
index 0ab7423..cd720a6 100644
--- a/jinja2/__init__.py
+++ b/jinja2/__init__.py
@@ -49,7 +49,8 @@
# decorators and public utilities
from jinja2.filters import environmentfilter, contextfilter
-from jinja2.utils import Markup, escape, environmentfunction, contextfunction
+from jinja2.utils import Markup, escape, clear_caches, \
+ environmentfunction, contextfunction
__all__ = [
'Environment', 'Template', 'BaseLoader', 'FileSystemLoader',
@@ -58,5 +59,5 @@
'TemplateError', 'UndefinedError', 'TemplateNotFound',
'TemplateSyntaxError', 'TemplateAssertionError', 'environmentfilter',
'contextfilter', 'Markup', 'escape', 'environmentfunction',
- 'contextfunction'
+ 'contextfunction', 'clear_caches'
]
diff --git a/jinja2/debug.py b/jinja2/debug.py
index a9b4439..9209054 100644
--- a/jinja2/debug.py
+++ b/jinja2/debug.py
@@ -3,7 +3,9 @@
jinja2.debug
~~~~~~~~~~~~
- Implements the debug interface for Jinja.
+ Implements the debug interface for Jinja. This module does some pretty
+ ugly stuff with the Python traceback system in order to achieve tracebacks
+ with correct line numbers, locals and contents.
:copyright: Copyright 2008 by Armin Ronacher.
:license: BSD.
diff --git a/jinja2/lexer.py b/jinja2/lexer.py
index 772dee2..b8a363f 100644
--- a/jinja2/lexer.py
+++ b/jinja2/lexer.py
@@ -23,7 +23,7 @@
# cache for the lexers. Exists in order to be able to have multiple
# environments with the same lexer
-_lexer_cache = LRUCache(10)
+_lexer_cache = LRUCache(50)
# static regular expressions
whitespace_re = re.compile(r'\s+(?um)')
diff --git a/jinja2/utils.py b/jinja2/utils.py
index 6a5c9a0..e8f6fd7 100644
--- a/jinja2/utils.py
+++ b/jinja2/utils.py
@@ -47,6 +47,18 @@
return f
+def clear_caches():
+ """Jinja2 keeps internal caches for environments and lexers. These are
+ used so that Jinja2 doesn't have to recreate environments and lexers all
+ the time. Normally you don't have to care about that but if you are
+ messuring memory consumption you may want to clean the caches.
+ """
+ from jinja2.environment import _spontaneous_environments
+ from jinja2.lexer import _lexer_cache
+ _spontaneous_environments.clear()
+ _lexer_cache.clear()
+
+
def import_string(import_name, silent=False):
"""Imports an object based on a string. This use useful if you want to
use import paths as endpoints or something similar. An import path can