Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter@sugarlabs.org>2013-05-22 18:52:20 (GMT)
committer Walter Bender <walter@sugarlabs.org>2013-05-22 18:52:20 (GMT)
commit6b3d47503f294128cb3289f4472669110afd4293 (patch)
treeb1aac937ef6ea448201ebd39179837c65611bc63
parent237eae4e5ff586b9d3b87899520e2ba6bb71fb66 (diff)
pep8 and pyflakes cleanup
-rw-r--r--collaboration/activity.py130
-rw-r--r--collaboration/connection_watcher.py14
-rw-r--r--collaboration/connectionmanager.py17
-rwxr-xr-xcollaboration/neighborhood.py227
-rw-r--r--collaboration/presenceservice.py36
-rw-r--r--collaboration/telepathyclient.py19
-rw-r--r--collaboration/tubeconn.py12
-rw-r--r--collaboration/xocolor.py365
8 files changed, 417 insertions, 403 deletions
diff --git a/collaboration/activity.py b/collaboration/activity.py
index bd58e92..2061c70 100644
--- a/collaboration/activity.py
+++ b/collaboration/activity.py
@@ -28,16 +28,16 @@ import dbus
from dbus import PROPERTIES_IFACE
import gobject
from telepathy.client import Channel
-from telepathy.interfaces import CHANNEL, \
- CHANNEL_INTERFACE_GROUP, \
- CHANNEL_TYPE_TUBES, \
- CHANNEL_TYPE_TEXT, \
- CONNECTION, \
- PROPERTIES_INTERFACE
-from telepathy.constants import CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES, \
- HANDLE_TYPE_ROOM, \
- HANDLE_TYPE_CONTACT, \
- PROPERTY_FLAG_WRITE
+from telepathy.interfaces import (CHANNEL,
+ CHANNEL_INTERFACE_GROUP,
+ CHANNEL_TYPE_TUBES,
+ CHANNEL_TYPE_TEXT,
+ CONNECTION,
+ PROPERTIES_INTERFACE)
+from telepathy.constants import (CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES,
+ HANDLE_TYPE_ROOM,
+ HANDLE_TYPE_CONTACT,
+ PROPERTY_FLAG_WRITE)
CONN_INTERFACE_ACTIVITY_PROPERTIES = 'org.laptop.Telepathy.ActivityProperties'
@@ -61,13 +61,13 @@ class Activity(gobject.GObject):
"""
__gsignals__ = {
'buddy-joined': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([gobject.TYPE_PYOBJECT])),
+ ([gobject.TYPE_PYOBJECT])),
'buddy-left': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([gobject.TYPE_PYOBJECT])),
+ ([gobject.TYPE_PYOBJECT])),
'new-channel': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([gobject.TYPE_PYOBJECT])),
+ ([gobject.TYPE_PYOBJECT])),
'joined': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT])),
+ ([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT])),
}
__gproperties__ = {
@@ -116,26 +116,25 @@ class Activity(gobject.GObject):
def _start_tracking_properties(self):
bus = dbus.SessionBus()
self._get_properties_call = bus.call_async(
- self.telepathy_conn.requested_bus_name,
- self.telepathy_conn.object_path,
- CONN_INTERFACE_ACTIVITY_PROPERTIES,
- 'GetProperties',
- 'u',
- (self.room_handle,),
- reply_handler=self.__got_properties_cb,
- error_handler=self.__error_handler_cb,
- utf8_strings=True)
+ self.telepathy_conn.requested_bus_name,
+ self.telepathy_conn.object_path,
+ CONN_INTERFACE_ACTIVITY_PROPERTIES,
+ 'GetProperties',
+ 'u',
+ (self.room_handle,),
+ reply_handler=self.__got_properties_cb,
+ error_handler=self.__error_handler_cb,
+ utf8_strings=True)
# As only one Activity instance is needed per activity process,
# we can afford listening to ActivityPropertiesChanged like this.
self.telepathy_conn.connect_to_signal(
- 'ActivityPropertiesChanged',
- self.__activity_properties_changed_cb,
- dbus_interface=CONN_INTERFACE_ACTIVITY_PROPERTIES)
+ 'ActivityPropertiesChanged',
+ self.__activity_properties_changed_cb,
+ dbus_interface=CONN_INTERFACE_ACTIVITY_PROPERTIES)
def __activity_properties_changed_cb(self, room_handle, properties):
- print('%r: Activity properties changed to %r', self,
- properties)
+ print('%r: Activity properties changed to %r', self, properties)
self._update_properties(properties)
def __got_properties_cb(self, properties):
@@ -184,7 +183,7 @@ class Activity(gobject.GObject):
if self._get_properties_call is not None:
print('%r: Blocking on GetProperties() because someone '
- 'wants property %s', self, pspec.name)
+ 'wants property %s', self, pspec.name)
self._get_properties_call.block()
if pspec.name == 'id':
@@ -253,10 +252,12 @@ class Activity(gobject.GObject):
if not self._joined:
raise RuntimeError('Cannot invite a buddy to an activity that is'
'not shared.')
- self.telepathy_text_chan.AddMembers([buddy.contact_handle], message,
- dbus_interface=CHANNEL_INTERFACE_GROUP,
- reply_handler=partial(self.__invite_cb, response_cb),
- error_handler=partial(self.__invite_cb, response_cb))
+ self.telepathy_text_chan.AddMembers(
+ [buddy.contact_handle],
+ message,
+ dbus_interface=CHANNEL_INTERFACE_GROUP,
+ reply_handler=partial(self.__invite_cb, response_cb),
+ error_handler=partial(self.__invite_cb, response_cb))
def __invite_cb(self, response_cb, error=None):
response_cb(error)
@@ -290,7 +291,7 @@ class Activity(gobject.GObject):
def __get_all_members_cb(self, members, local_pending, remote_pending):
print('__get_all_members_cb %r %r', members,
- self._text_channel_group_flags)
+ self._text_channel_group_flags)
if self._channel_self_handle in members:
members.remove(self._channel_self_handle)
@@ -301,7 +302,9 @@ class Activity(gobject.GObject):
def _resolve_handles(self, input_handles, reply_cb):
def get_handle_owners_cb(handles):
- self.telepathy_conn.InspectHandles(HANDLE_TYPE_CONTACT, handles,
+ self.telepathy_conn.InspectHandles(
+ HANDLE_TYPE_CONTACT,
+ handles,
reply_handler=reply_cb,
error_handler=self.__error_handler_cb,
dbus_interface=CONNECTION)
@@ -328,8 +331,8 @@ class Activity(gobject.GObject):
local_pending, remote_pending,
actor, reason):
print('__text_channel_members_changed_cb %r',
- [added, message, added, removed, local_pending,
- remote_pending, actor, reason])
+ [added, message, added, removed, local_pending,
+ remote_pending, actor, reason])
if self._channel_self_handle in added:
added.remove(self._channel_self_handle)
if added:
@@ -402,7 +405,7 @@ class Activity(gobject.GObject):
self.telepathy_tubes_chan = share_command.tubes_channel
self._channel_self_handle = share_command.channel_self_handle
self._text_channel_group_flags = \
- share_command.text_channel_group_flags
+ share_command.text_channel_group_flags
self._publish_properties()
self._start_tracking_properties()
self._start_tracking_buddies()
@@ -426,9 +429,9 @@ class Activity(gobject.GObject):
properties['private'] = self._private
self.telepathy_conn.SetProperties(
- self.room_handle,
- properties,
- dbus_interface=CONN_INTERFACE_ACTIVITY_PROPERTIES)
+ self.room_handle,
+ properties,
+ dbus_interface=CONN_INTERFACE_ACTIVITY_PROPERTIES)
def __share_error_cb(self, share_activity_error_cb, error):
logging.debug('%r: Share failed because: %s', self, error)
@@ -453,7 +456,7 @@ class Activity(gobject.GObject):
self.telepathy_tubes_chan.object_path]
print('%r: bus name is %s, connection is %s, channels are %r',
- self, bus_name, connection_path, channels)
+ self, bus_name, connection_path, channels)
return bus_name, connection_path, channels
# Leaving
@@ -550,7 +553,9 @@ class _JoinCommand(_BaseCommand):
def run(self):
if self._finished:
raise RuntimeError('This command has already finished')
- self._connection.Get(CONNECTION, 'SelfHandle',
+ self._connection.Get(
+ CONNECTION,
+ 'SelfHandle',
reply_handler=self.__get_self_handle_cb,
error_handler=self.__error_handler_cb,
dbus_interface=PROPERTIES_IFACE)
@@ -558,14 +563,18 @@ class _JoinCommand(_BaseCommand):
def __get_self_handle_cb(self, handle):
self._global_self_handle = handle
- self._connection.RequestChannel(CHANNEL_TYPE_TEXT,
- HANDLE_TYPE_ROOM, self.room_handle, True,
+ self._connection.RequestChannel(
+ CHANNEL_TYPE_TEXT,
+ HANDLE_TYPE_ROOM,
+ self.room_handle, True,
reply_handler=self.__create_text_channel_cb,
error_handler=self.__error_handler_cb,
dbus_interface=CONNECTION)
- self._connection.RequestChannel(CHANNEL_TYPE_TUBES,
- HANDLE_TYPE_ROOM, self.room_handle, True,
+ self._connection.RequestChannel(
+ CHANNEL_TYPE_TUBES,
+ HANDLE_TYPE_ROOM,
+ self.room_handle, True,
reply_handler=self.__create_tubes_channel_cb,
error_handler=self.__error_handler_cb,
dbus_interface=CONNECTION)
@@ -575,8 +584,9 @@ class _JoinCommand(_BaseCommand):
ready_handler=self.__text_channel_ready_cb)
def __create_tubes_channel_cb(self, channel_path):
- print "Creating tubes channel with bus name %s" % self._connection.requested_bus_name
- print "Creating tubes channel with channel path %s" % channel_path
+ print("Creating tubes channel with bus name %s" %
+ (self._connection.requested_bus_name))
+ print("Creating tubes channel with channel path %s" % (channel_path))
Channel(self._connection.requested_bus_name, channel_path,
ready_handler=self.__tubes_channel_ready_cb)
@@ -596,7 +606,7 @@ class _JoinCommand(_BaseCommand):
def _tubes_ready(self):
if self.text_channel is None or \
- self.tubes_channel is None:
+ self.tubes_channel is None:
return
print('%r: finished setting up tubes', self)
@@ -605,7 +615,7 @@ class _JoinCommand(_BaseCommand):
def __text_channel_group_flags_changed_cb(self, added, removed):
print('__text_channel_group_flags_changed_cb %r %r', added,
- removed)
+ removed)
self.text_channel_group_flags |= added
self.text_channel_group_flags &= ~removed
@@ -617,8 +627,8 @@ class _JoinCommand(_BaseCommand):
def got_all_members(members, local_pending, remote_pending):
print('got_all_members members %r local_pending %r '
- 'remote_pending %r', members, local_pending,
- remote_pending)
+ 'remote_pending %r', members, local_pending,
+ remote_pending)
if self.text_channel_group_flags & \
CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES:
@@ -628,10 +638,12 @@ class _JoinCommand(_BaseCommand):
if self_handle in local_pending:
print('%r: We are in local pending - entering', self)
- group.AddMembers([self_handle], '',
+ group.AddMembers(
+ [self_handle],
+ '',
reply_handler=lambda: None,
- error_handler=lambda e: self._join_failed_cb(e,
- 'got_all_members AddMembers'))
+ error_handler=lambda e:
+ self._join_failed_cb(e, 'got_all_members AddMembers'))
if members:
self.__text_channel_members_changed_cb('', members, (),
@@ -662,9 +674,9 @@ class _JoinCommand(_BaseCommand):
local_pending, remote_pending,
actor, reason):
print('__text_channel_members_changed_cb added %r removed %r '
- 'local_pending %r remote_pending %r channel_self_handle '
- '%r', added, removed, local_pending, remote_pending,
- self.channel_self_handle)
+ 'local_pending %r remote_pending %r channel_self_handle '
+ '%r', added, removed, local_pending, remote_pending,
+ self.channel_self_handle)
if self.text_channel_group_flags & \
CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES:
diff --git a/collaboration/connection_watcher.py b/collaboration/connection_watcher.py
index 96af1cf..1ef503a 100644
--- a/collaboration/connection_watcher.py
+++ b/collaboration/connection_watcher.py
@@ -25,8 +25,8 @@ import gobject
from telepathy.client import Connection
from telepathy.interfaces import CONN_INTERFACE
-from telepathy.constants import CONNECTION_STATUS_CONNECTED, \
- CONNECTION_STATUS_DISCONNECTED
+from telepathy.constants import (CONNECTION_STATUS_CONNECTED,
+ CONNECTION_STATUS_DISCONNECTED)
_instance = None
@@ -35,9 +35,9 @@ _instance = None
class ConnectionWatcher(gobject.GObject):
__gsignals__ = {
'connection-added': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([gobject.TYPE_PYOBJECT])),
+ ([gobject.TYPE_PYOBJECT])),
'connection-removed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([gobject.TYPE_PYOBJECT])),
+ ([gobject.TYPE_PYOBJECT])),
}
def __init__(self, bus=None):
@@ -51,8 +51,10 @@ class ConnectionWatcher(gobject.GObject):
# D-Bus path -> Connection
self._connections = {}
- self.bus.add_signal_receiver(self._status_changed_cb,
- dbus_interface=CONN_INTERFACE, signal_name='StatusChanged',
+ self.bus.add_signal_receiver(
+ self._status_changed_cb,
+ dbus_interface=CONN_INTERFACE,
+ signal_name='StatusChanged',
path_keyword='path')
for conn in Connection.get_connections(bus):
diff --git a/collaboration/connectionmanager.py b/collaboration/connectionmanager.py
index 5ae59dd..1549d41 100644
--- a/collaboration/connectionmanager.py
+++ b/collaboration/connectionmanager.py
@@ -23,8 +23,7 @@ from functools import partial
import dbus
from dbus import PROPERTIES_IFACE
-from telepathy.interfaces import ACCOUNT, \
- ACCOUNT_MANAGER
+from telepathy.interfaces import (ACCOUNT, ACCOUNT_MANAGER)
from telepathy.constants import CONNECTION_STATUS_CONNECTED
ACCOUNT_MANAGER_SERVICE = 'org.freedesktop.Telepathy.AccountManager'
@@ -51,8 +50,9 @@ class ConnectionManager(object):
dbus_interface=PROPERTIES_IFACE)
for account_path in account_paths:
obj = bus.get_object(ACCOUNT_MANAGER_SERVICE, account_path)
- obj.connect_to_signal('AccountPropertyChanged',
- partial(self.__account_property_changed_cb, account_path))
+ obj.connect_to_signal(
+ 'AccountPropertyChanged',
+ partial(self.__account_property_changed_cb, account_path))
connection_path = obj.Get(ACCOUNT, 'Connection')
if connection_path != '/':
try:
@@ -73,10 +73,11 @@ class ConnectionManager(object):
connection_name = connection_path.replace('/', '.')[1:]
bus = dbus.SessionBus()
connection = bus.get_object(connection_name, connection_path)
- connection.connect_to_signal('StatusChanged',
- partial(self.__status_changed_cb, account_path))
+ connection.connect_to_signal(
+ 'StatusChanged',
+ partial(self.__status_changed_cb, account_path))
self._connections_per_account[account_path] = \
- Connection(account_path, connection)
+ Connection(account_path, connection)
account = bus.get_object(ACCOUNT_MANAGER_SERVICE, account_path)
status = account.Get(ACCOUNT, 'ConnectionStatus')
@@ -115,6 +116,8 @@ class ConnectionManager(object):
_connection_manager = None
+
+
def get_connection_manager():
global _connection_manager
if not _connection_manager:
diff --git a/collaboration/neighborhood.py b/collaboration/neighborhood.py
index 192b66f..8d85de2 100755
--- a/collaboration/neighborhood.py
+++ b/collaboration/neighborhood.py
@@ -18,31 +18,29 @@
# Boston, MA 02111-1307, USA.
from functools import partial
-from hashlib import sha1
-import traceback
import gobject
import gconf
import dbus
from dbus import PROPERTIES_IFACE
-from telepathy.interfaces import ACCOUNT, \
- ACCOUNT_MANAGER, \
- CHANNEL, \
- CHANNEL_INTERFACE_GROUP, \
- CHANNEL_TYPE_CONTACT_LIST, \
- CHANNEL_TYPE_FILE_TRANSFER, \
- CLIENT, \
- CONNECTION, \
- CONNECTION_INTERFACE_ALIASING, \
- CONNECTION_INTERFACE_CONTACTS, \
- CONNECTION_INTERFACE_CONTACT_CAPABILITIES, \
- CONNECTION_INTERFACE_REQUESTS, \
- CONNECTION_INTERFACE_SIMPLE_PRESENCE
-from telepathy.constants import HANDLE_TYPE_CONTACT, \
- HANDLE_TYPE_LIST, \
- CONNECTION_PRESENCE_TYPE_OFFLINE, \
- CONNECTION_STATUS_CONNECTED, \
- CONNECTION_STATUS_DISCONNECTED
+from telepathy.interfaces import (ACCOUNT,
+ ACCOUNT_MANAGER,
+ CHANNEL,
+ CHANNEL_INTERFACE_GROUP,
+ CHANNEL_TYPE_CONTACT_LIST,
+ CHANNEL_TYPE_FILE_TRANSFER,
+ CLIENT,
+ CONNECTION,
+ CONNECTION_INTERFACE_ALIASING,
+ CONNECTION_INTERFACE_CONTACTS,
+ CONNECTION_INTERFACE_CONTACT_CAPABILITIES,
+ CONNECTION_INTERFACE_REQUESTS,
+ CONNECTION_INTERFACE_SIMPLE_PRESENCE)
+from telepathy.constants import (HANDLE_TYPE_CONTACT,
+ HANDLE_TYPE_LIST,
+ CONNECTION_PRESENCE_TYPE_OFFLINE,
+ CONNECTION_STATUS_CONNECTED,
+ CONNECTION_STATUS_DISCONNECTED)
from telepathy.client import Connection, Channel
from buddy import get_owner_instance
@@ -50,13 +48,6 @@ from buddy import BuddyModel
from xocolor import XoColor
-import activity
-
-from connectionmanager import get_connection_manager
-
-import signal, os, sys
-from activity import Activity
-
ACCOUNT_MANAGER_SERVICE = 'org.freedesktop.Telepathy.AccountManager'
ACCOUNT_MANAGER_PATH = '/org/freedesktop/Telepathy/AccountManager'
CHANNEL_DISPATCHER_SERVICE = 'org.freedesktop.Telepathy.ChannelDispatcher'
@@ -66,7 +57,7 @@ SUGAR_CLIENT_PATH = '/org/freedesktop/Telepathy/Client/Sugar'
CONNECTION_INTERFACE_BUDDY_INFO = 'org.laptop.Telepathy.BuddyInfo'
CONNECTION_INTERFACE_ACTIVITY_PROPERTIES = \
- 'org.laptop.Telepathy.ActivityProperties'
+ 'org.laptop.Telepathy.ActivityProperties'
_QUERY_DBUS_TIMEOUT = 200
"""
@@ -269,11 +260,12 @@ class _Account(gobject.GObject):
connection.connect_to_signal('StatusChanged',
self.__status_changed_cb)
- connection[PROPERTIES_IFACE].Get(CONNECTION,
- 'Status',
- reply_handler=self.__get_status_cb,
- error_handler=partial(self.__error_handler_cb,
- 'Connection.GetStatus'))
+ connection[PROPERTIES_IFACE].Get(
+ CONNECTION,
+ 'Status',
+ reply_handler=self.__get_status_cb,
+ error_handler=partial(self.__error_handler_cb,
+ 'Connection.GetStatus'))
def __get_status_cb(self, status):
#print('_Account.__get_status_cb %r %r',
@@ -286,11 +278,12 @@ class _Account(gobject.GObject):
def _update_status(self, status):
if status == CONNECTION_STATUS_CONNECTED:
- self._connection[PROPERTIES_IFACE].Get(CONNECTION,
- 'SelfHandle',
- reply_handler=self.__get_self_handle_cb,
- error_handler=partial(self.__error_handler_cb,
- 'Connection.GetSelfHandle'))
+ self._connection[PROPERTIES_IFACE].Get(
+ CONNECTION,
+ 'SelfHandle',
+ reply_handler=self.__get_self_handle_cb,
+ error_handler=partial(self.__error_handler_cb,
+ 'Connection.GetSelfHandle'))
self.emit('connected')
else:
for contact_handle, contact_id in self._buddy_handles.items():
@@ -318,8 +311,8 @@ class _Account(gobject.GObject):
connection = self._connection[interface]
client_name = CLIENT + '.Sugar.FileTransfer'
file_transfer_channel_class = {
- CHANNEL + '.ChannelType': CHANNEL_TYPE_FILE_TRANSFER,
- CHANNEL + '.TargetHandleType': HANDLE_TYPE_CONTACT}
+ CHANNEL + '.ChannelType': CHANNEL_TYPE_FILE_TRANSFER,
+ CHANNEL + '.TargetHandleType': HANDLE_TYPE_CONTACT}
capabilities = []
connection.UpdateCapabilities(
[(client_name, [file_transfer_channel_class], capabilities)],
@@ -353,34 +346,35 @@ class _Account(gobject.GObject):
if CONNECTION_INTERFACE_ACTIVITY_PROPERTIES in self._connection:
connection = self._connection[
- CONNECTION_INTERFACE_ACTIVITY_PROPERTIES]
+ CONNECTION_INTERFACE_ACTIVITY_PROPERTIES]
connection.connect_to_signal(
- 'ActivityPropertiesChanged',
- self.__activity_properties_changed_cb)
+ 'ActivityPropertiesChanged',
+ self.__activity_properties_changed_cb)
else:
print('Connection %s does not support OLPC activity '
'properties', self._connection.object_path)
pass
properties = {
- CHANNEL + '.ChannelType': CHANNEL_TYPE_CONTACT_LIST,
- CHANNEL + '.TargetHandleType': HANDLE_TYPE_LIST,
- CHANNEL + '.TargetID': 'subscribe',
- }
+ CHANNEL + '.ChannelType': CHANNEL_TYPE_CONTACT_LIST,
+ CHANNEL + '.TargetHandleType': HANDLE_TYPE_LIST,
+ CHANNEL + '.TargetID': 'subscribe', }
properties = dbus.Dictionary(properties, signature='sv')
connection = self._connection[CONNECTION_INTERFACE_REQUESTS]
is_ours, channel_path, properties = \
- connection.EnsureChannel(properties)
+ connection.EnsureChannel(properties)
channel = Channel(self._connection.service_name, channel_path)
channel[CHANNEL_INTERFACE_GROUP].connect_to_signal(
- 'MembersChanged', self.__members_changed_cb)
+ 'MembersChanged',
+ self.__members_changed_cb)
- channel[PROPERTIES_IFACE].Get(CHANNEL_INTERFACE_GROUP,
- 'Members',
- reply_handler=self.__get_members_ready_cb,
- error_handler=partial(self.__error_handler_cb,
- 'Connection.GetMembers'))
+ channel[PROPERTIES_IFACE].Get(
+ CHANNEL_INTERFACE_GROUP,
+ 'Members',
+ reply_handler=self.__get_members_ready_cb,
+ error_handler=partial(self.__error_handler_cb,
+ 'Connection.GetMembers'))
def __update_capabilities_cb(self):
pass
@@ -443,12 +437,13 @@ class _Account(gobject.GObject):
self.emit('activity-added', room_handle, activity_id)
connection = self._connection[
- CONNECTION_INTERFACE_ACTIVITY_PROPERTIES]
- connection.GetProperties(room_handle,
- reply_handler=partial(self.__get_properties_cb,
- room_handle),
- error_handler=partial(self.__error_handler_cb,
- 'ActivityProperties.GetProperties'))
+ CONNECTION_INTERFACE_ACTIVITY_PROPERTIES]
+ connection.GetProperties(
+ room_handle,
+ reply_handler=partial(self.__get_properties_cb,
+ room_handle),
+ error_handler=partial(self.__error_handler_cb,
+ 'ActivityProperties.GetProperties'))
# Sometimes we'll get CurrentActivityChanged before we get to
# know about the activity so we miss the event. In that case,
@@ -472,7 +467,7 @@ class _Account(gobject.GObject):
activity_id)
current_activity_ids = \
- [activity_id for activity_id, room_handle in activities]
+ [activity_id for activity_id, room_handle in activities]
for activity_id in self._activities_per_buddy[buddy_handle].copy():
if not activity_id in current_activity_ids:
self._remove_buddy_from_activity(buddy_handle, activity_id)
@@ -543,10 +538,10 @@ class _Account(gobject.GObject):
#print('_Account._add_buddy_handles %r', handles)
interfaces = [CONNECTION, CONNECTION_INTERFACE_ALIASING]
self._connection[CONNECTION_INTERFACE_CONTACTS].GetContactAttributes(
- handles, interfaces, False,
- reply_handler=self.__get_contact_attributes_cb,
- error_handler=partial(self.__error_handler_cb,
- 'Contacts.GetContactAttributes'))
+ handles, interfaces, False,
+ reply_handler=self.__get_contact_attributes_cb,
+ error_handler=partial(self.__error_handler_cb,
+ 'Contacts.GetContactAttributes'))
def __got_buddy_info_cb(self, handle, nick, properties):
#print('_Account.__got_buddy_info_cb %r', handle)
@@ -574,7 +569,7 @@ class _Account(gobject.GObject):
if CONNECTION_INTERFACE_BUDDY_INFO in self._connection:
connection = \
- self._connection[CONNECTION_INTERFACE_BUDDY_INFO]
+ self._connection[CONNECTION_INTERFACE_BUDDY_INFO]
connection.GetProperties(
handle,
@@ -631,7 +626,6 @@ class _Account(gobject.GObject):
pass
-
class Neighborhood(gobject.GObject):
__gsignals__ = {
'activity-added': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
@@ -641,16 +635,15 @@ class Neighborhood(gobject.GObject):
'buddy-added': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
([object])),
'buddy-removed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([object])),
- }
+ ([object])), }
- def __init__(self, params = {}):
+ def __init__(self, params={}):
gobject.GObject.__init__(self)
self._buddies = {None: get_owner_instance()}
self._activities = {}
self._server_account = None
- self._nicks = {}
+ self._nicks = {}
#
# Jabber params
@@ -692,7 +685,6 @@ class Neighborhood(gobject.GObject):
def __error_handler_cb(self, error):
raise RuntimeError(error)
-
def _connect_to_account(self, account):
account.connect('buddy-added', self.__buddy_added_cb)
account.connect('buddy-updated', self.__buddy_updated_cb)
@@ -733,18 +725,16 @@ class Neighborhood(gobject.GObject):
nick = client.get_string('/desktop/sugar/user/nick')
params = {
- 'nickname': nick,
- 'first-name': '',
- 'last-name': '',
- 'jid': self._get_jabber_account_id(),
- 'published-name': nick,
- }
+ 'nickname': nick,
+ 'first-name': '',
+ 'last-name': '',
+ 'jid': self._get_jabber_account_id(),
+ 'published-name': nick, }
properties = {
- ACCOUNT + '.Enabled': True,
- ACCOUNT + '.Nickname': nick,
- ACCOUNT + '.ConnectAutomatically': True,
- }
+ ACCOUNT + '.Enabled': True,
+ ACCOUNT + '.Nickname': nick,
+ ACCOUNT + '.ConnectAutomatically': True, }
bus = dbus.Bus()
obj = bus.get_object(ACCOUNT_MANAGER_SERVICE, ACCOUNT_MANAGER_PATH)
@@ -759,31 +749,33 @@ class Neighborhood(gobject.GObject):
for account_path in account_paths:
if 'gabble' in account_path:
- obj_acct_mgr = bus.get_object(ACCOUNT_MANAGER_SERVICE, account_path)
+ obj_acct_mgr = bus.get_object(
+ ACCOUNT_MANAGER_SERVICE,
+ account_path)
properties = obj_acct_mgr.Get(ACCOUNT, 'Parameters')
- if properties.has_key("server") and properties["server"] == self._server:
- print("Enabiling account_path = %s, server = %s", account_path, self._server)
+ if "server" in properties and \
+ properties["server"] == self._server:
+ print("Enabiling account_path = %s, server = %s",
+ account_path, self._server)
account = _Account(account_path)
account.enable()
return account
params = {
- 'account': self._get_jabber_account_id(),
- 'password': self._password,
- 'server': self._server,
- 'resource': 'sugar',
- 'require-encryption': True,
- 'ignore-ssl-errors': True,
- 'register': self._register,
- 'old-ssl': True,
- 'port': dbus.UInt32(self._port),
- }
+ 'account': self._get_jabber_account_id(),
+ 'password': self._password,
+ 'server': self._server,
+ 'resource': 'sugar',
+ 'require-encryption': True,
+ 'ignore-ssl-errors': True,
+ 'register': self._register,
+ 'old-ssl': True,
+ 'port': dbus.UInt32(self._port), }
properties = {
- ACCOUNT + '.Enabled': True,
- ACCOUNT + '.Nickname': self._nickname,
- ACCOUNT + '.ConnectAutomatically': True,
- }
+ ACCOUNT + '.Enabled': True,
+ ACCOUNT + '.Nickname': self._nickname,
+ ACCOUNT + '.ConnectAutomatically': True, }
obj = bus.get_object(ACCOUNT_MANAGER_SERVICE, ACCOUNT_MANAGER_PATH)
account_manager = dbus.Interface(obj, ACCOUNT_MANAGER)
@@ -805,11 +797,12 @@ class Neighborhood(gobject.GObject):
server = client.get_string(
'/desktop/sugar/collaboration/jabber_server')
account_id = self._get_jabber_account_id()
- needs_reconnect = account.UpdateParameters({'server': server,
- 'account': account_id,
- 'register': True},
- dbus.Array([], 's'),
- dbus_interface=ACCOUNT)
+ needs_reconnect = account.UpdateParameters(
+ {'server': server,
+ 'account': account_id,
+ 'register': True},
+ dbus.Array([], 's'),
+ dbus_interface=ACCOUNT)
if needs_reconnect:
account.Reconnect()
@@ -837,17 +830,16 @@ class Neighborhood(gobject.GObject):
account.Reconnect()
def __buddy_added_cb(self, account, contact_id, nick, handle):
-
self._nicks[contact_id] = nick
if contact_id in self._buddies:
#print('__buddy_added_cb buddy already tracked')
return
buddy = BuddyModel(
- nick=nick,
- account=account.object_path,
- contact_id=contact_id,
- handle=handle)
+ nick=nick,
+ account=account.object_path,
+ contact_id=contact_id,
+ handle=handle)
self._buddies[contact_id] = buddy
def __buddy_updated_cb(self, account, contact_id, properties):
@@ -906,7 +898,9 @@ class Neighborhood(gobject.GObject):
def __activity_updated_cb(self, account, activity_id, properties):
print('__activity_updated_cb %r %r', activity_id, properties)
if activity_id not in self._activities:
- print('__activity_updated_cb Unknown activity with activity_id %r', activity_id)
+ print(
+ '__activity_updated_cb: Unknown activity with activity_id %r',
+ activity_id)
return
# we should somehow emulate this and say we only have TurtleArtActivity
@@ -923,13 +917,14 @@ class Neighborhood(gobject.GObject):
if 'color' in properties:
activity.props.color = XoColor(properties['color'])
- activity.props.bundle = None # FIXME: we have no access to the bundleregistry
+ # FIXME: we have no access to the bundleregistry
+ activity.props.bundle = None
if 'name' in properties:
activity.props.name = properties['name']
if 'private' in properties:
activity.props.private = properties['private']
- # FIXME: this should be configurable, we only care about the activity thats using this lib
- # i.e.: Turtle Art
+ # FIXME: this should be configurable, we only care about the
+ # activity thats using this lib i.e.: Turtle Art
if properties['type']:
activity.props.bundle = properties['type']
@@ -1027,8 +1022,10 @@ class Neighborhood(gobject.GObject):
return self._activities.values()
_neighborhood = None
-def get_neighborhood(params = {}):
- global _neighborhood
+
+
+def get_neighborhood(params={}):
+ global _neighborhood
if _neighborhood is None:
_neighborhood = Neighborhood(params)
return _neighborhood
diff --git a/collaboration/presenceservice.py b/collaboration/presenceservice.py
index 33caadd..b2fafed 100644
--- a/collaboration/presenceservice.py
+++ b/collaboration/presenceservice.py
@@ -30,15 +30,15 @@ from dbus import PROPERTIES_IFACE
""" FIXME ... """
try:
- from sugar.presence.buddy import Buddy, Owner
+ from sugar.presence.buddy import Buddy
from sugar.presence.activity import Activity
from sugar.presence.connectionmanager import get_connection_manager
-except:
+except ImportError:
pass
-from telepathy.interfaces import ACCOUNT, \
- ACCOUNT_MANAGER, \
- CONNECTION
+from telepathy.interfaces import (ACCOUNT,
+ ACCOUNT_MANAGER,
+ CONNECTION)
from telepathy.constants import HANDLE_TYPE_CONTACT
@@ -54,9 +54,8 @@ class PresenceService(gobject.GObject):
"""Provides simplified access to the Telepathy framework to activities"""
__gsignals__ = {
'activity-shared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT,
- gobject.TYPE_PYOBJECT])),
- }
+ ([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT,
+ gobject.TYPE_PYOBJECT])), }
def __init__(self):
"""Initialise the service and attempt to connect to events
@@ -82,15 +81,15 @@ class PresenceService(gobject.GObject):
else:
connection_manager = get_connection_manager()
connections_per_account = \
- connection_manager.get_connections_per_account()
+ connection_manager.get_connections_per_account()
for account_path, connection in connections_per_account.items():
if not connection.connected:
continue
logging.debug('Calling GetActivity on %s', account_path)
try:
room_handle = connection.connection.GetActivity(
- activity_id,
- dbus_interface=CONN_INTERFACE_ACTIVITY_PROPERTIES)
+ activity_id,
+ dbus_interface=CONN_INTERFACE_ACTIVITY_PROPERTIES)
except dbus.exceptions.DBusException, e:
name = 'org.freedesktop.Telepathy.Error.NotAvailable'
if e.get_dbus_name() == name:
@@ -161,12 +160,13 @@ class PresenceService(gobject.GObject):
if connection_path == tp_conn_path:
connection_name = connection_path.replace('/', '.')[1:]
connection = bus.get_object(connection_name, connection_path)
- contact_ids = connection.InspectHandles(HANDLE_TYPE_CONTACT,
- [handle],
- dbus_interface=CONNECTION)
+ contact_ids = connection.InspectHandles(
+ HANDLE_TYPE_CONTACT,
+ [handle],
+ dbus_interface=CONNECTION)
return self.get_buddy(account_path, contact_ids[0])
- raise ValueError('Unknown buddy in connection %s with handle %d' % \
+ raise ValueError('Unknown buddy in connection %s with handle %d' %
(tp_conn_path, handle))
def get_owner(self):
@@ -203,12 +203,12 @@ class PresenceService(gobject.GObject):
properties['private'] = private
if self._activity_cache is not None:
- raise ValueError('Activity %s is already tracked' % \
+ raise ValueError('Activity %s is already tracked' %
(activity.get_id()))
connection_manager = get_connection_manager()
account_path, connection = \
- connection_manager.get_preferred_connection()
+ connection_manager.get_preferred_connection()
if connection is None:
self.emit('activity-shared', False, None,
@@ -220,7 +220,7 @@ class PresenceService(gobject.GObject):
self._activity_cache = shared_activity
if shared_activity.props.joined:
- raise RuntimeError('Activity %s is already shared.' % \
+ raise RuntimeError('Activity %s is already shared.' %
(activity.props.id))
shared_activity.share(self.__share_activity_cb,
diff --git a/collaboration/telepathyclient.py b/collaboration/telepathyclient.py
index e00f053..366c398 100644
--- a/collaboration/telepathyclient.py
+++ b/collaboration/telepathyclient.py
@@ -48,14 +48,11 @@ class TelepathyClient(dbus.service.Object, DBusProperties):
DBusProperties.__init__(self)
self._implement_property_get(CLIENT, {
- 'Interfaces': lambda: list(self._interfaces),
- })
+ 'Interfaces': lambda: list(self._interfaces), })
self._implement_property_get(CLIENT_HANDLER, {
- 'HandlerChannelFilter': self.__get_filters_cb,
- })
+ 'HandlerChannelFilter': self.__get_filters_cb, })
self._implement_property_get(CLIENT_APPROVER, {
- 'ApproverChannelFilter': self.__get_filters_cb,
- })
+ 'ApproverChannelFilter': self.__get_filters_cb, })
self.got_channel = dispatch.Signal()
self.got_dispatch_operation = dispatch.Signal()
@@ -68,7 +65,7 @@ class TelepathyClient(dbus.service.Object, DBusProperties):
@dbus.service.method(dbus_interface=CLIENT_HANDLER,
in_signature='ooa(oa{sv})aota{sv}', out_signature='')
def HandleChannels(self, account, connection, channels, requests_satisfied,
- user_action_time, handler_info):
+ user_action_time, handler_info):
logging.debug('HandleChannels\n%r\n%r\n%r\n%r\n%r\n%r\n', account,
connection, channels, requests_satisfied,
user_action_time, handler_info)
@@ -91,9 +88,11 @@ class TelepathyClient(dbus.service.Object, DBusProperties):
logging.debug('AddDispatchOperation\n%r\n%r\n%r', channels,
dispatch_operation_path, properties)
- self.got_dispatch_operation.send(self, channels=channels,
- dispatch_operation_path=dispatch_operation_path,
- properties=properties)
+ self.got_dispatch_operation.send(
+ self,
+ channels=channels,
+ dispatch_operation_path=dispatch_operation_path,
+ properties=properties)
except Exception, e:
logging.exception(e)
diff --git a/collaboration/tubeconn.py b/collaboration/tubeconn.py
index 1014a46..9a496d9 100644
--- a/collaboration/tubeconn.py
+++ b/collaboration/tubeconn.py
@@ -62,11 +62,13 @@ class TubeConnection(Connection):
# pylint: disable=W0201
# Confused by __new__
self.self_handle = handle
- match = self._tubes_iface.connect_to_signal('DBusNamesChanged',
- self._on_dbus_names_changed)
- self._tubes_iface.GetDBusNames(self.tube_id,
- reply_handler=self._on_get_dbus_names_reply,
- error_handler=self._on_get_dbus_names_error)
+ match = self._tubes_iface.connect_to_signal(
+ 'DBusNamesChanged',
+ self._on_dbus_names_changed)
+ self._tubes_iface.GetDBusNames(
+ self.tube_id,
+ reply_handler=self._on_get_dbus_names_reply,
+ error_handler=self._on_get_dbus_names_error)
self._dbus_names_changed_match = match
def _on_get_self_handle_error(self, e):
diff --git a/collaboration/xocolor.py b/collaboration/xocolor.py
index 395e345..bb04f2f 100644
--- a/collaboration/xocolor.py
+++ b/collaboration/xocolor.py
@@ -25,187 +25,186 @@ import logging
import gconf
colors = [
-['#B20008', '#FF2B34'], \
-['#FF2B34', '#B20008'], \
-['#E6000A', '#FF2B34'], \
-['#FF2B34', '#E6000A'], \
-['#FFADCE', '#FF2B34'], \
-['#9A5200', '#FF2B34'], \
-['#FF2B34', '#9A5200'], \
-['#FF8F00', '#FF2B34'], \
-['#FF2B34', '#FF8F00'], \
-['#FFC169', '#FF2B34'], \
-['#807500', '#FF2B34'], \
-['#FF2B34', '#807500'], \
-['#BE9E00', '#FF2B34'], \
-['#FF2B34', '#BE9E00'], \
-['#F8E800', '#FF2B34'], \
-['#008009', '#FF2B34'], \
-['#FF2B34', '#008009'], \
-['#00B20D', '#FF2B34'], \
-['#FF2B34', '#00B20D'], \
-['#8BFF7A', '#FF2B34'], \
-['#00588C', '#FF2B34'], \
-['#FF2B34', '#00588C'], \
-['#005FE4', '#FF2B34'], \
-['#FF2B34', '#005FE4'], \
-['#BCCDFF', '#FF2B34'], \
-['#5E008C', '#FF2B34'], \
-['#FF2B34', '#5E008C'], \
-['#7F00BF', '#FF2B34'], \
-['#FF2B34', '#7F00BF'], \
-['#D1A3FF', '#FF2B34'], \
-['#9A5200', '#FF8F00'], \
-['#FF8F00', '#9A5200'], \
-['#C97E00', '#FF8F00'], \
-['#FF8F00', '#C97E00'], \
-['#FFC169', '#FF8F00'], \
-['#807500', '#FF8F00'], \
-['#FF8F00', '#807500'], \
-['#BE9E00', '#FF8F00'], \
-['#FF8F00', '#BE9E00'], \
-['#F8E800', '#FF8F00'], \
-['#008009', '#FF8F00'], \
-['#FF8F00', '#008009'], \
-['#00B20D', '#FF8F00'], \
-['#FF8F00', '#00B20D'], \
-['#8BFF7A', '#FF8F00'], \
-['#00588C', '#FF8F00'], \
-['#FF8F00', '#00588C'], \
-['#005FE4', '#FF8F00'], \
-['#FF8F00', '#005FE4'], \
-['#BCCDFF', '#FF8F00'], \
-['#5E008C', '#FF8F00'], \
-['#FF8F00', '#5E008C'], \
-['#A700FF', '#FF8F00'], \
-['#FF8F00', '#A700FF'], \
-['#D1A3FF', '#FF8F00'], \
-['#B20008', '#FF8F00'], \
-['#FF8F00', '#B20008'], \
-['#FF2B34', '#FF8F00'], \
-['#FF8F00', '#FF2B34'], \
-['#FFADCE', '#FF8F00'], \
-['#807500', '#F8E800'], \
-['#F8E800', '#807500'], \
-['#BE9E00', '#F8E800'], \
-['#F8E800', '#BE9E00'], \
-['#FFFA00', '#EDDE00'], \
-['#008009', '#F8E800'], \
-['#F8E800', '#008009'], \
-['#00EA11', '#F8E800'], \
-['#F8E800', '#00EA11'], \
-['#8BFF7A', '#F8E800'], \
-['#00588C', '#F8E800'], \
-['#F8E800', '#00588C'], \
-['#00A0FF', '#F8E800'], \
-['#F8E800', '#00A0FF'], \
-['#BCCEFF', '#F8E800'], \
-['#5E008C', '#F8E800'], \
-['#F8E800', '#5E008C'], \
-['#AC32FF', '#F8E800'], \
-['#F8E800', '#AC32FF'], \
-['#D1A3FF', '#F8E800'], \
-['#B20008', '#F8E800'], \
-['#F8E800', '#B20008'], \
-['#FF2B34', '#F8E800'], \
-['#F8E800', '#FF2B34'], \
-['#FFADCE', '#F8E800'], \
-['#9A5200', '#F8E800'], \
-['#F8E800', '#9A5200'], \
-['#FF8F00', '#F8E800'], \
-['#F8E800', '#FF8F00'], \
-['#FFC169', '#F8E800'], \
-['#008009', '#00EA11'], \
-['#00EA11', '#008009'], \
-['#00B20D', '#00EA11'], \
-['#00EA11', '#00B20D'], \
-['#8BFF7A', '#00EA11'], \
-['#00588C', '#00EA11'], \
-['#00EA11', '#00588C'], \
-['#005FE4', '#00EA11'], \
-['#00EA11', '#005FE4'], \
-['#BCCDFF', '#00EA11'], \
-['#5E008C', '#00EA11'], \
-['#00EA11', '#5E008C'], \
-['#7F00BF', '#00EA11'], \
-['#00EA11', '#7F00BF'], \
-['#D1A3FF', '#00EA11'], \
-['#B20008', '#00EA11'], \
-['#00EA11', '#B20008'], \
-['#FF2B34', '#00EA11'], \
-['#00EA11', '#FF2B34'], \
-['#FFADCE', '#00EA11'], \
-['#9A5200', '#00EA11'], \
-['#00EA11', '#9A5200'], \
-['#FF8F00', '#00EA11'], \
-['#00EA11', '#FF8F00'], \
-['#FFC169', '#00EA11'], \
-['#807500', '#00EA11'], \
-['#00EA11', '#807500'], \
-['#BE9E00', '#00EA11'], \
-['#00EA11', '#BE9E00'], \
-['#F8E800', '#00EA11'], \
-['#00588C', '#00A0FF'], \
-['#00A0FF', '#00588C'], \
-['#005FE4', '#00A0FF'], \
-['#00A0FF', '#005FE4'], \
-['#BCCDFF', '#00A0FF'], \
-['#5E008C', '#00A0FF'], \
-['#00A0FF', '#5E008C'], \
-['#9900E6', '#00A0FF'], \
-['#00A0FF', '#9900E6'], \
-['#D1A3FF', '#00A0FF'], \
-['#B20008', '#00A0FF'], \
-['#00A0FF', '#B20008'], \
-['#FF2B34', '#00A0FF'], \
-['#00A0FF', '#FF2B34'], \
-['#FFADCE', '#00A0FF'], \
-['#9A5200', '#00A0FF'], \
-['#00A0FF', '#9A5200'], \
-['#FF8F00', '#00A0FF'], \
-['#00A0FF', '#FF8F00'], \
-['#FFC169', '#00A0FF'], \
-['#807500', '#00A0FF'], \
-['#00A0FF', '#807500'], \
-['#BE9E00', '#00A0FF'], \
-['#00A0FF', '#BE9E00'], \
-['#F8E800', '#00A0FF'], \
-['#008009', '#00A0FF'], \
-['#00A0FF', '#008009'], \
-['#00B20D', '#00A0FF'], \
-['#00A0FF', '#00B20D'], \
-['#8BFF7A', '#00A0FF'], \
-['#5E008C', '#AC32FF'], \
-['#AC32FF', '#5E008C'], \
-['#7F00BF', '#AC32FF'], \
-['#AC32FF', '#7F00BF'], \
-['#D1A3FF', '#AC32FF'], \
-['#B20008', '#AC32FF'], \
-['#AC32FF', '#B20008'], \
-['#FF2B34', '#AC32FF'], \
-['#AC32FF', '#FF2B34'], \
-['#FFADCE', '#AC32FF'], \
-['#9A5200', '#AC32FF'], \
-['#AC32FF', '#9A5200'], \
-['#FF8F00', '#AC32FF'], \
-['#AC32FF', '#FF8F00'], \
-['#FFC169', '#AC32FF'], \
-['#807500', '#AC32FF'], \
-['#AC32FF', '#807500'], \
-['#BE9E00', '#AC32FF'], \
-['#AC32FF', '#BE9E00'], \
-['#F8E800', '#AC32FF'], \
-['#008009', '#AC32FF'], \
-['#AC32FF', '#008009'], \
-['#00B20D', '#AC32FF'], \
-['#AC32FF', '#00B20D'], \
-['#8BFF7A', '#AC32FF'], \
-['#00588C', '#AC32FF'], \
-['#AC32FF', '#00588C'], \
-['#005FE4', '#AC32FF'], \
-['#AC32FF', '#005FE4'], \
-['#BCCDFF', '#AC32FF'], \
-]
+ ['#B20008', '#FF2B34'],
+ ['#FF2B34', '#B20008'],
+ ['#E6000A', '#FF2B34'],
+ ['#FF2B34', '#E6000A'],
+ ['#FFADCE', '#FF2B34'],
+ ['#9A5200', '#FF2B34'],
+ ['#FF2B34', '#9A5200'],
+ ['#FF8F00', '#FF2B34'],
+ ['#FF2B34', '#FF8F00'],
+ ['#FFC169', '#FF2B34'],
+ ['#807500', '#FF2B34'],
+ ['#FF2B34', '#807500'],
+ ['#BE9E00', '#FF2B34'],
+ ['#FF2B34', '#BE9E00'],
+ ['#F8E800', '#FF2B34'],
+ ['#008009', '#FF2B34'],
+ ['#FF2B34', '#008009'],
+ ['#00B20D', '#FF2B34'],
+ ['#FF2B34', '#00B20D'],
+ ['#8BFF7A', '#FF2B34'],
+ ['#00588C', '#FF2B34'],
+ ['#FF2B34', '#00588C'],
+ ['#005FE4', '#FF2B34'],
+ ['#FF2B34', '#005FE4'],
+ ['#BCCDFF', '#FF2B34'],
+ ['#5E008C', '#FF2B34'],
+ ['#FF2B34', '#5E008C'],
+ ['#7F00BF', '#FF2B34'],
+ ['#FF2B34', '#7F00BF'],
+ ['#D1A3FF', '#FF2B34'],
+ ['#9A5200', '#FF8F00'],
+ ['#FF8F00', '#9A5200'],
+ ['#C97E00', '#FF8F00'],
+ ['#FF8F00', '#C97E00'],
+ ['#FFC169', '#FF8F00'],
+ ['#807500', '#FF8F00'],
+ ['#FF8F00', '#807500'],
+ ['#BE9E00', '#FF8F00'],
+ ['#FF8F00', '#BE9E00'],
+ ['#F8E800', '#FF8F00'],
+ ['#008009', '#FF8F00'],
+ ['#FF8F00', '#008009'],
+ ['#00B20D', '#FF8F00'],
+ ['#FF8F00', '#00B20D'],
+ ['#8BFF7A', '#FF8F00'],
+ ['#00588C', '#FF8F00'],
+ ['#FF8F00', '#00588C'],
+ ['#005FE4', '#FF8F00'],
+ ['#FF8F00', '#005FE4'],
+ ['#BCCDFF', '#FF8F00'],
+ ['#5E008C', '#FF8F00'],
+ ['#FF8F00', '#5E008C'],
+ ['#A700FF', '#FF8F00'],
+ ['#FF8F00', '#A700FF'],
+ ['#D1A3FF', '#FF8F00'],
+ ['#B20008', '#FF8F00'],
+ ['#FF8F00', '#B20008'],
+ ['#FF2B34', '#FF8F00'],
+ ['#FF8F00', '#FF2B34'],
+ ['#FFADCE', '#FF8F00'],
+ ['#807500', '#F8E800'],
+ ['#F8E800', '#807500'],
+ ['#BE9E00', '#F8E800'],
+ ['#F8E800', '#BE9E00'],
+ ['#FFFA00', '#EDDE00'],
+ ['#008009', '#F8E800'],
+ ['#F8E800', '#008009'],
+ ['#00EA11', '#F8E800'],
+ ['#F8E800', '#00EA11'],
+ ['#8BFF7A', '#F8E800'],
+ ['#00588C', '#F8E800'],
+ ['#F8E800', '#00588C'],
+ ['#00A0FF', '#F8E800'],
+ ['#F8E800', '#00A0FF'],
+ ['#BCCEFF', '#F8E800'],
+ ['#5E008C', '#F8E800'],
+ ['#F8E800', '#5E008C'],
+ ['#AC32FF', '#F8E800'],
+ ['#F8E800', '#AC32FF'],
+ ['#D1A3FF', '#F8E800'],
+ ['#B20008', '#F8E800'],
+ ['#F8E800', '#B20008'],
+ ['#FF2B34', '#F8E800'],
+ ['#F8E800', '#FF2B34'],
+ ['#FFADCE', '#F8E800'],
+ ['#9A5200', '#F8E800'],
+ ['#F8E800', '#9A5200'],
+ ['#FF8F00', '#F8E800'],
+ ['#F8E800', '#FF8F00'],
+ ['#FFC169', '#F8E800'],
+ ['#008009', '#00EA11'],
+ ['#00EA11', '#008009'],
+ ['#00B20D', '#00EA11'],
+ ['#00EA11', '#00B20D'],
+ ['#8BFF7A', '#00EA11'],
+ ['#00588C', '#00EA11'],
+ ['#00EA11', '#00588C'],
+ ['#005FE4', '#00EA11'],
+ ['#00EA11', '#005FE4'],
+ ['#BCCDFF', '#00EA11'],
+ ['#5E008C', '#00EA11'],
+ ['#00EA11', '#5E008C'],
+ ['#7F00BF', '#00EA11'],
+ ['#00EA11', '#7F00BF'],
+ ['#D1A3FF', '#00EA11'],
+ ['#B20008', '#00EA11'],
+ ['#00EA11', '#B20008'],
+ ['#FF2B34', '#00EA11'],
+ ['#00EA11', '#FF2B34'],
+ ['#FFADCE', '#00EA11'],
+ ['#9A5200', '#00EA11'],
+ ['#00EA11', '#9A5200'],
+ ['#FF8F00', '#00EA11'],
+ ['#00EA11', '#FF8F00'],
+ ['#FFC169', '#00EA11'],
+ ['#807500', '#00EA11'],
+ ['#00EA11', '#807500'],
+ ['#BE9E00', '#00EA11'],
+ ['#00EA11', '#BE9E00'],
+ ['#F8E800', '#00EA11'],
+ ['#00588C', '#00A0FF'],
+ ['#00A0FF', '#00588C'],
+ ['#005FE4', '#00A0FF'],
+ ['#00A0FF', '#005FE4'],
+ ['#BCCDFF', '#00A0FF'],
+ ['#5E008C', '#00A0FF'],
+ ['#00A0FF', '#5E008C'],
+ ['#9900E6', '#00A0FF'],
+ ['#00A0FF', '#9900E6'],
+ ['#D1A3FF', '#00A0FF'],
+ ['#B20008', '#00A0FF'],
+ ['#00A0FF', '#B20008'],
+ ['#FF2B34', '#00A0FF'],
+ ['#00A0FF', '#FF2B34'],
+ ['#FFADCE', '#00A0FF'],
+ ['#9A5200', '#00A0FF'],
+ ['#00A0FF', '#9A5200'],
+ ['#FF8F00', '#00A0FF'],
+ ['#00A0FF', '#FF8F00'],
+ ['#FFC169', '#00A0FF'],
+ ['#807500', '#00A0FF'],
+ ['#00A0FF', '#807500'],
+ ['#BE9E00', '#00A0FF'],
+ ['#00A0FF', '#BE9E00'],
+ ['#F8E800', '#00A0FF'],
+ ['#008009', '#00A0FF'],
+ ['#00A0FF', '#008009'],
+ ['#00B20D', '#00A0FF'],
+ ['#00A0FF', '#00B20D'],
+ ['#8BFF7A', '#00A0FF'],
+ ['#5E008C', '#AC32FF'],
+ ['#AC32FF', '#5E008C'],
+ ['#7F00BF', '#AC32FF'],
+ ['#AC32FF', '#7F00BF'],
+ ['#D1A3FF', '#AC32FF'],
+ ['#B20008', '#AC32FF'],
+ ['#AC32FF', '#B20008'],
+ ['#FF2B34', '#AC32FF'],
+ ['#AC32FF', '#FF2B34'],
+ ['#FFADCE', '#AC32FF'],
+ ['#9A5200', '#AC32FF'],
+ ['#AC32FF', '#9A5200'],
+ ['#FF8F00', '#AC32FF'],
+ ['#AC32FF', '#FF8F00'],
+ ['#FFC169', '#AC32FF'],
+ ['#807500', '#AC32FF'],
+ ['#AC32FF', '#807500'],
+ ['#BE9E00', '#AC32FF'],
+ ['#AC32FF', '#BE9E00'],
+ ['#F8E800', '#AC32FF'],
+ ['#008009', '#AC32FF'],
+ ['#AC32FF', '#008009'],
+ ['#00B20D', '#AC32FF'],
+ ['#AC32FF', '#00B20D'],
+ ['#8BFF7A', '#AC32FF'],
+ ['#00588C', '#AC32FF'],
+ ['#AC32FF', '#00588C'],
+ ['#005FE4', '#AC32FF'],
+ ['#AC32FF', '#005FE4'],
+ ['#BCCDFF', '#AC32FF'], ]
def _parse_string(color_string):
@@ -226,13 +225,13 @@ def _parse_string(color_string):
def is_valid(color_string):
- return (_parse_string(color_string) != None)
+ return (_parse_string(color_string) is not None)
class XoColor:
def __init__(self, color_string=None):
- if color_string == None:
+ if color_string is None:
randomize = True
elif not is_valid(color_string):
logging.debug('Color string is not valid: %s, '