.. _ref-pool:
.. module:: trytond.pool

Pool
====

.. class:: Pool([database_name])

   Store the instances of :class:`~trytond.model.Model`,
   :class:`~trytond.wizard.Wizard` and *Report* per database.

Static methods:

.. staticmethod:: Pool.register(klass, ..., type_, module[, depends])

   Register the classes of type (``model``, ``report`` or ``wizard``) for the
   module.

   If ``depends`` is set, the registration happens only if all the modules are
   activated.

.. staticmethod:: Pool.register_mixin(mixin, classinfo, module)

   Register the mixin for the module.

   The ``mixin`` are included to all subclasses of ``classinfo``.

Class methods:

.. classmethod:: Pool.start()

   Start the pool by registering all Tryton modules found.

.. classmethod:: Pool.stop(database_name)

   Stop the pool by removing instances for the database.

.. classmethod:: Pool.database_list()

   List all started databases.

Instance methods:

.. method:: Pool.get(name[, type])

   Return the named object of ``type`` from the pool.

.. method:: Pool.iterobject([type])

   Return an interator over objects of ``type``.

.. method:: Pool.fill(module, modules)

   Fill the pool with the registered classes from the module and for the
   activated modules and return a list of classes for each type in a
   dictionary.

.. method:: Pool.setup([classes])

   Call all setup methods of the classes provided or for all the registered
   classes.

.. method:: Pool.setup_mixin([type[, name]])

   Include all the mixin registered for the filled modules to the corresponding
   registered type of classes or named.


PoolMeta
--------

.. class:: PoolMeta

   A metaclass helper to setup __name__ on class to be registered in the
   :class:`Pool`.


PoolBase
--------

.. class:: PoolBase

   The base class of registered classes.

Class methods:

.. classmethod:: PoolBase.__setup__()

   Setup the class.

.. classmethod:: PoolBase.__post_setup__()

   Post setup the class.

.. classmethod:: PoolBase.__register__()

   Registare the class.
