45
class DictIterator( object ):
46
def __init__(self, mode, parent):
47
# modes = 1:keys, 2:values, 3:items
51
def __iter__(self): return self
54
if self.index > len(self.data.field_order):
56
key = self.data.field_order[self.index-1]
62
return (key, self.data[key])
44
64
logmodule = 'Python DictData'
45
65
# class emulation functions
46
66
def __getattr__(self,name):
83
103
return bool(item in self.data.keys())
85
105
def __iter__(self):
86
return self.itervalues()
106
return self.DictIterator(2,self)
88
108
def iterkeys(self):
90
110
obj.iterkeys() -> an iterator over the keys of obj
91
111
ordered by self.field_order
94
self.iterdata = self.keys()
113
return self.DictIterator(1,self)
97
115
def itervalues(self):
99
117
obj.itervalues() -> an iterator over the values of obj
100
118
ordered by self.field_order
103
self.iterdata = self.values()
120
return self.DictIterator(2,self)
106
122
def iteritems(self):
108
124
obj.iteritems() -> an iterator of over the (key,value) pairs of obj
109
125
ordered by self.field_order
112
self.iterdata = self.items()
127
return self.DictIterator(3,self)
116
res = self.iterdata[self.field]
118
if self.field == len(self.iterdata):
125
130
"""obj.keys() -> list of self.field_order"""
126
return list(self.field_order)
131
return list(self.iterkeys())
128
133
def has_key(self,item):
129
134
return self.__contains__(item)
131
136
def values(self):
132
137
"""obj.values() -> list of values, ordered by self.field_order"""
133
return [self.data[key] for key in self.field_order]
138
return list(self.itervalues())
135
140
def get(self,key):
136
141
return self.data[key]
140
145
obj.items() -> list of (key,value) pairs, ordered by self.field_order
142
return [(key, self.data[key]) for key in self.field_order]
147
return list(self.iteritems())
144
149
def pop(self,key):
145
150
raise NotImplementedError
345
350
self.data.update(self.defaults)
352
def __init__(self, data=None, db=None, raw=None):
353
DBData.__init__(self, data, db, raw)
355
self.origdata = self.data.copy()
347
357
def create(self,data=None):
349
359
obj.create(data=None) -> new database row
993
1003
</Configuration>
994
1004
""" % tuple(settings)
995
fp = open(os.path.expanduser('~/.mythtv/config.xml'), 'w')
1005
mythdir = os.path.expanduser('~/.mythtv')
1006
if not os.access(mythdir, os.F_OK):
1007
os.mkdir(mythdir,0755)
1008
fp = open(mythdir+'/config.xml', 'w')
996
1009
fp.write(config)
1757
1770
MythDBBase.__init__(self, db=db)
1758
1771
self.log = MythLog(self.logmodule, db=self)
1773
if path is not None:
1761
1774
self.path = path
1763
self.path = self.settings[socket.gethostname()][setting]
1775
elif setting is not None:
1776
host = socket.gethostname()
1777
self.path = self.settings[host][setting]
1778
if self.path is None:
1779
raise MythDBError(MythError.DB_SETTING, setting, host)
1781
raise MythError('Invalid input to Grabber()')
1764
1782
self.returncode = 0
1765
1783
self.stderr = ''