140 # bundle2 related errors |
140 # bundle2 related errors |
141 class BundleValueError(ValueError): |
141 class BundleValueError(ValueError): |
142 """error raised when bundle2 cannot be processed""" |
142 """error raised when bundle2 cannot be processed""" |
143 |
143 |
144 class BundleUnknownFeatureError(BundleValueError): |
144 class BundleUnknownFeatureError(BundleValueError): |
145 def __init__(self, parttype=None, params=()): |
145 def __init__(self, parttype=None, params=(), values=()): |
146 self.parttype = parttype |
146 self.parttype = parttype |
147 self.params = params |
147 self.params = params |
|
148 self.values = values |
148 if self.parttype is None: |
149 if self.parttype is None: |
149 msg = 'Stream Parameter' |
150 msg = 'Stream Parameter' |
150 else: |
151 else: |
151 msg = parttype |
152 msg = parttype |
152 if self.params: |
153 entries = self.params |
153 msg = '%s - %s' % (msg, ', '.join(self.params)) |
154 if self.params and self.values: |
|
155 assert len(self.params) == len(self.values) |
|
156 entries = [] |
|
157 for idx, par in enumerate(self.params): |
|
158 val = self.values[idx] |
|
159 if val is None: |
|
160 entries.append(val) |
|
161 else: |
|
162 entries.append("%s=%r" % (par, val)) |
|
163 if entries: |
|
164 msg = '%s - %s' % (msg, ', '.join(entries)) |
154 ValueError.__init__(self, msg) |
165 ValueError.__init__(self, msg) |
155 |
166 |
156 class ReadOnlyPartError(RuntimeError): |
167 class ReadOnlyPartError(RuntimeError): |
157 """error raised when code tries to alter a part being generated""" |
168 """error raised when code tries to alter a part being generated""" |
158 pass |
169 pass |