From 9d6fcd1eeb030be9e0a24399493924cf5d963b28 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Tue, 30 Jun 2009 13:10:44 +0000 Subject: - Register a ``repoze.bfg.resource.OverrideProvider`` as a pkg_resources provider only for modules which are known to have overrides, instead of globally, when a directive is used (performance). --- repoze/bfg/zcml.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'repoze/bfg/zcml.py') diff --git a/repoze/bfg/zcml.py b/repoze/bfg/zcml.py index 1aedd88e4..cf9a3d880 100644 --- a/repoze/bfg/zcml.py +++ b/repoze/bfg/zcml.py @@ -175,18 +175,16 @@ class IResourceDirective(Interface): required=True) def _override(package, path, override_package, override_prefix, - PackageOverrides=PackageOverrides, pkg_resources=pkg_resources): - # PackageOverrides and pkg_resources kw args for tests + PackageOverrides=PackageOverrides): + # PackageOverrides kw arg for tests sm = getSiteManager() - override = queryUtility(IPackageOverrides, name=package) + package_name = package.__name__ + override_package_name = override_package.__name__ + override = queryUtility(IPackageOverrides, name=package_name) if override is None: override = PackageOverrides(package) - sm.registerUtility(override, IPackageOverrides, name=package) - # register_loader_type will be called too many times if there - # is more than one overridden package; that's OK, as our - # mutation is idempotent - pkg_resources.register_loader_type(type(None), OverrideProvider) - override.insert(path, override_package, override_prefix) + sm.registerUtility(override, IPackageOverrides, name=package_name) + override.insert(path, override_package_name, override_prefix) def resource(context, to_override, override_with): if to_override == override_with: @@ -214,8 +212,8 @@ def resource(context, to_override, override_with): 'A file cannot be overridden with a directory (put a slash ' 'at the end of to_override if necessary)') - package = context.resolve(package).__name__ - override_package = context.resolve(package).__name__ + package = context.resolve(package) + override_package = context.resolve(override_package) context.action( discriminator = None, -- cgit v1.2.3