Advanced search
Log In
New Account
  
Home My Page Project Cloud Code Snippets Project Openings BRisa UPnP
Summary Forums Tracker Lists Tasks Docs News SCM Files BRisa website Wiki
  Notes:  

Release Name: 0.10.0

Notes:
Release Notes

I'm pleased to announce the release of python-brisa version 0.10.0.
This version contains a lot of improvements and optimizations.


What is python-brisa ?
======================

python-brisa is a UPnP framework written in Python licensed under the
MIT License. It contains facilities for building UPnP devices, services
and control points. 

Features:
    * Integration with Qt, Gtk, Glib2 and Ecore
    * Simple but powerful API for writing devices, services and control points (object oriented)
    * Complete UPnP device architecture implementation (SSDP, SOAP, MSearch, Eventing (GENA))
    * Network transport tools (UDP), miscellaneous network tools (HTTP, XML, IP and network interfaces)
    * DIDL/DLNA
    * Facilities for logging, configurations, threading, application management


Website: http://brisa.garage.maemo.org/
Development: http://garage.maemo.org/projects/brisa/
Download: https://garage.maemo.org/frs/?group_id=138
Mailing list: https://garage.maemo.org/mailman/listinfo/brisa-discuss/


Multiplatform
=============

Being a pure python solution, python-brisa is supposed to run on every platform
that enables python. It's been tested with both Python 2.5 and Python 2.6 versions.

Tested platforms are maemo, Linux and also on Mac with a few tweaks.

We would really appreciate community feedback, bug reports and feature requests
concerning attempts to run it on other platforms.

In this release, we have to highlight our step further on multiplatform compliance:
a WSGI (Web Server Gateway Interface).

The python-brisa framework do require a webserver and we used to depend on Cherrypy
providing that for us. Now that we have WSGI, you can plug in any WSGI server and
it will give what the framework needs to work, without one specific dependency.

We have implemented adapters for Cherrypy, Circuits and Python-Paste WSGI servers,
but that can be easily extended (and contributed!) to any other WSGI servers.


Requirements
============

- Python 2.5.x, Python 2.5.x-dev (or 2.6) - http://www.python.org


Only *ONE* of the following:
- Python-Cherrypy (>= 3.1.1) - http://www.cherrypy.org
- circuits - http://trac.softcircuit.com.au/circuits/
- Python-paste http://pythonpaste.org/


Contact
=======

Our developers are usually at our official channel on freenode.

    * IRC Channel: #brisa @ irc.freenode.net
    * Mailing List: https://garage.maemo.org/mailman/listinfo/brisa-discuss/

Feel free to provide feedbacks, ask questions and so on.


