A service-oriented component model framework
This is iPOPO, a component model framework for Python based on SOA principles. It is based on Pelix, an SOA framework.
See http://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
- Development list : http://groups.google.com/group/ipopo-dev
More information at http://ipopo.coderxpress.net/
- BundleContext.install_bundle() now returns the Bundle object instead of the bundle ID. BundleContext.get_bundle() has been updated to accept both IDs and Bundle objects in order to keep a bit of compatibility
- Framework.get_symbolic_name() now returns pelix.framework instead of org.psem2m.pelix
- ServiceEvent.get_type() is renamed get_kind(). The other name is still available but is declared deprecated (a warning is logged on its first use).
- Shell command methods now take an IOHandler object in parameter instead of input and output file-like streams. This hides the compatibility tricks between Python 2 and 3 and simplifies the output formatting.
- Added this “release notes” page to the web site
- BundleContext.install_visiting(path, visitor):
- Visits the given path and installs the found modules if the visitor accepts them
- BundleContext.install_package(path) (experimental):
- Installs all the modules found in the package at the given path
- Based on install_visiting()
- Components with a pelix.ipopo.auto_restart property set to True are automatically re-instantiated after their bundle has been updated.
- Remote Services: use services of a distant Pelix instance
- Multicast discovery
- XML-RPC transport (not fully usable)
- JSON-RPC transport (based on a patched version of jsonrpclib)
- EventAdmin: send events (a)synchronously
Version 0.4 fixes many bugs and provides new features:
- create_framework() utility method
- The framework has been refactored, allowing more efficient services and events handling
- A component can provide multiple services
- A service controller can be injected for each provided service, to activate or deactivate its registration
- Dependency injection and service providing mechanisms have been refactored, using a basic handler concept.
- Added a HTTP service component, using the concept of servlet
- Added an extensible shell, interactive and remote, simplifying the usage of a framework instance
Packages have been renamed. As the project goes public, it may not have relations to isandlaTech projects anymore.
|Previous name||New name|
Version 0.2 is the first public release, under GPLv3 license (see LICENSE).
The package has been tested with:
- Python 2.6, 2.7, 3.1 and 3.2
- Pypy 1.8, 1.9
To work with Python 2.6, the importlib module back-port must be installed. It is available on PyPI.