Package logilab :: Package common :: Module registry :: Class Registry

[frames] | no frames]

# Class Registry

source code

    object --+
             |
          dict --+
                 |
                Registry

    The registry store a set of implementations associated to identifier:

    * to each identifier are associated a list of implementations

    * to select an implementation of a given identifier, you should use one of the
      :meth:`select` or :meth:`select_or_none` method

    * to select a list of implementations for a context, you should use the
      :meth:`possible_objects` method

    * dictionary like access to an identifier will return the bare list of
      implementations for this identifier.

    To be usable in a registry, the only requirement is to have a `__select__`
    attribute.

    At the end of the registration process, the :meth:`__registered__`
    method is called on each registered object which have them, given the
    registry in which it's registered as argument.

    Registration methods:

    .. automethod:: register
    .. automethod:: unregister

    Selection methods:

    .. automethod:: select
    .. automethod:: select_or_none
    .. automethod:: possible_objects
    .. automethod:: object_by_id

Instance Methods

    new empty dictionary

__init__(self, debugmode) x.__init__(...) initializes x; see help(type(x)) for signature | source code

__getitem__(self, name) return the registry (list of implementation objects) associated to... | source code

initialization_completed(self) call method __registered__() on registered objects when the callback... | source code

register(self, obj, oid=None, clear=False) base method to add an object in the registry | source code

register_and_replace(self, obj, replaced) remove <replaced> and register <obj> | source code

unregister(self, obj) remove object <obj> from this registry | source code

all_objects(self) return a list containing all objects in this registry. | source code

object_by_id(self, oid, *args, **kwargs) return object with the `oid` identifier. | source code

select(self, __oid, *args, **kwargs) return the most specific object among those with the given oid according to the given context. | source code

select_or_none(self, __oid, *args, **kwargs) return the most specific object among those with the given oid according to the given context, or None if no object applies. | source code

possible_objects(self, *args, **kwargs) return an iterator on possible objects in this registry for the given... | source code

selected(self, winner, args, kwargs) override here if for instance you don't want "instanciation"... | source code

Inherited from `dict`: `__cmp__`, `__contains__`, `__delitem__`, `__eq__`, `__ge__`, `__getattribute__`, `__gt__`, `__iter__`, `__le__`, `__len__`, `__lt__`, `__ne__`, `__new__`, `__repr__`, `__setitem__`, `__sizeof__`, `clear`, `copy`, `fromkeys`, `get`, `has_key`, `items`, `iteritems`, `iterkeys`, `itervalues`, `keys`, `pop`, `popitem`, `setdefault`, `update`, `values`, `viewitems`, `viewkeys`, `viewvalues`

Inherited from `object`: `__delattr__`, `__format__`, `__reduce__`, `__reduce_ex__`, `__setattr__`, `__str__`, `__subclasshook__`

Class Methods

objid(cls, obj) returns a unique identifier for an object stored in the registry | source code

objname(cls, obj) returns a readable name for an object stored in the registry | source code

Class Variables
| debug = `lambda msg,* a,** kw:`
| exception = `lambda msg,* a,** kw:`
| critical = `lambda msg,* a,** kw:`
| error = `lambda msg,* a,** kw:`
| warning = `lambda msg,* a,** kw:`
| info = `lambda msg,* a,** kw:`
Inherited from `dict`: `__hash__`

Properties
Inherited from `object`: `__class__`

Method Details

### __init__(self, debugmode)
(Constructor)

source code

x.__init__(...) initializes x; see help(type(x)) for signature

Returns:

    new empty dictionary

Overrides: object.__init__
  (inherited documentation)

### __getitem__(self, name)
(Indexing operator)

source code

    return the registry (list of implementation objects) associated to
    this name

Overrides: dict.__getitem__

### initialization_completed(self)

source code

    call method __registered__() on registered objects when the callback
    is defined

### object_by_id(self, oid, *args, **kwargs)

source code

    return object with the `oid` identifier. Only one object is expected
    to be found.

    raise :exc:`ObjectNotFound` if there are no object with id `oid` in this
    registry

    raise :exc:`AssertionError` if there is more than one object there

### select(self, __oid, *args, **kwargs)

source code

    return the most specific object among those with the given oid
    according to the given context.

    raise :exc:`ObjectNotFound` if there are no object with id `oid` in this
    registry

    raise :exc:`NoSelectableObject` if no object can be selected

### possible_objects(self, *args, **kwargs)

source code

    return an iterator on possible objects in this registry for the given
    context

### selected(self, winner, args, kwargs)

source code

    override here if for instance you don't want "instanciation"