Permalink
Browse files

added cache_clear function

--HG--
branch : trunk
  • Loading branch information...
1 parent aaf010d commit 187bde1aff75cfc41cb345cd7798d5500900a3c0 @mitsuhiko mitsuhiko committed May 1, 2008
Showing with 21 additions and 4 deletions.
  1. +2 −0 docs/api.rst
  2. +3 −2 jinja2/__init__.py
  3. +3 −1 jinja2/debug.py
  4. +1 −1 jinja2/lexer.py
  5. +12 −0 jinja2/utils.py
View
@@ -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
View
@@ -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'
]
View
@@ -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.
View
@@ -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)')
View
@@ -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

0 comments on commit 187bde1

Please sign in to comment.