Metadata-Version: 1.0
Name: circuits
Version: 1.6
Summary: Asynchronous Component based Event Application Framework
Home-page: http://bitbucket.org/prologic/circuits/
Author: James Mills
Author-email: James Mills, prologic at shortcircuit dot net dot au
License: MIT
Download-URL: http://bitbucket.org/prologic/circuits/downloads/
Description: .. _Python Programming Language: http://www.python.org/
        .. _circuits IRC Channel: irc://irc.freenode.net/#circuits
        .. _Python Standard Library: http://docs.python.org/library/
        .. _circuits Website: https://bitbucket.org/prologic/circuits/
        .. _circuits Page on PyPI: http://pypi.python.org/pypi/circuits
        .. _MIT License: http://www.opensource.org/licenses/mit-license.php
        .. _Create an Issue: https://bitbucket.org/prologic/circuits/issue/new
        .. _circuits Mailing List: http://groups.google.com/group/circuits-users
        .. _circuits Downloads page: https://bitbucket.org/prologic/circuits/downloads
        
        
        Overview
        --------
        
        circuits is a **Lightweight** **Event** driven and **Asynchronous**
        **Application Framework** for the `Python Programming Language`_
        with a strong **Component** Architecture.
        
        circuits also includes a lightweight, high performance and scalable
        HTTP/WSGI web server as well as various I/O and Networking components.
        
        To take full advantage of circuits and its architecture, circuits
        requires that your application be designed in terms of components
        and their interactions (*events*) with each other. An application
        written using the circuits application framework is maintainable,
        scalable and easy to develop.
        
        The circuits framework has a certain elegance making it a rather
        attracting feature. New features are built into the framework with
        this in mind and circuits "eats its own dog food" by having a
        feature-rich library of components built atop the core components.
        
        **Documentation**: http://packages.python.org/circuits
        
        **Project website**: https://bitbucket.org/prologic/circuits/
        
        **PyPI page**: http://pypi.python.org/pypi/circuits
        
        
        Features
        --------
        
        - event driven
        - concurrency support
        - compnoent archiecture
        - asynchronous I/O components
        - no required external dependencies
        - full featured web framework (circuits.web)
        
        
        Requirements
        ------------
        
        circuits has no dependencies beyond the `Python Standard Library`_.
        
        Some dependencies should be optionally installed if deployed on a Python-2.5
        environment such as `processing <http://pypi.python.org/pypi/processing/>`_
        for multiprocessing concurrency support and for JSON support the
        `simplejson <http://pypi.python.org/pypi/simplejson/>`_ package.
        
        
        Installation
        ------------
        
        The simplest and recommended way to install circuits is with pip.
        You may install the latest stable release from PyPI with pip::
        
            > pip install circuits
        
        If you do not have pip, you may use easy_install::
        
            > easy_install circuits
        
        Alternatively, you may download the source package from the
        `circuits Page on PyPI`_ or the `circuits Downloads page`_ on the
        `circuits Website`_; extract it and install using::
        
            > python setup.py install
        
        
        License
        -------
        
        circuits is licensed under the `MIT License`_.
        
        
        Feedback
        --------
        
        I welcome any questions or feedback about bugs and suggestions on how to 
        improve circuits. Let me know what you think about circuits. I am on twitter 
        `@therealprologic <http://twitter.com/therealprologic>`_.
        
        Do you have suggestions for improvement? Then please `Create an Issue`_
        with details of what you would like to see. I'll take a look at it and
        work with you to either incorporate the idea or find a better solution.
        
        
        Community
        ---------
        
        There is also a small community of circuits enthusiasts that you may
        find on the `circuits IRC Channel`_ and the `circuits Mailing List`_.
        
        
        Release Notes - circuits-1.6 (oceans)
        -------------------------------------
        
        
        Python 3 Support
        ................
        
        This is the third attempt at getting Python 3 support for circuits working
        while still maintaining Python 2 compatibility. This release finally adds
        full support for Python 3 as well as maintaining compatibility with Python
        2.6 and 2.7 with the same code-base.
        
        .. note::
           Python 2.5 support has been dropped as of this release and will no
           longer be supported in future. There may be a maintenance branch
           specifically for Python 2.5 if required.
        
        
        Greenlet Support
        ................
        
        circuits now includes two new primitives which work by integrating
        `greenlet <http://pypi.python.org/pypi/greenlet>`_.
        
        - ``.waitEvent(...)`` -- Wait for the given event to complete.
        - ``.callEvent(...)`` -- Call event handlers for the given event.
        
        .. note:: These new primitives add (*as long as greenlet is installed*) the ability to write semi-synchronous code in your event handlers while still taking full advantage of the asynchronous and component framework that circuits has to offer.
        
        Code Coverage
        .............
        
        circuits now has 80% test coverage on all supported versions of Python
        including Python 2.6, Python 2.7 and Python 3.2
        
        
        Features
        ........
        
        - Added an example WebSockets server using circuits.web
        - Added support for specifying a ``Poll`` instance to use when using the
          ``@future`` decorator to create "future" event handlers.
        - Added ``add_section``, ``has_section`` and ``set`` methods to
          ``app.config.Config`` Component.
        - Added support for running test suite with distutils ``python setup.py
          test``.
        - Added a ``_on_signal`` event handler on the ``BaseEnvironment`` Component
          so that environments can be reloaded by listening to ``SIGHUP`` signals.
        - Added support for using absolute paths in ``app.env.Environment``.
        - Added support in circuits.web ``HTTP`` protocol to limit the no. of
          header fragments. This prevents OOM exploits.
        - Added a ticks limit to waitEvent
        - Added deprecation warnings for .push .add and .remove methods
        - NEW ``Loader`` Component in ``circuits.core`` for simple plugin support.
        - NEW ``app.env`` and ``app.config`` modules including a new ``app.startup``
          modules integrating a common startup for applications.
        - NEW ``KQueue`` poller
        
        
        Bug Fixes
        .........
        
        - Fixed Issue #17
        - Renamed ``circuits.web.main`` module to ``circuits.web.__main__`` so that
          ``python -m circuits.web`` just works.
        - Fixed ``Server.host`` and ``Server.port`` properties in
          ``circuits.net.sockets``.
        - Fixed Issue #19
        - Fixed ``app.Daemon`` Component to correctly open the stderr file.
        - Fixed triggering of ``Success`` events.
        - Fixed duplicate broadcast handler in ``UDPServer``
        - Fixed duplicate ``Disconnect`` event from being triggered twice on
          ``Client`` socket components.
        - Removed dynamic timeout code from ``Select`` poller.
        - Fixed a bug in the circuits.web ``HTTP`` protocol where headers were
          not being buffered per client.
        - Fixes a missing Event ``Closed()`` not being triggered for ``UDPServer``.
        - Make underlying ``UDPServer`` socket reusable by setting ``SO_REUSEADDR``
        - Fixes Server socket being discarded twice on close + disconnect
        - Socket.write now expects bytes (bytes for python3 and str for python2)
        - Better handling of encoding in HTTP Component (allow non utf-8 encoding)
        - Always encode http headers in utf-8
        - Fixes error after getting socket.ERRCONNREFUSED
        - Allows TCPClient to bind to a specific port
        - Improved docs
        - Handles closing of udpserver socket when no client is connected
        - Adds an unregister handler for components
        - Allows utils.kill to work from a different thread
        - Fixes bug when handling "*" in channels and targets
        - Fixes a bug that could occur when unregistering components
        - Fixes for CPU usage problems when using circuits with no I/O pollers
          and using a Timer for timed events
        
Keywords: event framework distributed concurrent component asynchronous
Platform: POSIX
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Environment :: No Input/Output (Daemon)
Classifier: Environment :: Other Environment
Classifier: Environment :: Plugins
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Telecommunications Industry
Classifier: License :: OSI Approved
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows :: Windows NT/2000
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.2
Classifier: Topic :: Adaptive Technologies
Classifier: Topic :: Communications :: Chat :: Internet Relay Chat
Classifier: Topic :: Communications :: Email :: Mail Transport Agents
Classifier: Topic :: Database
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Clustering
Classifier: Topic :: System :: Distributed Computing
