git.cweiske.de
/
enigma2.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a4fd5bd
)
fixes for python 2.6 by Moritz Venn
author
ghost
<andreas.monzner@multimedia-labs.de>
Mon, 26 Jan 2009 23:04:59 +0000
(
00:04
+0100)
committer
ghost
<andreas.monzner@multimedia-labs.de>
Mon, 26 Jan 2009 23:04:59 +0000
(
00:04
+0100)
17 files changed:
keymapparser.py
patch
|
blob
|
history
lib/actions/parseactions.py
patch
|
blob
|
history
lib/dvb/epgcache.cpp
patch
|
blob
|
history
lib/python/Components/Converter/EventTime.py
patch
|
blob
|
history
lib/python/Components/Converter/MovieInfo.py
patch
|
blob
|
history
lib/python/Components/Converter/ServicePosition.py
patch
|
blob
|
history
lib/python/Components/Converter/ServiceTime.py
patch
|
blob
|
history
lib/python/Components/Element.py
patch
|
blob
|
history
lib/python/Components/NimManager.py
patch
|
blob
|
history
lib/python/Components/Renderer/Canvas.py
patch
|
blob
|
history
lib/python/Plugins/DemoPlugins/TestPlugin/plugin.py
patch
|
blob
|
history
lib/python/Screens/ChannelSelection.py
patch
|
blob
|
history
lib/python/Screens/Setup.py
patch
|
blob
|
history
lib/python/Tools/LoadPixmap.py
patch
|
blob
|
history
lib/python/python.h
patch
|
blob
|
history
mytest.py
patch
|
blob
|
history
skin.py
patch
|
blob
|
history
diff --git
a/keymapparser.py
b/keymapparser.py
index 5023e944f7bf2204af0a5dc61d0598e7a0640581..63bca0f9a0f4aee02922a0b93f04fb7ac2f31f24 100644
(file)
--- a/
keymapparser.py
+++ b/
keymapparser.py
@@
-1,11
+1,18
@@
import enigma
import xml.etree.cElementTree
import enigma
import xml.etree.cElementTree
-from keyids import KEYIDS
;
+from keyids import KEYIDS
# these are only informational (for help)...
from Tools.KeyBindings import addKeyBinding
# these are only informational (for help)...
from Tools.KeyBindings import addKeyBinding
+class KeymapError(Exception):
+ def __init__(self, message):
+ self.message = message
+
+ def __str__(self):
+ return self.message
+
def parseKeys(context, filename, actionmap, device, keys):
for x in keys.findall("key"):
get_attr = x.attrib.get
def parseKeys(context, filename, actionmap, device, keys):
for x in keys.findall("key"):
get_attr = x.attrib.get
@@
-29,12
+36,12
@@
def parseKeys(context, filename, actionmap, device, keys):
elif id[1] == 'd':
keyid = int(id[2:]) | 0x8000
else:
elif id[1] == 'd':
keyid = int(id[2:]) | 0x8000
else:
- raise
"key id '" + str(id) + "' is neither hex nor dec"
+ raise
KeymapError("key id '" + str(id) + "' is neither hex nor dec")
else:
try:
keyid = KEYIDS[id]
except:
else:
try:
keyid = KEYIDS[id]
except:
- raise
"key id '" + str(id) + "' is illegal"
+ raise
KeymapError("key id '" + str(id) + "' is illegal")
# print context + "::" + mapto + " -> " + device + "." + hex(keyid)
actionmap.bindKey(filename, device, keyid, flags, context, mapto)
addKeyBinding(filename, keyid, context, mapto, flags)
# print context + "::" + mapto + " -> " + device + "." + hex(keyid)
actionmap.bindKey(filename, device, keyid, flags, context, mapto)
addKeyBinding(filename, keyid, context, mapto, flags)
@@
-48,7
+55,7
@@
def readKeymap(filename):
try:
dom = xml.etree.cElementTree.parse(source)
except:
try:
dom = xml.etree.cElementTree.parse(source)
except:
- raise
"keymap %s not well-formed." % filename
+ raise
KeymapError("keymap %s not well-formed." % filename)
keymap = dom.getroot()
keymap = dom.getroot()
diff --git
a/lib/actions/parseactions.py
b/lib/actions/parseactions.py
index 4ab71af79aa306cc47a9953e9ea658c66798ec38..2462a7517b0e36d5cb2bf5fa629d2d278ed70e76 100644
(file)
--- a/
lib/actions/parseactions.py
+++ b/
lib/actions/parseactions.py
@@
-65,7
+65,7
@@
def do_file(f, mode):
except:
pass
except:
pass
- raise
"action enum must be simple."
+ raise
Exception("action enum must be simple.")
counter = 0
counter = 0
@@
-82,7
+82,7
@@
def do_file(f, mode):
if counter:
if t != ",":
if counter:
if t != ",":
- raise
"no comma"
+ raise
Exception("no comma")
t = tokens.next()
if firsthit:
t = tokens.next()
if firsthit:
diff --git
a/lib/dvb/epgcache.cpp
b/lib/dvb/epgcache.cpp
index a8eca85b5cf598311923c41fdc33b6d69badddf8..fdcbe0e9faf2cb835db04288f6ae2e0b850ce6fb 100644
(file)
--- a/
lib/dvb/epgcache.cpp
+++ b/
lib/dvb/epgcache.cpp
@@
-2058,7
+2058,11
@@
PyObject *eEPGCache::search(ePyObject arg)
ePyObject obj = PyTuple_GET_ITEM(arg,0);
if (PyString_Check(obj))
{
ePyObject obj = PyTuple_GET_ITEM(arg,0);
if (PyString_Check(obj))
{
+#if PY_VERSION_HEX < 0x02060000
argcount = PyString_GET_SIZE(obj);
argcount = PyString_GET_SIZE(obj);
+#else
+ argcount = PyString_Size(obj);
+#endif
argstring = PyString_AS_STRING(obj);
for (int i=0; i < argcount; ++i)
switch(argstring[i])
argstring = PyString_AS_STRING(obj);
for (int i=0; i < argcount; ++i)
switch(argstring[i])
@@
-2156,7
+2160,11
@@
PyObject *eEPGCache::search(ePyObject arg)
{
int casetype = PyLong_AsLong(PyTuple_GET_ITEM(arg, 4));
const char *str = PyString_AS_STRING(obj);
{
int casetype = PyLong_AsLong(PyTuple_GET_ITEM(arg, 4));
const char *str = PyString_AS_STRING(obj);
+#if PY_VERSION_HEX < 0x02060000
int textlen = PyString_GET_SIZE(obj);
int textlen = PyString_GET_SIZE(obj);
+#else
+ int textlen = PyString_Size(obj);
+#endif
if (querytype == 1)
eDebug("lookup for events with '%s' as title(%s)", str, casetype?"ignore case":"case sensitive");
else
if (querytype == 1)
eDebug("lookup for events with '%s' as title(%s)", str, casetype?"ignore case":"case sensitive");
else
diff --git
a/lib/python/Components/Converter/EventTime.py
b/lib/python/Components/Converter/EventTime.py
index 966f2ca85617acb7a1b2f0e77fd45937db8f97d9..41f1ebf3d83786a19169d42c4d0b3ce0c508a31f 100644
(file)
--- a/
lib/python/Components/Converter/EventTime.py
+++ b/
lib/python/Components/Converter/EventTime.py
@@
-1,7
+1,7
@@
from Converter import Converter
from Poll import Poll
from time import time
from Converter import Converter
from Poll import Poll
from time import time
-from Components.Element import cached
+from Components.Element import cached
, ElementError
class EventTime(Poll, Converter, object):
STARTTIME = 0
class EventTime(Poll, Converter, object):
STARTTIME = 0
@@
-28,7
+28,7
@@
class EventTime(Poll, Converter, object):
self.poll_interval = 30*1000
self.poll_enabled = True
else:
self.poll_interval = 30*1000
self.poll_enabled = True
else:
- raise
st
r("'%s' is not <StartTime|EndTime|Remaining|Duration|Progress> for EventTime converter" % type)
+ raise
ElementErro
r("'%s' is not <StartTime|EndTime|Remaining|Duration|Progress> for EventTime converter" % type)
@cached
def getTime(self):
@cached
def getTime(self):
diff --git
a/lib/python/Components/Converter/MovieInfo.py
b/lib/python/Components/Converter/MovieInfo.py
index 068d24d3a73f84f2d47a6e8475f544cc5e913f80..be28dcce04e8ce098f33df25133ec4fdd7abd730 100644
(file)
--- a/
lib/python/Components/Converter/MovieInfo.py
+++ b/
lib/python/Components/Converter/MovieInfo.py
@@
-1,5
+1,5
@@
from Components.Converter.Converter import Converter
from Components.Converter.Converter import Converter
-from Components.Element import cached
+from Components.Element import cached
, ElementError
from enigma import iServiceInformation
from ServiceReference import ServiceReference
from enigma import iServiceInformation
from ServiceReference import ServiceReference
@@
-16,7
+16,7
@@
class MovieInfo(Converter, object):
elif type == "RecordServiceName":
self.type = self.MOVIE_REC_SERVICE_NAME
else:
elif type == "RecordServiceName":
self.type = self.MOVIE_REC_SERVICE_NAME
else:
- raise
st
r("'%s' is not <ShortDescription|MetaDescription|RecordServiceName> for MovieInfo converter" % type)
+ raise
ElementErro
r("'%s' is not <ShortDescription|MetaDescription|RecordServiceName> for MovieInfo converter" % type)
Converter.__init__(self, type)
@cached
Converter.__init__(self, type)
@cached
diff --git
a/lib/python/Components/Converter/ServicePosition.py
b/lib/python/Components/Converter/ServicePosition.py
index d7a55daea47ce81cc5f1bb4b04f8fcc7461ed5e1..2bcc54929eb4ca3cbb1d28e1f91033f8b16a0750 100644
(file)
--- a/
lib/python/Components/Converter/ServicePosition.py
+++ b/
lib/python/Components/Converter/ServicePosition.py
@@
-1,7
+1,7
@@
from Converter import Converter
from Poll import Poll
from enigma import iPlayableService
from Converter import Converter
from Poll import Poll
from enigma import iPlayableService
-from Components.Element import cached
+from Components.Element import cached
, ElementError
class ServicePosition(Converter, Poll, object):
TYPE_LENGTH = 0
class ServicePosition(Converter, Poll, object):
TYPE_LENGTH = 0
@@
-35,7
+35,7
@@
class ServicePosition(Converter, Poll, object):
elif type == "Gauge":
self.type = self.TYPE_GAUGE
else:
elif type == "Gauge":
self.type = self.TYPE_GAUGE
else:
- raise
"type must be {Length|Position|Remaining|Gauge} with optional arguments {Negate|Detailed|ShowHours|NoSeconds}"
+ raise
ElementError("type must be {Length|Position|Remaining|Gauge} with optional arguments {Negate|Detailed|ShowHours|NoSeconds}")
self.poll_enabled = self.type != self.TYPE_LENGTH
self.poll_enabled = self.type != self.TYPE_LENGTH
diff --git
a/lib/python/Components/Converter/ServiceTime.py
b/lib/python/Components/Converter/ServiceTime.py
index 16bcae3a9c67d5583798b8a712cf617b32a139a0..89965067803779d6e95953b23698ae4d9ceb2349 100644
(file)
--- a/
lib/python/Components/Converter/ServiceTime.py
+++ b/
lib/python/Components/Converter/ServiceTime.py
@@
-1,5
+1,5
@@
from Converter import Converter
from Converter import Converter
-from Components.Element import cached
+from Components.Element import cached
, ElementError
from enigma import iServiceInformation
class ServiceTime(Converter, object):
from enigma import iServiceInformation
class ServiceTime(Converter, object):
@@
-16,7
+16,7
@@
class ServiceTime(Converter, object):
elif type == "Duration":
self.type = self.DURATION
else:
elif type == "Duration":
self.type = self.DURATION
else:
- raise
st
r("'%s' is not <StartTime|EndTime|Duration> for eEventTime converter" % type)
+ raise
ElementErro
r("'%s' is not <StartTime|EndTime|Duration> for eEventTime converter" % type)
@cached
def getTime(self):
@cached
def getTime(self):
diff --git
a/lib/python/Components/Element.py
b/lib/python/Components/Element.py
index 2af5779351b6f192a233ca455a6b63a66995c3d0..f4a8f1275d346d88b990690a696bf5b179b833b5 100644
(file)
--- a/
lib/python/Components/Element.py
+++ b/
lib/python/Components/Element.py
@@
-16,6
+16,13
@@
def cached(f):
return cache[name][1]
return wrapper
return cache[name][1]
return wrapper
+class ElementError(Exception):
+ def __init__(self, message):
+ self.message = message
+
+ def __str__(self):
+ return self.message
+
class Element(object):
CHANGED_DEFAULT = 0 # initial "pull" state
CHANGED_ALL = 1 # really everything changed
class Element(object):
CHANGED_DEFAULT = 0 # initial "pull" state
CHANGED_ALL = 1 # really everything changed
diff --git
a/lib/python/Components/NimManager.py
b/lib/python/Components/NimManager.py
index 1fcbda1ac333f31bb602c6bf836f3e8e74a356a3..2692cb5b8789c9fb3daba83c683155c1a1715ba6 100644
(file)
--- a/
lib/python/Components/NimManager.py
+++ b/
lib/python/Components/NimManager.py
@@
-14,8
+14,6
@@
from enigma import eDVBSatelliteEquipmentControl as secClass, \
from time import localtime, mktime
from datetime import datetime
from time import localtime, mktime
from datetime import datetime
-from sets import Set
-
def getConfigSatlist(orbpos, satlist):
default_orbpos = None
for x in satlist:
def getConfigSatlist(orbpos, satlist):
default_orbpos = None
for x in satlist:
@@
-123,7
+121,7
@@
class SecConfigure:
def update(self):
sec = secClass.getInstance()
def update(self):
sec = secClass.getInstance()
- self.configuredSatellites =
S
et()
+ self.configuredSatellites =
s
et()
sec.clear() ## this do unlinking NIMs too !!
print "sec config cleared"
sec.clear() ## this do unlinking NIMs too !!
print "sec config cleared"
@@
-442,7
+440,7
@@
class SecConfigure:
def __init__(self, nimmgr):
self.NimManager = nimmgr
def __init__(self, nimmgr):
self.NimManager = nimmgr
- self.configuredSatellites =
S
et()
+ self.configuredSatellites =
s
et()
self.update()
class NIM(object):
self.update()
class NIM(object):
diff --git
a/lib/python/Components/Renderer/Canvas.py
b/lib/python/Components/Renderer/Canvas.py
index bd7ffb5e26f971eadc741c7bff9d0b1eec670461..acf0dbf73bfec096fc147ef8f7a1a90d8438f571 100644
(file)
--- a/
lib/python/Components/Renderer/Canvas.py
+++ b/
lib/python/Components/Renderer/Canvas.py
@@
-35,7
+35,7
@@
class Canvas(Renderer):
self.instance.writeText(eRect(l[1], l[2], l[3], l[4]), gRGB(l[5]), gRGB(l[6]), l[7], l[8], l[9])
else:
print "drawlist entry:", l
self.instance.writeText(eRect(l[1], l[2], l[3], l[4]), gRGB(l[5]), gRGB(l[6]), l[7], l[8], l[9])
else:
print "drawlist entry:", l
- raise
"invalid drawlist entry"
+ raise
RuntimeError("invalid drawlist entry")
def changed(self, what):
self.pull_updates()
def changed(self, what):
self.pull_updates()
diff --git
a/lib/python/Plugins/DemoPlugins/TestPlugin/plugin.py
b/lib/python/Plugins/DemoPlugins/TestPlugin/plugin.py
index a63562c8536ec75f706cd7f92a70eea654ce07cf..69f935e4718b86ebd7eddf26e7d88ac927690e2c 100644
(file)
--- a/
lib/python/Plugins/DemoPlugins/TestPlugin/plugin.py
+++ b/
lib/python/Plugins/DemoPlugins/TestPlugin/plugin.py
@@
-51,7
+51,7
@@
class Test(Screen):
def mycallback(self, answer):
print "answer:", answer
if answer:
def mycallback(self, answer):
print "answer:", answer
if answer:
- raise
"test-crash"
+ raise
Exception("test-crash")
self.close()
def keyLeft(self):
self.close()
def keyLeft(self):
diff --git
a/lib/python/Screens/ChannelSelection.py
b/lib/python/Screens/ChannelSelection.py
index b203b24e7577c90e041bf49d46d39258d0c599c4..ebfbe812fb5e132b04762a0099fc15ed022835d0 100644
(file)
--- a/
lib/python/Screens/ChannelSelection.py
+++ b/
lib/python/Screens/ChannelSelection.py
@@
-76,7
+76,7
@@
def append_when_current_valid(current, menu, args, level = 0):
class ChannelContextMenu(Screen):
def __init__(self, session, csel):
Screen.__init__(self, session)
class ChannelContextMenu(Screen):
def __init__(self, session, csel):
Screen.__init__(self, session)
- #raise
"we need a better summary screen here"
+ #raise
Exception("we need a better summary screen here")
self.csel = csel
self.bsel = None
self.csel = csel
self.bsel = None
diff --git
a/lib/python/Screens/Setup.py
b/lib/python/Screens/Setup.py
index 35918b5b612e8a50321da775b8adbc27307237fc..1d035b8a7f15a8d0209e84fdfeb14a420ae6c7ee 100644
(file)
--- a/
lib/python/Screens/Setup.py
+++ b/
lib/python/Screens/Setup.py
@@
-19,6
+19,13
@@
except:
setupdom = xml.etree.cElementTree.parse(setupfile)
setupfile.close()
setupdom = xml.etree.cElementTree.parse(setupfile)
setupfile.close()
+class SetupError(Exception):
+ def __init__(self, message):
+ self.message = message
+
+ def __str__(self):
+ return self.message
+
class SetupSummary(Screen):
skin = """
<screen position="6,0" size="120,64">
class SetupSummary(Screen):
skin = """
<screen position="6,0" size="120,64">
@@
-145,4
+152,4
@@
def getSetupTitle(id):
for x in xmldata.findall("setup"):
if x.get("key") == id:
return x.get("title", "").encode("UTF-8")
for x in xmldata.findall("setup"):
if x.get("key") == id:
return x.get("title", "").encode("UTF-8")
- raise
"unknown setup id '%s'!" % repr(id
)
+ raise
SetupError("unknown setup id '%s'!" % repr(id)
)
diff --git
a/lib/python/Tools/LoadPixmap.py
b/lib/python/Tools/LoadPixmap.py
index 53e04e54eca00e410406bb97ea2335c153eef91a..fff414ad677586d37a98ea777f4a1a854ff14e2c 100644
(file)
--- a/
lib/python/Tools/LoadPixmap.py
+++ b/
lib/python/Tools/LoadPixmap.py
@@
-14,7
+14,7
@@
def LoadPixmap(path, desktop = None, cached = False):
alpha = loadPNG(path + "a.png")
ptr = loadJPG(path + "rgb.jpg", alpha)
else:
alpha = loadPNG(path + "a.png")
ptr = loadJPG(path + "rgb.jpg", alpha)
else:
- raise
"neither .png nor .jpg, please fix file extension"
+ raise
Exception("neither .png nor .jpg, please fix file extension")
if ptr and desktop:
desktop.makeCompatiblePixmap(ptr)
if ptr and desktop:
desktop.makeCompatiblePixmap(ptr)
diff --git
a/lib/python/python.h
b/lib/python/python.h
index f56d49bbc489c311c1ab1239c01d11a2ec9d730a..52ec6c1eaba64b86ad37e2a5137c1669063f4746 100644
(file)
--- a/
lib/python/python.h
+++ b/
lib/python/python.h
@@
-24,6
+24,7
@@
public:
#ifdef PYTHON_REFCOUNT_DEBUG
inline ePyObject(PyObject *ob, const char *file, int line);
#endif
#ifdef PYTHON_REFCOUNT_DEBUG
inline ePyObject(PyObject *ob, const char *file, int line);
#endif
+ inline ePyObject(PyVarObject *ob);
inline ePyObject(PyDictObject *ob);
inline ePyObject(PyTupleObject *ob);
inline ePyObject(PyListObject *ob);
inline ePyObject(PyDictObject *ob);
inline ePyObject(PyTupleObject *ob);
inline ePyObject(PyListObject *ob);
@@
-32,11
+33,13
@@
public:
operator bool() { return !!m_ob; }
ePyObject &operator=(const ePyObject &);
ePyObject &operator=(PyObject *);
operator bool() { return !!m_ob; }
ePyObject &operator=(const ePyObject &);
ePyObject &operator=(PyObject *);
+ ePyObject &operator=(PyVarObject *ob) { return operator=((PyObject*)ob); }
ePyObject &operator=(PyDictObject *ob) { return operator=((PyObject*)ob); }
ePyObject &operator=(PyTupleObject *ob) { return operator=((PyObject*)ob); }
ePyObject &operator=(PyListObject *ob) { return operator=((PyObject*)ob); }
ePyObject &operator=(PyStringObject *ob) { return operator=((PyObject*)ob); }
operator PyObject*();
ePyObject &operator=(PyDictObject *ob) { return operator=((PyObject*)ob); }
ePyObject &operator=(PyTupleObject *ob) { return operator=((PyObject*)ob); }
ePyObject &operator=(PyListObject *ob) { return operator=((PyObject*)ob); }
ePyObject &operator=(PyStringObject *ob) { return operator=((PyObject*)ob); }
operator PyObject*();
+ operator PyVarObject*() { return (PyVarObject*)operator PyVarObject*(); }
operator PyTupleObject*() { return (PyTupleObject*)operator PyObject*(); }
operator PyListObject*() { return (PyListObject*)operator PyObject*(); }
operator PyStringObject*() { return (PyStringObject*)operator PyObject*(); }
operator PyTupleObject*() { return (PyTupleObject*)operator PyObject*(); }
operator PyListObject*() { return (PyListObject*)operator PyObject*(); }
operator PyStringObject*() { return (PyStringObject*)operator PyObject*(); }
@@
-84,6
+87,14
@@
inline ePyObject::ePyObject(PyObject *ob, const char* file, int line)
}
#endif
}
#endif
+inline ePyObject::ePyObject(PyVarObject *ob)
+ :m_ob((PyObject*)ob)
+#ifdef PYTHON_REFCOUNT_DEBUG
+ ,m_file(0), m_line(0), m_from(0), m_to(0), m_erased(false)
+#endif
+{
+}
+
inline ePyObject::ePyObject(PyDictObject *ob)
:m_ob((PyObject*)ob)
#ifdef PYTHON_REFCOUNT_DEBUG
inline ePyObject::ePyObject(PyDictObject *ob)
:m_ob((PyObject*)ob)
#ifdef PYTHON_REFCOUNT_DEBUG
diff --git
a/mytest.py
b/mytest.py
index 014f94c9a1d40692aba7daf606e1370a8e1bd16d..8f23beacb1119d619b54c9422251ab2d698aa20e 100644
(file)
--- a/
mytest.py
+++ b/
mytest.py
@@
-277,7
+277,7
@@
class Session:
def open(self, screen, *arguments, **kwargs):
if len(self.dialog_stack) and not self.in_exec:
def open(self, screen, *arguments, **kwargs):
if len(self.dialog_stack) and not self.in_exec:
- raise
"modal open are allowed only from a screen which is modal!"
+ raise
RuntimeError("modal open are allowed only from a screen which is modal!")
# ...unless it's the very first screen.
self.pushCurrent()
# ...unless it's the very first screen.
self.pushCurrent()
diff --git
a/skin.py
b/skin.py
index eae6ea4b4e6c941d832e8130221ecc2b7dac223e..03fe96bb58168f401a1fcc948e193238b3b84dc3 100644
(file)
--- a/
skin.py
+++ b/
skin.py
@@
-274,7
+274,7
@@
def loadSingleSkinData(desktop, skin, path_prefix):
colorNames[name] = parseColor(color)
#print "Color:", name, color
else:
colorNames[name] = parseColor(color)
#print "Color:", name, color
else:
- raise ("need color and name, got %s %s" % (name, color))
+ raise
SkinError
("need color and name, got %s %s" % (name, color))
for c in skin.findall("fonts"):
for font in c.findall("font"):
for c in skin.findall("fonts"):
for font in c.findall("font"):
@@
-335,7
+335,7
@@
def loadSingleSkinData(desktop, skin, path_prefix):
try:
style.setColor(eWindowStyleSkinned.__dict__["col" + type], color)
except:
try:
style.setColor(eWindowStyleSkinned.__dict__["col" + type], color)
except:
- raise ("Unknown color %s" % (type))
+ raise
SkinError
("Unknown color %s" % (type))
#pass
#print " color:", type, color
#pass
#print " color:", type, color