added cache_clear function
authorArmin Ronacher <armin.ronacher@active-4.com>
Thu, 1 May 2008 16:19:16 +0000 (18:19 +0200)
committerArmin Ronacher <armin.ronacher@active-4.com>
Thu, 1 May 2008 16:19:16 +0000 (18:19 +0200)
--HG--
branch : trunk

docs/api.rst
jinja2/__init__.py
jinja2/debug.py
jinja2/lexer.py
jinja2/utils.py

index 3ad17acfeaef922d063554f9d47f280a381deaea..a8a6779344832244d6518bcc6f324963fb1e86d1 100644 (file)
@@ -211,6 +211,8 @@ functions to a Jinja2 environment.
     in HTML.  This function will not escaped objects that do have an HTML
     representation such as already escaped data.
 
+.. autofunction:: jinja2.utils.clear_caches
+
 .. autoclass:: jinja2.utils.Markup
 
 
index 0ab742351effb804450453e89ade7c6aad656642..cd720a6248ce363de7a5ada0e21aa4922c50018b 100644 (file)
@@ -49,7 +49,8 @@ from jinja2.exceptions import TemplateError, UndefinedError, \
 
 # 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 @@ __all__ = [
     'TemplateError', 'UndefinedError', 'TemplateNotFound',
     'TemplateSyntaxError', 'TemplateAssertionError', 'environmentfilter',
     'contextfilter', 'Markup', 'escape', 'environmentfunction',
-    'contextfunction'
+    'contextfunction', 'clear_caches'
 ]
index a9b4439f31b38b04ce90eb4b1d2702e262571b3b..9209054848d2f1cba4673b825f5adb75e3717777 100644 (file)
@@ -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.
index 772dee27b726c072faf787da2d81c104ff37693b..b8a363f3c725bc3eb681b37954832eef918f2fd6 100644 (file)
@@ -23,7 +23,7 @@ from jinja2.utils import LRUCache
 
 # 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)')
index 6a5c9a07c5bc126f198ea8b2e4cc8f7c4869f41d..e8f6fd75ff3f5787257f081291f18057737b1a5e 100644 (file)
@@ -47,6 +47,18 @@ def environmentfunction(f):
     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