Mercurial > piecrust2
comparison piecrust/templating/jinjaengine.py @ 738:b91fe30ae7aa
internal: Remove threading stuff we don't need anymore.
| author | Ludovic Chabant <ludovic@chabant.com> |
|---|---|
| date | Thu, 02 Jun 2016 13:00:36 -0700 |
| parents | f0a3af3fbea2 |
| children | f6f9a284a5f3 |
comparison
equal
deleted
inserted
replaced
| 737:8b3dfd91cbf6 | 738:b91fe30ae7aa |
|---|---|
| 1 import re | 1 import re |
| 2 import time | 2 import time |
| 3 import os.path | 3 import os.path |
| 4 import hashlib | 4 import hashlib |
| 5 import logging | 5 import logging |
| 6 import threading | |
| 7 import email.utils | 6 import email.utils |
| 8 import strict_rfc3339 | 7 import strict_rfc3339 |
| 9 from jinja2 import Environment, FileSystemLoader, TemplateNotFound | 8 from jinja2 import Environment, FileSystemLoader, TemplateNotFound |
| 10 from jinja2.exceptions import TemplateSyntaxError | 9 from jinja2.exceptions import TemplateSyntaxError |
| 11 from jinja2.ext import Extension, Markup | 10 from jinja2.ext import Extension, Markup |
| 446 class PieCrustCacheExtension(Extension): | 445 class PieCrustCacheExtension(Extension): |
| 447 tags = set(['pccache', 'cache']) | 446 tags = set(['pccache', 'cache']) |
| 448 | 447 |
| 449 def __init__(self, environment): | 448 def __init__(self, environment): |
| 450 super(PieCrustCacheExtension, self).__init__(environment) | 449 super(PieCrustCacheExtension, self).__init__(environment) |
| 451 self._lock = threading.RLock() | |
| 452 | |
| 453 environment.extend( | 450 environment.extend( |
| 454 piecrust_cache_prefix='', | 451 piecrust_cache_prefix='', |
| 455 piecrust_cache={} | 452 piecrust_cache={} |
| 456 ) | 453 ) |
| 457 | 454 |
| 488 pair = self.environment.piecrust_cache.get(key) | 485 pair = self.environment.piecrust_cache.get(key) |
| 489 if pair is not None: | 486 if pair is not None: |
| 490 rdr_pass.used_source_names.update(pair[1]) | 487 rdr_pass.used_source_names.update(pair[1]) |
| 491 return pair[0] | 488 return pair[0] |
| 492 | 489 |
| 493 with self._lock: | 490 pair = self.environment.piecrust_cache.get(key) |
| 494 pair = self.environment.piecrust_cache.get(key) | 491 if pair is not None: |
| 495 if pair is not None: | 492 rdr_pass.used_source_names.update(pair[1]) |
| 496 rdr_pass.used_source_names.update(pair[1]) | 493 return pair[0] |
| 497 return pair[0] | 494 |
| 498 | 495 prev_used = rdr_pass.used_source_names.copy() |
| 499 prev_used = rdr_pass.used_source_names.copy() | 496 rv = caller() |
| 500 rv = caller() | 497 after_used = rdr_pass.used_source_names.copy() |
| 501 after_used = rdr_pass.used_source_names.copy() | 498 used_delta = after_used.difference(prev_used) |
| 502 used_delta = after_used.difference(prev_used) | 499 self.environment.piecrust_cache[key] = (rv, used_delta) |
| 503 self.environment.piecrust_cache[key] = (rv, used_delta) | 500 return rv |
| 504 return rv | |
| 505 | 501 |
| 506 | 502 |
| 507 class PieCrustSpacelessExtension(HtmlCompressor): | 503 class PieCrustSpacelessExtension(HtmlCompressor): |
| 508 """ A re-implementation of `SelectiveHtmlCompressor` so that we can | 504 """ A re-implementation of `SelectiveHtmlCompressor` so that we can |
| 509 both use `strip` or `spaceless` in templates. | 505 both use `strip` or `spaceless` in templates. |
