@@ -214,9 +214,26 @@ def __init__(self,
214
214
"""
215
215
self .types = types
216
216
self .allow_compressed = allow_compressed
217
+ self ._exts = None
217
218
super (ImageFile , self ).__init__ (value , filter , auto_set , entries ,
218
219
exists , ** metadata )
219
220
221
+ def info (self ):
222
+ existing = 'n existing' if self .exists else ''
223
+ comma = ',' if self .exists and not self .allow_compressed else ''
224
+ uncompressed = ' uncompressed' if not self .allow_compressed else ''
225
+ with_ext = ' (valid extensions: [{}])' .format (', ' .join (self .exts )) \
226
+ if self .types else ''
227
+ return 'a{existing}{comma}{uncompressed} file{with_ext}' .format (
228
+ existing = existing , comma = comma , uncompressed = uncompressed ,
229
+ with_ext = with_ext )
230
+
231
+ @property
232
+ def exts (self ):
233
+ if self .types and self ._exts is None :
234
+ self ._exts = self .grab_exts ()
235
+ return self ._exts
236
+
220
237
def grab_exts (self ):
221
238
# TODO: file type validation
222
239
exts = []
@@ -243,11 +260,10 @@ def validate(self, object, name, value):
243
260
"""
244
261
validated_value = super (ImageFile , self ).validate (object , name , value )
245
262
if validated_value and self .types :
246
- self ._exts = self .grab_exts ()
247
- if not any (validated_value .endswith (x ) for x in self ._exts ):
263
+ if not any (validated_value .endswith (x ) for x in self .exts ):
248
264
raise TraitError (
249
265
args = "{} is not included in allowed types: {}" .format (
250
- validated_value , ', ' .join (self ._exts )))
266
+ validated_value , ', ' .join (self .exts )))
251
267
return validated_value
252
268
253
269
0 commit comments