Chris McDonough
2012-09-16 684fd22755f5ffd98b5629c63bc07a23c2edaf4a
use with statement to acquire/release thread locks
3 files modified
35 ■■■■■ changed files
pyramid/mako_templating.py 9 ●●●●● patch | view | raw | blame | history
pyramid/renderers.py 18 ●●●● patch | view | raw | blame | history
pyramid/scripts/pserve.py 8 ●●●● patch | view | raw | blame | history
pyramid/mako_templating.py
@@ -95,7 +95,9 @@
                r'(?:\#(?P<defname>[\w_]+))?'
                r'(\.(?P<ext>.*))'
                )
        asset, defname, ext = p.match(info.name).group('asset', 'defname', 'ext')
        asset, defname, ext = p.match(info.name).group(
            'asset', 'defname', 'ext'
            )
        path = '%s.%s' % (asset, ext)
        registry = info.registry
        settings = info.settings
@@ -154,12 +156,9 @@
                preprocessor=preprocessor
                )
            registry_lock.acquire()
            try:
            with registry_lock:
                registry.registerUtility(lookup, IMakoLookup,
                                         name=settings_prefix)
            finally:
                registry_lock.release()
        return MakoLookupTemplateRenderer(path, defname, lookup)
pyramid/renderers.py
@@ -429,12 +429,9 @@
            if renderer is None:
                renderer = self.impl(spec, self, macro=None)
                # cache the template
                try:
                    self.lock.acquire()
                with self.lock:
                    registry.registerUtility(renderer,
                                             ITemplateRenderer, name=spec)
                finally:
                    self.lock.release()
        else:
            # spec is a package:relpath asset spec
            renderer = registry.queryUtility(ITemplateRenderer, name=spec)
@@ -445,7 +442,8 @@
                    r'(\.(?P<ext>.*))'
                    )
                asset, macro, ext = p.match(spec).group(
                    'asset', 'defname', 'ext')
                    'asset', 'defname', 'ext'
                    )
                spec = '%s.%s' % (asset, ext)
                try:
                    package_name, filename = spec.split(':', 1)
@@ -463,12 +461,9 @@
                settings = info.settings
                if not settings.get('reload_assets'):
                    # cache the template
                    self.lock.acquire()
                    try:
                    with self.lock:
                        registry.registerUtility(renderer, ITemplateRenderer,
                                                 name=spec)
                    finally:
                        self.lock.release()
        return renderer
@@ -479,11 +474,8 @@
    lookup = registry.queryUtility(IChameleonLookup, name=info.type)
    if lookup is None:
        lookup = ChameleonRendererLookup(impl, registry)
        lock.acquire()
        try:
        with lock:
            registry.registerUtility(lookup, IChameleonLookup, name=info.type)
        finally:
            lock.release()
    return lookup(info)
@implementer(IRendererInfo)
pyramid/scripts/pserve.py
@@ -583,12 +583,8 @@
    def open(self):
        if self.fileobj is None:
            self.lock.acquire()
            try:
                if self.fileobj is None:
                    self.fileobj = open(self.filename, self.mode)
            finally:
                self.lock.release()
            with self.lock:
                self.fileobj = open(self.filename, self.mode)
        return self.fileobj
    def close(self):