Features of this release
========================
    * Implemented WSGI server adapters for cherrypy, circuits.web and paste
    * Webserver is now WSGI with pluggable server adapters
    * Implemented ServiceBuilder that builds the service object from a scpd.xml
    * Implemented two ways of creating a service: with a scpd.xml file or by specifying service parameters through code - and the framework generates the scpd.xml
    * Reactor infrastructure added
    * Webserver is not a singleton anymore
    * Arrangement for device abstracts the user from a lot of things, such as the webserver
    * Implemented Gtk2Reactor, Glib2Reactor, EcoreReactor, SelectReactor (default)
    * Plugin architecture refactored
    * Log messages are a bit more cleaner now. Most log messages were for debug purposes, so, changed most of them to DEBUG. INFO level now should be only used for informing the user high-level events, such as "New device", "Device is gone", "Publishing device", and so on.
    * Control point objects are now reusable (they weren't). They can now be stopped, and started again.
    * Closure procedure is now chained. Some classes (such as ssdp msearch) now have these 3 methods: start(), stop(), destroy(). start() - starts the class, stop() - stops the class, but it can be start()'ed again later and destroy() - stops the class DEFINITELY, clean references to help with garbage collection, makes the class unusable. For a more clearer view, take a look at upnp/control_point/control_point.py. You will notice that these three methods are chained.
    * Device webserver publishing is now chained and transparent to the user. Added some options to BRisa for customizing device/service build (and these options have default values for making everything work as automatic as possible)

    * Packages created:
          o core: framework core stuff
          o core.reactors: reactors implementations
          o upnp.control_point: API for writing control points
          o upnp.device: API for writing devices
          o upnp.services: general services implemented by us (ConnectionManager, ContentDirectory)
          o upnp.services.xmls: XML folder for the services of the item above

    * Removed lots of threads: most are now integrated with the main loop (fd's and sleeps)
    * Implemented UPnP eventing API on the device side
    * Removed deprecated modules: utils.sqlite, threading
    * Packages moves (from -> to):
          o utils.network -> core.network
          o utils.network_listeners -> core.network_listeners
          o utils.network_senders -> core.network_senders
          o utils.system -> core.system
          o utils.failure -> core.failure
          o threading.threaded_call -> core.threaded_call
          o log -> core.log
          o config -> core.config
          o control_point -> upnp.control_point
          o xml_descriptions -> upnp.services.xmls
          o services.web_server -> core.webserver


Bugs fixed in this release
==========================
    * Fixed looping call bug when the parameter "now" is False
    * Fixed arguments parsing bug (was not parsing arguments properly)
    * Fixed examples XML files


Features implemented from last release plans
============================================
    * Improve the thread interrupt with a higher level mechanism (probably pipes)
    * Provide framework's own exception classes
    * Implement more basic devices as examples
    * Add more basic examples of framework usage
    * Complete unit test suite for the framework
    * Add scripts for automatic packaging for gentoo, rpm


Next release plans
==================
    * Create an universal control point application
    * Create a media center application
    * Implement more basic devices as examples
    * Implement Media Server 2.0 and 3.0 devices
    * Implement Media Renderer 2.0 device



Changes: * Implemented WSGI server adapters for cherrypy, circuits.web and paste * Webserver is now WSGI with pluggable server adapters * Implemented ServiceBuilder that builds the service object from a scpd.xml * Implemented two ways of creating a service: with a scpd.xml file or by specifying service parameters through code - and the framework generates the scpd.xml * Reactor infrastructure added * Webserver is not a singleton anymore * Arrangement for device abstracts the user from a lot of things, such as the webserver * Implemented Gtk2Reactor, Glib2Reactor, EcoreReactor, SelectReactor (default) * Plugin architecture refactored * Log messages are a bit more cleaner now. Most log messages were for debug purposes, so, changed most of them to DEBUG. INFO level now should be only used for informing the user high-level events, such as "New device", "Device is gone", "Publishing device", and so on. * Control point objects are now reusable (they weren't). They can now be stopped, and started again. * Closure procedure is now chained. Some classes (such as ssdp msearch) now have these 3 methods: start(), stop(), destroy(). start() - starts the class, stop() - stops the class, but it can be start()'ed again later and destroy() - stops the class DEFINITELY, clean references to help with garbage collection, makes the class unusable. For a more clearer view, take a look at upnp/control_point/control_point.py. You will notice that these three methods are chained. * Device webserver publishing is now chained and transparent to the user. Added some options to BRisa for customizing device/service build (and these options have default values for making everything work as automatic as possible) * Packages created: o core: framework core stuff o core.reactors: reactors implementations o upnp.control_point: API for writing control points o upnp.device: API for writing devices o upnp.services: general services implemented by us (ConnectionManager, ContentDirectory) o upnp.services.xmls: XML folder for the services of the item above * Removed lots of threads: most are now integrated with the main loop (fd's and sleeps) * Implemented UPnP eventing API on the device side * Removed deprecated modules: utils.sqlite, threading * Packages moves (from -> to): o utils.network -> core.network o utils.network_listeners -> core.network_listeners o utils.network_senders -> core.network_senders o utils.system -> core.system o utils.failure -> core.failure o threading.threaded_call -> core.threaded_call o log -> core.log o config -> core.config o control_point -> upnp.control_point o xml_descriptions -> upnp.services.xmls o services.web_server -> core.webserver Bugs fixed in this release ========================== * Fixed looping call bug when the parameter "now" is False * Fixed arguments parsing bug (was not parsing arguments properly) * Fixed examples XML files


Terms of Use    Privacy Policy    Contribution Guidelines    Feedback

Powered By GForge Collaborative Development Environment