Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 40 million developers.Sign up
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
collectionsabstract classes for Python 3.3+ in
This is a bug fixing 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:
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/ValidateComponentdecorators, 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
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
- Added a
Framework.delete()method to avoid the need to know about the
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.
This version mainly adds:
- Service Factories
- HTTP Routing (based on decorators,
- Redis and ZooKeeper remote service discovery providers (Docker-friendly discovery)
- Added basic support of HTTPS in Remote Services
A big thanks to iPOPO contributors:
- @debovis for fixing a strange behavior when importing a module a bundle depends on
- @Paltoquet for fixing the thread pool
- @ahmadshahwan for preventing imported HTTP servlets to be exposed by the local HTTP server
- @tbr for adding an auto-naming capacity in
@Providesdecorators and for fixing a bug in
This version adds new decorators to iPOPO:
@RequiresVariableFilter, which works as
@Requiresbut 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
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.
- 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_referencemethods, and before those services will be
- Removed the deprecated
- 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
to avoid duplicate headers.
- The request queue size of the basic HTTP server can now be set as a component
pelix.shell.consolemodule 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
- Added support for keyword arguments in most of remote services transports
(all except XML-RPC)
- Added support for
exporter to export the given specifications only, while
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
- 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, ...).
get_instance_details()dictionary now always contains a filter
entry for each of the component requirement description, even if not filter
has been set.
ipopo.retryshell 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.
threadsshell commands now accept a stack depth limit
- Protect the
ServletRequest.read_data()method against empty or invalid
- 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
- The command parser has been separated from the shell core service. This
allows to create custom shells without giving access to Pelix administration
pwdshell 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.
- 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.