Skip to content

@tcalmant tcalmant released this Jan 19, 2020

First 1.x release of iPOPO!

Note: The Pelix/iPOPO project is now split in two branches: iPOPO (v1 branch) and ipopo2 (v2 branch). The v2 branch requires Python 3.7+, whereas v1 will keep compatibility with Python 2.7.

Bug fixes with this release:

  • Fixed an error when starting the framework after having loaded native modules, e.g. numpy. These modules don't have a __path__ set, which case was not handled when the framework normalizes the existing module paths.
  • Fixed an invalid import of collections abstract classes for Python 3.3+ in pelix.internal.hooks.
Assets 2

@tcalmant tcalmant released this Nov 17, 2018 · 5 commits to master since this release

This is a bug fixing release:

  • Fixed a memory leak in the thread pool implementation.
    The patch comes from issue 35 of the jsonrpclib-pelix project.
  • Fixed a deadlock in the Py4J provider (issue #100), contributed by Scott Lewis (@scottslewis).
    See pull request #101 for more details.
Assets 2

@tcalmant tcalmant released this Aug 19, 2018 · 19 commits to master since this release

A new step toward 1.0 !

This major new feature of this release is the contribution of the Remote Service Admin implementation by @scottslewis.
The documentation about this new feature is split into 3 parts:

Assets 2

@tcalmant tcalmant released this Jun 15, 2018 · 224 commits to master since this release

This is a small release, before version 0.8.0 (unless some issues are detected meanwhile)

This version adds:

  • TLS Remote Shell
  • Shell completion services
  • Shell reference cards in the documentation
  • @In/ValidateComponent decorators, which give more control on the argument of the life-cycle callbacks
  • Bugs fixed:
    • Framework.delete() behavior on stopped frameworks
    • LogService access to Python LogRecord messages
Assets 2

@tcalmant tcalmant released this Dec 30, 2017 · 289 commits to master since this release

This version adds:

  • Prototype Service Factories
  • Automatic release of consumed services when a bundle stops. This will avoid some stale references when using service factories. WARNING: This is an important change in behavior, which might break some projects which use stale references to pass information from one bundle version to another during an update (which is a bad way to do it).
  • Deprecation handling of the imp package
  • Added a Framework.delete() method to avoid the need to know about the FrameworkFactory class.

This release also removes some Python 2.6 compatibility code that was remaining. and which is not necessary anymore, as this version of Python is not supported anymore by iPOPO.

A big thank you to @elrhedda for his feedback.

Assets 3

@tcalmant tcalmant released this Sep 17, 2017 · 324 commits to master since this release

This version mainly adds:

A big thanks to iPOPO contributors:

Assets 2

@tcalmant tcalmant released this Jun 12, 2016 · 515 commits to master since this release

This version adds new decorators to iPOPO:

  • @RequiresVariableFilter, which works as @Requires but also support the use of component properties as variables in LDAP filter.
  • @HiddenProperty, which extends @Property, but ensures that the property key and value won't be seen in the description API nor in the shell.
    (it will stay visible using the standard reflection API of Python)

The "log service" has also been added to this version, though the pelix.misc.log bundle.
It provides the OSGi API to log traces, but also keep track of the traces written with the logging module.
The log entries can be accessed locally (but not through remote services).
They can be printed in the shell using commands provided by

Finally, the HTTP basic component now support HTTPS.
It is activated when given two files (a certificate and a key) in its component properties.
A password can also be given if the key file is encrypted.
This is a prototype feature and should be used carefully.
Also, it should not be used with remote services.

Assets 2

@tcalmant tcalmant released this Oct 25, 2015 · 549 commits to master since this release


  • iPOPO now has a logo ! (thanks to @debbabi)
  • README file has been rewritten
  • Better PEP-8 compliance
  • Updated jsonrpclib requirement version to 0.2.6


  • Optimization of the service registry (less dictionaries, use of sets, ...)
  • Added the hide_bundle_services() to the service registry.
    It is by the framework to hide the services of a stopping bundle from
    get_service_reference methods, and before those services will be
  • Removed the deprecated ServiceEvent.get_type() method


  • Optimization of StoredInstance (handlers, use of sets, ...)


  • Added a is_header_set() method to the HTTPServletResponse bean.
  • Response headers are now sent on end_headers(), not on set_header(),
    to avoid duplicate headers.
  • The request queue size of the basic HTTP server can now be set as a component
    property (pelix.http.request_queue_size)


  • The module can now be run as a main script
  • Added the report shell command
  • Added the name of varargs in the signature of commands
  • Corrected the signature shown in the help description for static methods
  • Corrected the thread and threads shell commands for pypy

Remote Services

  • Added support for keyword arguments in most of remote services transports
    (all except XML-RPC)
  • Added support for pelix.remote.export.only and
    pelix.remote.export.none service properties. ..only tells the
    exporter to export the given specifications only, while ..none forbids
    the export of the service.


  • Updated the MQTT client to follow the new API of Eclipse Paho MQTT Client


  • Travis-CI: Added Python 3.5 and Pypy3 targets
  • Better configuration of coverage
  • Added tests for the remote shell
  • Added tests for the MQTT client and for MQTT-RPC
Assets 2

@tcalmant tcalmant released this Jun 18, 2015 · 640 commits to master since this release


  • The properties of a component can be updated when calling the
    retry_erroneous() method. This allows to modifiy the configuration of
    a component before trying to validate it again (HTTP port, ...).
  • The get_instance_details() dictionary now always contains a filter
    entry for each of the component requirement description, even if not filter
    has been set.


  • The ipopo.retry shell command accepts properties to be reconfigure the
    instance before trying to validate it again.
  • The bundle commands (start, stop, update, uninstall) now prints the
    name of the bundle along with its ID.
  • The threads and threads shell commands now accept a stack depth limit


  • Protect the ServletRequest.read_data() method against empty or invalid
    Content-Length headers
Assets 2

@tcalmant tcalmant released this Apr 20, 2015 · 657 commits to master since this release


  • The stack trace of the exception that caused a component to be in the
    ERRONEOUS state is now kept, as a string. It can be seen throught the
    instance shell command.


  • The command parser has been separated from the shell core service. This
    allows to create custom shells without giving access to Pelix administration
  • Added cd and pwd shell commands, which allow changing the working
    directory of the framework and printing the current one.
  • Corrected the encoding of the shell output string, to avoid exceptions when
    printing special characters.

Remote Services

  • Corrected a bug where an imported service with the same endpoint name as an
    exported service could be exported after the unregistration of the latter.
Assets 2
You can’t perform that action at this time.