src/pyams_utils/factory.py
branchdev-tf
changeset 408 cf2304af0fab
parent 380 c062ab4db6cd
--- a/src/pyams_utils/factory.py	Wed Nov 20 19:26:23 2019 +0100
+++ b/src/pyams_utils/factory.py	Fri Nov 22 18:51:37 2019 +0100
@@ -15,7 +15,7 @@
 This module provides a decorator and a small set of functions to handle object factories.
 
 Instead of directly using a class as an object factory, the object of this module is to
-let you create an object based on an interface. The first step is to create an object 
+let you create an object based on an interface. The first step is to create an object
 implementing this interface, and then to register it as a factory:
 
 .. code-block:: python
@@ -23,9 +23,9 @@
     @implementer(IMyInterface)
     class MyClass(object):
         '''Class implementing my interface'''
-    
+
     register_factory(IMyInterface, MyClass)
-    
+
 Factory registry can also be handle by a decorator called "factory_config":
 
 .. code-block:: python
@@ -51,8 +51,6 @@
 own implementation of any PyAMS interface handled by factories.
 """
 
-__docformat__ = 'restructuredtext'
-
 import logging
 
 import venusian
@@ -63,12 +61,16 @@
 from pyams_utils.interfaces import IObjectFactory
 from pyams_utils.registry import get_global_registry
 
-logger = logging.getLogger('PyAMS (utils)')
+
+__docformat__ = 'restructuredtext'
 
 
-def is_interface(object):
+LOGGER = logging.getLogger('PyAMS (utils)')
+
+
+def is_interface(obj):
     """Check if given object is an interface"""
-    return issubclass(object.__class__, InterfaceClass)
+    return issubclass(obj.__class__, InterfaceClass)
 
 
 def get_interface_name(iface):
@@ -78,7 +80,7 @@
 
 @adapter(Interface)
 @implementer(IObjectFactory)
-class ObjectFactoryAdapter(object):
+class ObjectFactoryAdapter:
     """Most basic object factory adapter"""
 
     factory = None
@@ -87,7 +89,7 @@
         self.context = context
 
     def __call__(self):
-        return self.factory()
+        return self.factory()  # pylint: disable=not-callable
 
 
 def register_factory(interface, klass, registry=None, name=''):
@@ -95,12 +97,13 @@
 
     :param interface: the interface for which the factory is registered
     :param klass: the object factory
-    :param registry: the registry into which factory adapter should be registered; if None, the global
-        registry is used
+    :param registry: the registry into which factory adapter should be registered; if None, the
+        global registry is used
     :param name: custom name given to registered factory
     """
 
     class Temp(ObjectFactoryAdapter):
+        """Object factory matching given interface"""
         classImplements(klass, interface)
         factory = klass
 
@@ -112,7 +115,7 @@
     registry.registerAdapter(Temp, name=if_name)
 
 
-class factory_config(object):
+class factory_config:  # pylint: disable=invalid-name,no-member
     """Class decorator to declare a default object factory"""
 
     venusian = venusian
@@ -125,23 +128,24 @@
         settings = self.__dict__.copy()
         depth = settings.pop('_depth', 0)
 
-        def callback(context, name, ob):
+        def callback(context, name, obj):
             name = settings.get('name', '')
             provided = settings.get('provided')
             if not provided:
-                raise TypeError("No provided interface(s) was given for registered factory %r" % ob)
+                raise TypeError("No provided interface(s) was given for registered factory %r" %
+                                obj)
             if not isinstance(provided, tuple):
                 provided = (provided,)
 
             config = context.config.with_package(info.module)
             for interface in provided:
                 if name:
-                    logger.debug("Registering factory {0} for interface {1} with name {2}".format(str(ob),
-                                                                                                  str(interface),
-                                                                                                  name))
+                    LOGGER.debug("Registering factory %s for interface %s with name %s",
+                                 str(obj), str(interface), name)
                 else:
-                    logger.debug("Registering default factory {0} for interface {1}".format(str(ob), str(interface)))
-                register_factory(interface, ob, config.registry, name)
+                    LOGGER.debug("Registering default factory %s for interface %s",
+                                 str(obj), str(interface))
+                register_factory(interface, obj, config.registry, name)
 
         info = self.venusian.attach(wrapped, callback, category='pyams_factory', depth=depth + 1)
         if info.scope == 'class':