Ipopo

Latest version: v3.0.0

Safety actively analyzes 714815 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 5

0.6.0

:::{admonition} Release Date
:class: info

2015-03-12
:::

Project

* The support of Python 2.6 has been removed

Utilities

* The XMPP bot class now supports anonymous connections using SSL or
StartTLS. This is a workaround for
[351](https://github.com/fritzy/SleekXMPP/issues/351) of
[SleekXMPP](https://github.com/fritzy/SleekXMPP).

0.5.9

:::{admonition} Release Date
:class: info

2015-02-18
:::

Project

* iPOPO now works with IronPython (tested inside Unity 3D)

iPOPO

* Components raising an error during validation goes in the
`ERRONEOUS` state, instead of going back to `INVALID`. This avoids
trying to validate them automatically.
* The `retry_erroneous()` method of the iPOPO service and the `retry`
shell command allows to retry the validation of an `ERRONEOUS` component.
* The `SingletonFactory` decorator can replace the
`ComponentFactory` one. It ensures that only one component of this
factory can be instantiated at a time.
* The `Temporal` requirement decorator allows to require a service
and to wait a given amount of time for its replacement before
invalidating the component or while using the requirement.
* `RequiresBest` ensures that it is always the service with the best
ranking that is injected in the component.
* The `PostRegistration` and `PreUnregistration` callbacks allows
the component to be notified right after one of its services has
been registered or will be unregistered.

HTTP Service

* The generated 404 page shows the list of registered servlets paths.
* The 404 and 500 error pages can be customized by a hook service.
* The default binding address is back to `0.0.0.0` instead of
`localhost` (for those who used the development version).

Utilities

* The `ThreadPool` class is now a cached thread pool. It now has a
minimum and maximum number of threads: only the required threads are
alive. A thread waits for a task during 60 seconds (by default)
before stopping.

0.5.8

:::{admonition} Release Date
:class: info

2014-10-13
:::

Framework

* `FrameworkFactory.delete_framework()` can be called with `None` or
without argument. This simplifies the clean up afters tests, etc.
* The list returned by `Framework.get_bundles()` is always sorted by bundle ID.

iPOPO

* Added the `immediate_rebind` option to the `Requires` decorator.
This indicates iPOPO to not invalidate then re-validate a component
if a service can replace an unbound required one. This option only
applies to non-optional, non-aggregate requirements.

Shell

* The I/O handler is now part of a `ShellSession` bean. The latter has
the same API as the I/O handler so there is no need to update
existing commands. I/O Handler write methods are now synchronized.
* The shell supports variables as arguments, *e.g.* `echo $var`. See
[string.Template](https://docs.python.org/3/library/string.html#template-strings)
for more information. The Template used in Pelix Shell allows `.` (dot) in names.
* A special variable `$?` stores the result of the last command which
returned a result, *i.e.* anything but `None` or `False`.
* Added *set* and *unset* commands to work with variables
* Added the *run* command to execute a script file.
* Added protection against `AttributeError` in *threads* and *thread*

0.5.7

:::{admonition} Release Date
:class: info

2014-09-18
:::

Project

* Code review to be more PEP-8 compliant
* [jsonrpclib-pelix](https://pypi.org/project/jsonrpclib-pelix/) is
now an install requirement (instead of an optional one)

Framework

* Forget about previous global members when calling `Bundle.update()`.
This ensures to have a fresh dictionary of members after a bundle update
* Removed `from pelix.constants import *` in `pelix.framework`: only
use `pelix.constants` to access constants

Remote Services

* Added support for endpoint name reuse
* Added support for synonyms: specifications that can be used on the
remote side, or which describe a specification of another language
(*e.g.* a Java interface)
* Added support for a `pelix.remote.export.reject` service property:
the specifications it contains won't be exported, event if
indicated in `service.exported.interfaces`.
* JABSORB-RPC:
* Use the common `dispatch()` method, like JSON-RPC
* MQTT(-RPC):
* Explicitly stop the reading loop when the MQTT client is disconnecting
* Handle unknown correlation ID

Shell

* Added a `loglevel` shell command, to update the log level of any logger
* Added a `--verbose` argument to the shell console script
* Remote shell module can be ran as a script

HTTP Service

* Remove double-slashes when looking for a servlet

XMPP

* Added base classes to write a XMPP client based on
[SleekXMPP](https://github.com/fritzy/SleekXMPP)
* Added a XMPP shell interface, to control Pelix/iPOPO from XMPP

Miscellaneous

* Added an IPv6 utility module, to setup double-stack and to avoids
missing constants bugs in Windows versions of Python
* Added a `EventData` class: it acts like `Event`, but it allows to
store a data when setting the event, or to raise an exception in all
callers of `wait()`
* Added a `CountdownEvent` class, an `Event` which is set until a
given number of calls to `step()` is reached
* `threading.Future` class now supports a callback methods, to avoid
to actively wait for a result.

0.5.6

:::{admonition} Release Date
:class: info

2014-04-28
:::

Project

* Added samples to the project repository
* Removed the static website from the repository
* Added the project to [Coveralls](https://coveralls.io/)
* Increased code coverage

Framework

* 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`

iPOPO

* 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

Remote Services

* 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](https://github.com/wolfeidau/mqtt-rpc)
* Added a Jabsorb-RPC transport. Pelix can now use Java services and vice-versa, using:
* [Cohorte Remote Services](https://github.com/cohorte/cohorte-remote-services)
* [Eclipse ECF](https://wiki.eclipse.org/ECF/) and the
[Jabsorb-RPC provider](https://github.com/cohorte/cohorte-remote-services/tree/master/deprecated/org.cohorte.ecf.provider.jabsorb)

Shell

* 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

Services

* Added support for *managed service factories* in ConfigurationAdmin
* Added an EventAdmin-MQTT bridge: events from EventAdmin with an
`event.propagate` property are published over MQTT
* Added an early version of an MQTT Client Factory service

Miscellaneous

* 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](https://eclipse.dev/paho/)
MQTT client, used in MQTT discovery and MQTT-RPC.

0.5.5

:::{admonition} Release Date
:class: info

2013-11-15
:::

Project

The license of the iPOPO project is now the
[Apache Software License 2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

Framework

* `get_*_service_reference*()` methods have a default LDAP filter set to `None`.
Only the service specification is required, event if set to `None`.
* Added a context `use_service(context, svc_ref)`, that allows to
consume a service in a `with` block.

iPOPO

* Added the *Handler Factory* pattern: all instance handlers are
created by their factory, called by iPOPO according to the handler
IDs found in the factory context. This will simplify the creation of
new handlers.

Services

* Added the `ConfigurationAdmin` service
* Added the `FileInstall` service

Page 3 of 5

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.