command_system: The command system providing scalable, clean and convenient architecture
in combination with declarative way of defining commands and a fair
amount of automatization for routine processes.
command_system.dispatcher: Backbone of the command system. Provides smart and controllable
dispatching mechanism with an auto-discovery functionality. In addition
to automatic discovery and dispatching, also features manual control
over the process.
command_system.framework: Provides a tiny framework with simple, yet powerful and extensible
architecture to implement commands in a streight and flexible,
declarative way.
command_system.implementation: The implementation and auxilary systems which implement the standard
Gajim commands and also provide an infrastructure for adding custom
commands.
command_system.implementation.custom: This module contains examples of how to create your own commands, by
creating a new command container, bounded to a specific command host,
and definding a set of commands inside of it.
command_system.implementation.execute: Provides facilities to safely execute expressions inside a shell process
and capture the resulting output, in an asynchronous fashion, avoiding
deadlocks. If the process execution time reaches the threshold - it is
forced to terminate. Consists of a tiny framework and a couple of
commands as a frontend.
command_system.implementation.hosts: The module defines a set of command hosts, which are bound to a
different command processors, which are the source of commands.
command_system.implementation.middleware: Provides a glue to tie command system framework and the actual code
where it would be dropped in. Defines a little bit of scaffolding to
support interaction between the two and a few utility methods so you
don't need to dig up the code itself to write basic commands.
common.atom: Atom (rfc 4287) feed parser, used to read data from atom-over-pubsub transports
and services. Very simple. Actually implements only atom:entry. Implement more features
if you need
common.caps_cache: Module containing all XEP-115 (Entity Capabilities) related classes
common.xmpp: Gajim maintains a fork of the xmpppy jabber python library. Most of the code is
inherited but has been extended by implementation of non-blocking transports
and new features like BOSH.
common.xmpp.auth_nb: Provides plugs for SASL and NON-SASL authentication mechanisms.
Can be used both for client and transport authentication
common.xmpp.client_nb: Client class establishs connection to XMPP Server and handles authentication
common.xmpp.dispatcher_nb: Main xmpp decision making logic. Provides library with methods to assign
different handlers to different XMPP stanzas and namespaces
common.xmpp.features_nb: Different stuff that wasn't worth separating it into modules
(Registration, Privacy Lists, ...)
common.xmpp.idlequeue: Idlequeues are Gajim's network heartbeat. Transports can be plugged as idle
objects and be informed about possible IO
common.xmpp.plugin: Provides PlugIn class functionality to develop extentions for xmpppy
common.xmpp.protocol: Protocol module contains tools that are needed for processing of xmpp-related
data structures, including jabber-objects like JID or different stanzas and
sub- stanzas) handling routines
common.xmpp.proxy_connectors: Module containing classes for proxy connecting. So far its HTTP CONNECT and
SOCKS5 proxy
common.xmpp.roster_nb: Simple roster implementation. Can be used though for different tasks like
mass-renaming of contacts.
common.xmpp.simplexml: Simplexml module provides xmpppy library with all needed tools to handle XML
nodes and XML streams. I'm personally using it in many other separate
projects. It is designed to be as standalone as possible
common.xmpp.transports_nb: Transports are objects responsible for connecting to XMPP server and putting
data to wrapped sockets in in desired form (SSL, TLS, TCP, for HTTP proxy,
for SOCKS5 proxy...)
dataforms_widget: This module contains widget that can display data form (JEP-0004).
Words single and multiple refers here to types of data forms:
single means these with one record of data (without <reported/> element),
multiple - these which may contain more data (with <reported/> element).
lib.gajim_mocks: Module with dummy classes for Gajim specific unit testing
lib.mock: Mock object library for Python. Mock objects can be used when unit testing
to remove a dependency on another production class. They are typically used
when the dependency would either pull in lots of other classes, or
significantly slow down the execution of the test.
They are also used to create exceptional conditions that cannot otherwise
be easily triggered in the class under test.