A service-oriented component model framework
iPOPO : A component model for Python
iPOPO is a Python-based Service-Oriented Component Model (SOCM) based on Pelix, a dynamic service platform. They are inspired on two popular Java technologies for the development of long-lived applications: the iPOJO component model and the OSGi Service Platform. iPOPO enables to conceive long-running and modular IT services.
See https://ipopo.coderxpress.net for documentation and more information.
Feel free to send feedback on your experience of Pelix/iPOPO, via the mailing lists :
- User list: http://groups.google.com/group/ipopo-users (don’t be shy)
- Development list: http://groups.google.com/group/ipopo-dev
More information at https://ipopo.coderxpress.net/
It is also manually tested with Pypy 1.9 and Python 3.4.
To use iPOPO on Python 2.6, it is necessary to install the importlib module back-port, using pip install importlib. To execute iPOPO tests on this version, you also need to install the unittest2 module.
See the CHANGELOG.rst file to see what changed in previous releases.
- Added samples to the project repository
- Removed the static website from the repository
- Added the project to Coveralls
- Increased code coverage
- Added a @BundleActivator decorator, to define the bundle activator class. The activator module variable should be replaced by this decorator.
- Renamed specifications constants: from XXX_SPEC to SERVICE_XXX
- Added a waiting list service: instantiates components as soon as the iPOPO service and the component factory are registered
- Added @RequiresMap handler
- Added an if_valid parameter to binding callbacks decorators: @Bind, @Update, @Unbind, @BindField, @UpdateField, @UnbindField. The decorated method will be called if and only if the component valid.
- The get_factory_context() from decorators becomes public to ease the implementation of new decorators
- Large rewriting of Remote Service core modules
- Now using OSGi Remote Services properties
- Added support for the OSGi EDEF file format (XML)
- Added an abstract class to easily write RPC implementations
- Added mDNS service discovery
- Added an MQTT discovery protocol
- Added an MQTT-RPC protocol, based on Node.js MQTT-RPC module
- Added a Jabsorb-RPC transport. Pelix can now use Java services and vice-versa, using:
- Enhanced completion with readline
- Enhanced commands help generation
- Added arguments to filter the output of bl, sl, factories and instances
- Corrected prompt when using readline
- Corrected write_lines() when not giving format arguments
- Added an echo command, to test string parsing
- Added support for managed service factories in ConfigurationAdmin
- Added an EventAdmin-MQTT bridge: events from EventAdmin with an event.propage property are published over MQTT
- Added an early version of an MQTT Client Factory service
- Added a misc package, with utility modules and bundles:
- eventadmin_printer: an EventAdmin handler that prints or logs the events it receives
- jabsorb: converts dictionary from and to the Jabsorb-RPC format
- mqtt_client: a wrapper for the Paho MQTT client, used in MQTT discovery and MQTT-RPC.