# HG changeset patch # User cmlenz # Date 1206629346 0 # Node ID 1f08da62e8fd108baf0e236e64fd969630866d70 # Parent 654e1d1b3953e459f3eced250db91d2aa07e12df Fix for caching in template loader for templates included by templates loaded from an absolute path. Closes #193. Thanks to Waldemar Kornewald for the test case. diff --git a/genshi/template/loader.py b/genshi/template/loader.py --- a/genshi/template/loader.py +++ b/genshi/template/loader.py @@ -166,15 +166,16 @@ if relative_to and not os.path.isabs(relative_to): filename = os.path.join(os.path.dirname(relative_to), filename) filename = os.path.normpath(filename) + cachekey = filename self._lock.acquire() try: # First check the cache to avoid reparsing the same file try: - tmpl = self._cache[filename] + tmpl = self._cache[cachekey] if not self.auto_reload: return tmpl - mtime = self._mtime[filename] + mtime = self._mtime[cachekey] if mtime and mtime == os.path.getmtime(tmpl.filepath): return tmpl except KeyError, OSError: @@ -221,8 +222,8 @@ filename, encoding=encoding) if self.callback: self.callback(tmpl) - self._cache[filename] = tmpl - self._mtime[filename] = mtime + self._cache[cachekey] = tmpl + self._mtime[cachekey] = mtime finally: if hasattr(fileobj, 'close'): fileobj.close() diff --git a/genshi/template/tests/loader.py b/genshi/template/tests/loader.py --- a/genshi/template/tests/loader.py +++ b/genshi/template/tests/loader.py @@ -229,6 +229,38 @@