August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year,
primarily targeted around Python 3 and ecosystem compatibility.
PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)
Release Notes
Kamaelia 0.2.0
SUMMARY
New Examples
4 new examples showing of various new subsystem:
Example 5 : An introspecting
version of Examples 2/3. This creates a simple streaming system, and
looks inside to see what components are running/active, and passes the
resulting information over a network connection to an Axon Visualisation
server.
Example 6 : This is a
simple/generic topology visualisation server. The server listens on port
1500, and accepts the following commands:
As this stands this is pretty useful, but that's pretty much
everything it does like this.
Example 7 : This shows how the
visualisation subsystem can be extended to work in different ways. What
this does by default when run is randomly create new nodes and new
linkages quite quickly, allowing you to see how the system works.
Example 8 : Sample
slideshow/presentation tool. Unlike traditional slideshow/presentation
tools, you can modify this to run arbitrary components. An example of
how this can work is provided - allowing stepping through some graph
visualisations along with the presentation.
New Tools
Axon Shell. Implements a simple
command line shell which allows experimentation with Axon systems - the
shell runs a scheduler in the background. For a tutorial of use,
see:
Axon Visualiser.Implements a
simple tool for looking inside (quite literally) running Axon/Kamaelia
systems. This allows a very different style of debugging and can be
extremely useful. Tutorial on its way!
Graphlines and Pipelines
These are probably the most useful additions to Kamaelia since 0.1.2.
They are essentially syntactic sugar for building and working with
systems of components, but make building interesting systems rapidly out
of pre-existing components fun and easy. The pipelines follow the same
sort of model as the Unix pipeline. Graphlines are something new, and
like pipelines and all linkages may take any data along them.
They're also probably best explained by example, so since these are
release notes, I'll just present a couple of examples here.
A graphline representing a simple presentation tool:
CHOOSER = Chooser(items =
files),
IMAGE = Image(size=(800,600), position=(8,48)),
NEXT = Button(caption="Next", msg="NEXT", position=(72,8)),
PREVIOUS = Button(caption="Previous", msg="PREV",position=(8,8)),
FIRST = Button(caption="First", msg="FIRST",position=(256,8)),
LAST = Button(caption="Last", msg="LAST",position=(320,8)),
linkages = {
).run()
A pipeline representing a trivial multicast streaming server
A pipeline representing a trivial multicast streaming client:
New Packages & Subsystems
These names should provide you with a flavour of the new subsystems
that have been added:
New Components
This section gives an overview of what's new in terms of actual new
files.
Examples/ -- example5, example6, example7, example8
Kamaelia/Data/ -- MimeDict.py
Kamaelia/Internet/ -- ThreadedTCPClient.py
Kamaelia/ -- SingleServer.py
Kamaelia/Physics/ -- __init__.py
- Kamaelia/Physics/Simple/ -- __init__.py, MultipleLaws.py,
Particle.py, ParticleSystem.py, SimpleLaws.py, SpatialIndexer.py
Kamaelia/UI/ -- __init__.py, PygameDisplay.py
- Kamaelia/UI/Pygame/ -- Ticker.py, Multiclick.py, Image.py,
Button.py
- Kamaelia/UI/MH/ -- __init__.py, PyGameApp.py, DragHandler.py
Kamaelia/Util/ -- Chooser.py, Comparator.py, Graphline.py,
Introspector.py, LossyConnector.py, MarshallComponent.py,
NullSinkComponent.py, passThrough.py, PipelineComponent.py, Splitter.py,
TestResultComponent.py
Kamaelia/Visualisation/ -- __init__.py
- Kamaelia/Visualisation/Axon/ -- __init__.py, AxonLaws.py,
AxonVisualiserServer.py, ExtraWindowFurniture.py, PComponent.py,
PPostbox.py
- Kamaelia/Visualisation/PhysicsGraph/ -- __init__.py,
chunks_to_lines.py, lines_to_tokenlists.py, GridRenderer.py,
ParticleDragger.py, RenderingParticle.py, TopologyViewerComponent.py,
TopologyViewerServer.py
Changed & Updated
All updated siles & classes at a glance:
- Examples/ -- example1, example2, example3, example4
- Kamaelia/Util/ -- ConsoleEcho.py, Chargen.py
- Kamaelia/Protocol/ -- AudioCookieProtocol.py,
EchoProtocolComponent.py, FortuneCookieProtocol.py, HTTPServer.py
- Kamaelia-0.2.0/Kamaelia/ -- ReadFileAdaptor.py,
SampleTemplateComponent.py, MimeRequestComponent.py,
SimpleServerComponent.py, test/SynchronousLinks_SystemTest.py
- Kamaelia/Internet/ -- ConnectedSocketAdapter.py,
Multicast_receiver.py, Multicast_sender.py, Multicast_transceiver.py,
Selector.py, TCPClient.py, TCPServer.py,
test/test_BasicMulticastSystem.py
- Docs/index.html
Large scale common changes
- All classes changed from using self.__super to using super(klass,
self) ... on the advice of Michele Simionato
Detailed Release
Notes
Kamaelia-0.2.0/AUTHORS
Modified
- Joseph Lord (Moved on from BBC R&D)
Added
- Matt Hammond, BBC R&D
- Ciaran Eaton (Pre-University Trainee @ BBC R&D)
- Tom Gibson (Vacation Trainee @ BBC R&D)
- Gintautas Miliauskas, Programmers of Vilnius- first external
contributor (Debian Packaging!)
Kamaelia-0.2.0/CHANGELOG
- Overview of some of the key changes
NEW STUFF!
Kamaelia-0.2.0/Examples/example5/
This is a new example, it is an introspecting version of the
SimpleStreamingSystem.py examples. This allows you to see inside a
running streamer server and client system and see what's actually
happening inside.
It is essentially very similar to the old version of Example2, but
with the addition of introspection components
New files:
- IntrospectingSimpleStreamingSystem.py
- README
Kamaelia-0.2.0/Examples/example6/
This is a new example - a topology visualiser. This takes textual
commands from a single socket and renders the resulting graph.
Example
- ADD NODE id1 label1 auto -
- ADD NODE id2 label2 auto -
- ADD LINK id1 id2
This draw and lays out and simple system linking 2 nodes, using a
simple physics type engine for layout
New files:
Kamaelia-0.2.0/Examples/example7/
This is a more complex (new) example of using the topology/graph
viewing code. It extends the system to add in some new node
types/behaviour via the code in the BasicGraphVisualisation
directory.
New files:
- BasicGraphVisualisation.py
- BasicGraphVisualisation/__init__.py
- BasicGraphVisualisation/ParticleDragger.py
- BasicGraphVisualisation/PhysApp1.py
- BasicGraphVisualisation/VisibleParticle.py
Kamaelia-0.2.0/Examples/example8/
Another new example - this one showing how to bolt together existing
Pygame based components using the simplistic "window" manager (more
surface manage really) to place mutiple buttons, image viewers etc into
a single display, and link them together tio form a simple slideshow
tool, which can be used for presentations. Includes a small number of
slides from the Europython talk about Kamaelia.
This is also probably the nicest example (and the first example) of
how a Graphline can be of real use to make a system more declarative and
clearer.
New files:
- slideshow.py - "Just" a slideshow/presentation tool
- topology.py - "Just" a slideshow/presentation tool for showing
structural diagrams clearly, and maniupulable
- topology_slideshow.py - comination showing how one tool can be
overlaid on top of another forming a more useful, more general tool for
doing presentations.
- README
- Slides/KamaeliaEuropython2005.001.gif
- Slides/KamaeliaEuropython2005.016.gif
- Slides/KamaeliaEuropython2005.021.gif
- Slides/KamaeliaEuropython2005.030.gif
- Slides/KamaeliaEuropython2005.036.gif
- Slides/KamaeliaEuropython2005.039.gif
Kamaelia-0.2.0/Examples/README
Updated to document the 4 new examples. Copied here for
convenience.
Example 5 : An introspecting
version of Examples 2/3. This creates a simple streaming system, and
looks inside to see what components are running/active, and passes the
resulting information over a network connection to an Axon Visualisation
server.
Example 6 : This is a
simple/generic topology visualisation server. The server listens on port
1500, and accepts the following commands:
As this stands this is pretty useful, but that's pretty much
everything it does like this.
Example 7 : This shows how the
visualisation subsystem can be extended to work in different ways. What
this does by default when run is randomly create new nodes and new
linkages quite quickly, allowing you to see how the system works.
Example 8 : Sample
slideshow/presentation tool. Unlike traditional slideshow/presentation
tools, you can modify this to run arbitrary components. An example of
how this can work is provided - allowing stepping through some graph
visualisations along with the presentation.
Kamaelia-0.2.0/Kamaelia/Data/MimeDict.py
- New data type for representing dictionaries as mime-like objects.
Allows for simple transformation of a dict to a mime-like object (via
str() ), and
from a suitable string. This is designed to support implementing (via
specialisation) HTTP, SMTP, and NNTP objects.
Kamaelia-0.2.0/Kamaelia/Internet/ThreadedTCPClient.py
New component
- This allows you to have a TCP Client running, but in a different
thread. This allows for blocking actions.
- This is also probably the first/only usage to date of the threaded
component class in Axon.
- There may therefore be minor issues with this class.
Provides the same interface from a component user perspective to the
TCPClient.py class
Originally written because at the time Nokia Series 60 mobiles only
supported blocking sockets.
Kamaelia-0.2.0/Kamaelia/Physics/__init__.py
- New subsystem
- Introduction of a simple physics system for use with the topology
viewer code. This may be in the wrong location, but it's an initial
starting point
Kamaelia-0.2.0/Kamaelia/Physics/Simple/__init__.py
- New subsystem
- Just the "Simple", basic set of laws for now.
Kamaelia-0.2.0/Kamaelia/Physics/Simple/MultipleLaws.py
New subsystem
Physics code for forces between particles. Unbonded force acts
between all non bonded particles. Bonded force acts between bonded
particles. Contains the following classes:
- MultipleLaws(typesToLaws, defaultLaw = None):
Laws framework for systems containing multiple particle types
typesToLaws = dictionary mapping particle type name pairs (type1, type2)
to laws if you supply a pairing (t1, t2) it will also be applied to the
case (t2,t1) without you needing to explicitly specify it. If you do,
then your choice takes precedence.
If you do not provide enough mappings to build a complete mapping from
all types to all types, then the gaps will be automatically filled with
mappings to defaultLaw.
Kamaelia-0.2.0/Kamaelia/Physics/Simple/Particle.py
New subsystem
Physics code for forces between particles. Unbonded force acts
between all non bonded particles. Bonded force acts between bonded
particles. Contains the following classes:
- Particle - Particle within a physics system with an arbitrary number
of dimensions.
Represents a particle that interacts with other particles. One set of
forces are applied for those particles that are unbonded. Interactions
between bonded particles are controlled by another set of forces.
Bonds are bi-directional. Establishing a bond from A to B, will also
establish it back from B to A. Similarly, breaking the bond will do so
in both directions too.
Kamaelia-0.2.0/Kamaelia/Physics/Simple/ParticleSystem.py
New subsystem
Contains class:
- ParticleSystem(laws, initialParticles = [], initialTick = 0)
System of particles.
Maintains the set of particles and runs the physics simulation over them
the specified laws.
Kamaelia-0.2.0/Kamaelia/Physics/Simple/SimpleLaws.py
New subsystem
Contains class:
- SimpleLaws(object):
Implements a simple set of physics laws for the particle system.
Repulsion force : force proportional to 1/distance_squared
bonds : force proportional to extension (Hook's law)
All force strengths etc. are set up to vaguely sensible values on the
basis of the specified bond length.
Kamaelia-0.2.0/Kamaelia/Physics/Simple/SpatialIndexer.py
New subsystem
Probably the most generally useful addition to the core of Kamaelia
from the Physics subsytem. Provides a Spatial Indexer class that:
- Allows fast spatial lookups of entities - quickly find all entities
within a given radius of a set of coordinates.
Optimised by specifying the most commonly used proximity distance. This
affects the speed of lookups and the size of the internal data
structure.
Entities must provide a getLoc() method that returns the coordinates as
a tuple.
To first register entities or if they change coordinates, something must
call updateLoc(<entities>). If entities are removed, something
must call remove(<entities>)
Kamaelia-0.2.0/Kamaelia/SingleServer.py
- New component. This essentially can be used in the same manner as
the server mode to "netcat"/"nc". That is it can be used in a pipeline,
anything received from the first connection is
forwarded to the outbox, anything received on the inbox is forwarded to
that connection. It only handles one connection - hence the name "SingleServer"
- Includes a simple example
Kamaelia-0.2.0/Kamaelia/UI/__init__.py
- New subsystem for user interfaces. (Normally graphical user
interfaces)
Kamaelia-0.2.0/Kamaelia/UI/MH/__init__.py
- An experimental pygame based application subsystem
Kamaelia-0.2.0/Kamaelia/UI/MH/DragHandler.py
- Part of an experimental pygame based application handler
subsystem
- Examples 6,7 uses this class indirectly
Kamaelia-0.2.0/Kamaelia/UI/MH/PyGameApp.py
- Base class for Pygame Applications. This component is expected to be
inherited by components.
- Uses the new PygameDisplay service.
- Thus any component using a PyGameApp can be composed onto a shared
display and not worry about how it's sharing the display, and not worry
about whether it's connected to another display component or a sink, or
a socket, etc.
- Used by example 5-8, and many components
Kamaelia-0.2.0/Kamaelia/UI/Pygame/Button.py
- Part of the new Pygame subsystem
- Sits happily inside the PygameDisplay service
- Implements a simple button. When clicked, sends a message to it's
outbox "outbox"
- Example 8 uses this component
Kamaelia-0.2.0/Kamaelia/UI/Pygame/Image.py
Part of the new Pygame subsystem
Sits happily inside the PygameDisplay service
Implements a image display component.
- When it receives a message on its inbox "inbox", it assumes it's a
new filename, loads the image associated with the filename and updates
it's display surface.
Example 8 uses this component
Kamaelia-0.2.0/Kamaelia/UI/Pygame/Multiclick.py
- Like button, but has different behaviours associated with different
mouse buttons. Clicking a different button causes different messages to
be sent. Can also be transparent to overlay other surfaces (this allows
apparently global click handling)
- This is used by a number of example presentation tools
Kamaelia-0.2.0/Kamaelia/UI/Pygame/Ticker.py
- Simple component that implements a simple "ticking" display - this
can be used for display of text for presentations, subtitling (since the
display can be transparent...) and autocue/teleprompter behaviour.
Kamaelia-0.2.0/Kamaelia/UI/PygameDisplay.py
Simple window/surface manager component.
Registers a service called "pygamedisplay", where components may
request a display from.
These displays are then blitted to the display once every tick of the
PygameDisplay component
Currently all events are global, but the pygame display could change
that.
Handles the farming out of pygame events to components as well.
- Events are sent as bundles to try and manage mousemoveevents
sensibly. (Work still needed there though)
Simple tests of bouncing surfaces (tickers, images) round the screeen
whilst the other components are running shows that this can happen
without confusing the components using those displays. (Largely due to
single writer semantics always being preserved)
Conceptually very similar to a TCP Server / primary listen socket vs
connected socket adaptor issue.
Kamaelia-0.2.0/Kamaelia/Util/Chooser.py
- New component
- Chooses items out of a set, as directed by commands sent to its
inbox
Emits the first item at initialisation, then whenever a command is
received it emits another item (unless you're asking it to step beyond
the start or end of the set)
Kamaelia-0.2.0/Kamaelia/Util/Comparator.py
New component
This class was originally written to assist in testing by making it
easy to compare an expected data stream with that from the tested
system. This is the current equality test between the two inputs. It's
been realised however that this can be generalised by making an
overidable compare function to do the real work. This is therefore a
general system for combining two inputs into a single output!
- You override the "combine" method (the default compares a==b, and
returns a boolean, but could be anything - for example summation,
etc)
Kamaelia-0.2.0/Kamaelia/Util/Graphline.py
New component
Provides syntactic sugar for making pipeline type systems trivial,
but in the the form of arbitrary graphs, not just 1D pipes
Example 8 provides the nice example:
CHOOSER = Chooser(items =
files),
IMAGE = Image(size=(800,600), position=(8,48)),
NEXT = Button(caption="Next", msg="NEXT", position=(72,8)),
PREVIOUS = Button(caption="Previous", msg="PREV",position=(8,8)),
FIRST = Button(caption="First", msg="FIRST",position=(256,8)),
LAST = Button(caption="Last", msg="LAST",position=(320,8)),
linkages = {
Kamaelia-0.2.0/Kamaelia/Util/Introspector.py
- New component. Much of the body of this will actually shift into
Axon, but leave this component behind as a proxy.
- "This component introspects the current local topology of an axon
system.
Local? This component examines its scheduler to find components and
postmen. It then examines them to determine their inboxes and outboxes
and the linkages between them.
If this component is not active, then it will see no scheduler and will
report nothing.
The output is a description of the a graph topology, where components
and postboxes are the nodes, and their relationships/linkages form the
links between them. As the shape of the graph changes, this component
relays only the changes.
The output format is a stream of strings, designed to be fed to an
AxonVisualiserServer component.
Kamaelia-0.2.0/Kamaelia/Util/LossyConnector.py
- New component
- This implements a "lossy connector". Currently much of Kamaelia
works on the assumption that when you send to an outbox that there will
always be space. However due to the existance of synchronised linkages,
and maximum pipewidths, this may not actually be the case.
- This component can be used as an intemediary that may drop messages
if there is not space. One example usage of this might be to limit the
amount of data that may be allowed into your inbox, then place the lossy
connector before your input. This might mean that messages are lost, but
in some circumstances this may not be an issue. (eg faking realtime
encoding using a slow encoder)
- If the recipient can receive the data fast enough this component
essentially acts as a pass through.
Kamaelia-0.2.0/Kamaelia/Util/MarshallComponent.py
New component
Basic Marshalling Component
The Basic Marshalling Component is given a simple class. It then expects
to be passed objects of that class, and then performs the following
actions:
- __str__ on an object
- fromString on an object
The idea is that you would place this between your logic and a
network socket, which simply serialises and deserialises objects for
transmission over the wire. The initial data format this is designed to
work with is the MimeDict object.
For simplicity, this component expects to be given an entire object to
marshall/demarshall. This requires the user to deal with framing of
objects. It is expected that there will be a more complex marshaller
that is capable of taking (say) a generator or component as an argument
for the fromString static method.
Since this is a bidirectional component we have the following boxes:
- control - on which we may receive a shutdown message
- signal - one which we will send shutdown messages
- demarshall - an inbox to which you send strings for
demarshalling
- marshall - an inbox to which you send objects for marshalling
- demarshalled - an outbox which spits out demarshalled objects
- marshalled = an outbox which spits out marshalled strings
Kamaelia-0.2.0/Kamaelia/Util/NullSinkComponent.py
- New component
- Conceptually this provides the same device as the NULL device under
windows, and /dev/null under Unix type systems
- Any data received is thrown away - EXCEPT shutdownMicroprocess and
producerFinished messages. If either of these are received on the
"control" inbox, then the component shuts down
Kamaelia-0.2.0/Kamaelia/Util/passThrough.py
- New component
- Simple passthrough component - a more generic version of the echoer
component
- Used during the small test suite for Kamaelia.Util.Pipeline
Kamaelia-0.2.0/Kamaelia/Util/PipelineComponent.py
New component
Provides syntactic sugar for making pipeline type systems
trivial.
A nice example is from example 4, where 2 pipelines are put together
to build a simplistic multicast streaming system as follows:
Server:
Client
Kamaelia-0.2.0/Kamaelia/Util/Splitter.py
- New component
- This component is likely to be replaced by another component with a
similar, but possibly different interface.
- This component allows the data from a single outbox to be sent to
many inboxes. Tis version blocks all data if any of the outboxes have no
space in them (in theory). Other versions could take other approaches
such as dropping messages to those outboxes which are full.
Kamaelia-0.2.0/Kamaelia/Util/TestResultComponent.py
New component
DO NOT USE IN LIVE SYSTEMS. This class is largely intended for use is
system testing and particularly unit testing of other components. In the
case of error or request it is intended to throw an exception stop the
Axon system and jump back to the unit test.
- If this receives a FALSE value on it's inbox, this raises an AssertionError - it only expects true
values.
- If it receives a StopSystem exception on its inbox, it raises a
StopSystemException.
Kamaelia-0.2.0/Kamaelia/Visualisation/__init__.py
- Base directory of the new visualisation/graphics subsystems
Kamaelia-0.2.0/Kamaelia/Visualisation/Axon/__init__.py
- Part of the new visualisation/graphics subsystems
Kamaelia-0.2.0/Kamaelia/Visualisation/Axon/AxonLaws.py
- Part of the new visualisation/graphics subsystems
- Selection of simple physics laws to help modelling how to lay out
different visual elements in when visualising an Axon system using the
physics code. (eg inboxes, outboxes, etc)
Kamaelia-0.2.0/Kamaelia/Visualisation/Axon/AxonVisualiserServer.py
- New component
- Subclasses TopologyViewerServer
- Essentially runs a TopologyViewerServer with a collection of default
rules some specialised particle types and specialised laws for dealing
with laying out those particle types
Kamaelia-0.2.0/Kamaelia/Visualisation/Axon/ExtraWindowFurniture.py
- Part of the new visualisation/graphics subsystems
- Draws some extra window furniture (logos, lines as appropriate) for
the display.
Kamaelia-0.2.0/Kamaelia/Visualisation/Axon/PComponent.py
- Part of the new visualisation/graphics subsystems
- Particle that represents a component in the Axon visualisation
subsystem
Kamaelia-0.2.0/Kamaelia/Visualisation/Axon/PPostbox.py
- Part of the new visualisation/graphics subsystems
- Particle that represents an inbox/oubox (POSTBOX) in the Axon
visualisation subsystem
Kamaelia-0.2.0/Kamaelia/Visualisation/PhysicsGraph/__init__.py
- Part of the new visualisation/graphics subsystems
Kamaelia-0.2.0/Kamaelia/Visualisation/PhysicsGraph/chunks_to_lines.py
- New Component, related to providing a convenient interface to the
topology subsystem
- Expects to receive non-line aligned data in chunks on its inbox
"inbox" and spits out whole lines on its outbox "outbox".
Kamaelia-0.2.0/Kamaelia/Visualisation/PhysicsGraph/lines_to_tokenlists.py
New component - related to provide a convenient interface to the
topology subststem.
Takes in lines and outputs a list of tokens on each line.
Tokens are separated by white space.
Tokens can be encapsulated with single or double quote marks, allowing
you to include white space. If you do this, backslashs should be used to
escape a quote mark that you want to include within the token. Represent
backslash with a double backslash.
Example:
Kamaelia-0.2.0/Kamaelia/Visualisation/PhysicsGraph/GridRenderer.py
- Part of the new visualisation/graphics subsystems
- Simple grid drawing class facility. (used by the topology
viewer)
Kamaelia-0.2.0/Kamaelia/Visualisation/PhysicsGraph/ParticleDragger.py
- Part of the new visualisation/graphics subsystems
- Implements dragging of particles.
Kamaelia-0.2.0/Kamaelia/Visualisation/PhysicsGraph/RenderingParticle.py
- Part of the new visualisation/graphics subsystems
- Version of Physics.Particle with added rendering functions. (Used to
make a system visible, not just simulated)
Kamaelia-0.2.0/Kamaelia/Visualisation/PhysicsGraph/TopologyViewerComponent.py
- Part of the new visualisation/graphics subsystems
- Generic Topology Viewer Component
Displays a topology in a pygame application. It can be interacted with
by dragging nodes with the mouse.
Receives command tuples on its inbox. See handleCommunication() for
command syntax.
Outputs diagnostic and error messages on its outbox
See keyDownHandler() for keyboard controls.
Kamaelia-0.2.0/Kamaelia/Visualisation/PhysicsGraph/TopologyViewerServer.py
- New component, Part of the new visualisation/graphics
subsystems
- Builds a simple pipeline allowing the TopologyViewerComponent to
take commands from a network connection and then update the display
accordingly. This can be customised with new laws, particles etc, but
can be used in it's basic form as a simple self laying out graph
visualistaion tool.
Kamaelia-0.2.0/Kamaelia/vorbisDecodeComponent.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
Kamaelia-0.2.0/PKG-INFO
- Automagically bumped by change to setup.py
Kamaelia-0.2.0/setup.py
Added packages:
- Kamaelia.Internet.Simulate
- Kamaelia.UI
- Kamaelia.UI.MH
- Kamaelia.UI.Pygame
- Kamaelia.Physics
- Kamaelia.Physics.Simple
- Kamaelia.Visualisation
- Kamaelia.Visualisation.Axon
- Kamaelia.Visualisation.PhysicsGraph
Kamaelia-0.2.0/Tools/axonshell.py
New tool. Implements a simple command line shell which allows
experimentation with Axon systems - the shell runs a scheduler in the
background. For a tutorial of use, see:
Kamaelia-0.2.0/Tools/AxonVisualiser.py
- New Tool. Implements a simple tool for looking inside (quite
literally) running Axon/Kamaelia systems. This allows a very different
style of debugging and can be extremely useful. Tutorial on its
way!
UPDATED AND
CHANGED
Kamaelia-0.2.0/Kamaelia/Util/ToStringComponent.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
Kamaelia-0.2.0/Kamaelia/Util/ConsoleEcho.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
- Change to the way objects can be sent to the console. Specifically
the change is to allow the use of the __repr__ method of objects instead
of the __str__ method - by calling repr() and str() respectively
Kamaelia-0.2.0/Kamaelia/Util/Chargen.py
- Copyright notice added (ie grants permissions not otherwise
available)
Kamaelia-0.2.0/Kamaelia/test/SynchronousLinks_SystemTest.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
Kamaelia-0.2.0/Kamaelia/SimpleServerComponent.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
- Variety of small changes relating to shutdown messages
Kamaelia-0.2.0/Kamaelia/Protocol/AudioCookieProtocol.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
Kamaelia-0.2.0/Kamaelia/Protocol/EchoProtocolComponent.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
Kamaelia-0.2.0/Kamaelia/Protocol/FortuneCookieProtocol.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
- Additional comments
Kamaelia-0.2.0/Kamaelia/Protocol/HTTPServer.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
- NB: this is incomplete and a work in progress (may change
completely)
Kamaelia-0.2.0/Kamaelia/ReadFileAdaptor.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
Kamaelia-0.2.0/Kamaelia/SampleTemplateComponent.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
Kamaelia-0.2.0/Kamaelia/MimeRequestComponent.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
Kamaelia-0.2.0/Kamaelia/Internet/test/test_BasicMulticastSystem.py
- Minor change wrt use of the scheduler
Kamaelia-0.2.0/Kamaelia/__init__.py
Kamaelia-0.2.0/Kamaelia/Internet/ConnectedSocketAdapter.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
- When the connection dies, for any reason, send a shutdownCSA message
to the signal outbox, rather than a socketShutdown
message
Kamaelia-0.2.0/Kamaelia/Internet/Multicast_receiver.py
Change from using self.__super to using super(klass, self) ... on the
advice of Michele Simionato
- This class will probably change in the next release to being a
factory rather than a class, providing Multicast_transceiver with some
default arguments.
Kamaelia-0.2.0/Kamaelia/Internet/Multicast_sender.py
Change from using self.__super to using super(klass, self) ... on the
advice of Michele Simionato
- This class will probably change in the next release to being a
factory rather than a class, providing Multicast_transceiver with some
default arguments.
Kamaelia-0.2.0/Kamaelia/Internet/Multicast_transceiver.py
Change from using self.__super to using super(klass, self) ... on the
advice of Michele Simionato
Better handling when our sending fails first time round.
- Code is written on the assumption of send failure, not on the
assumption of success
Kamaelia-0.2.0/Kamaelia/Internet/Selector.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
- wireOutComponent rewritten. This removes any lookup table entries,
unwires the component, and deletes any special in/outboxes created.
- Small bugfix related to wiring in components using the service
Kamaelia-0.2.0/Kamaelia/Internet/TCPClient.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
Kamaelia-0.2.0/Kamaelia/Internet/TCPServer.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
- When shutting down, tell the selector that we're shutting down
- When shutting down, any protocol handlers that we're shutting
down
- Linkage changes - signal has been split into _selectorSignal and
protocolHandlerSignal
Kamaelia-0.2.0/Examples/example4/README
- A note, essentially recommending installing ctypes on systems
running Linux.
Kamaelia-0.2.0/Examples/example1/FortuneCookie_ServerClient.py
- Changed to use the new pipeline syntactic sugar
Kamaelia-0.2.0/Examples/example1/README
Kamaelia-0.2.0/Examples/example2/README
Kamaelia-0.2.0/Examples/example2/SimpleStreamingSystem.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
- Change from using a wrapper component for testing to using
standalone components and the new pipeline syntactic sugar
Kamaelia-0.2.0/Examples/example3/README
- Updated comment regarding the recommendation to using Axon 1.1.1,
this makes the system much more self friendly - since the scheduler
provides hints to the OS essentially saying "you can interrupt now if
you like"
Kamaelia-0.2.0/Examples/example3/SimpleStreamer.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
- Change from using a wrapper component for testing to using simple
standalone components
Kamaelia-0.2.0/Examples/example3/SimpleStreamingClient.py
- Change from using a wrapper component for testing to using
standalone components and the new pipeline syntactic sugar
Kamaelia-0.2.0/Examples/example4/MulticastStreamingClient.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
Kamaelia-0.2.0/Examples/example4/MulticastStreamingSystem.py
- Change from using self.__super to using super(klass, self) ... on
the advice of Michele Simionato
- Change from using a wrapper component for testing to using multiple
simple pipelines (syntactic sugar)
Kamaelia-0.2.0/Docs/index.html
- Minor changes caused by changes to packaging