##// END OF EJS Templates
Merge pull request #10539 from Carreau/fix-repr-mime...
Min RK -
r23616:9e7fbf0b merge
parent child Browse files
Show More
@@ -91,7 +91,7 class DisplayFormatter(Configurable):
91
91
92 By default all format types will be computed.
92 By default all format types will be computed.
93
93
94 The following MIME types are currently implemented:
94 The following MIME types are usually implemented:
95
95
96 * text/plain
96 * text/plain
97 * text/html
97 * text/html
@@ -108,14 +108,15 class DisplayFormatter(Configurable):
108 ----------
108 ----------
109 obj : object
109 obj : object
110 The Python object whose format data will be computed.
110 The Python object whose format data will be computed.
111 include : list or tuple, optional
111 include : list, tuple or set; optional
112 A list of format type strings (MIME types) to include in the
112 A list of format type strings (MIME types) to include in the
113 format data dict. If this is set *only* the format types included
113 format data dict. If this is set *only* the format types included
114 in this list will be computed.
114 in this list will be computed.
115 exclude : list or tuple, optional
115 exclude : list, tuple or set; optional
116 A list of format type string (MIME types) to exclude in the format
116 A list of format type string (MIME types) to exclude in the format
117 data dict. If this is set all format types will be computed,
117 data dict. If this is set all format types will be computed,
118 except for those included in this argument.
118 except for those included in this argument.
119 Mimetypes present in exclude will take precedence over the ones in include
119
120
120 Returns
121 Returns
121 -------
122 -------
@@ -129,6 +130,15 class DisplayFormatter(Configurable):
129
130
130 metadata_dict is a dictionary of metadata about each mime-type output.
131 metadata_dict is a dictionary of metadata about each mime-type output.
131 Its keys will be a strict subset of the keys in format_dict.
132 Its keys will be a strict subset of the keys in format_dict.
133
134 Notes
135 -----
136
137 If an object implement `_repr_mimebundle_` as well as various
138 `_repr_*_`, the data returned by `_repr_mimebundle_` will take
139 precedence and the corresponding `_repr_*_` for this mimetype will
140 not be called.
141
132 """
142 """
133 format_dict = {}
143 format_dict = {}
134 md_dict = {}
144 md_dict = {}
@@ -139,6 +149,14 class DisplayFormatter(Configurable):
139
149
140 format_dict, md_dict = self.mimebundle_formatter(obj)
150 format_dict, md_dict = self.mimebundle_formatter(obj)
141
151
152 if format_dict or md_dict:
153 if include:
154 format_dict = {k:v for k,v in format_dict.items() if k in include}
155 md_dict = {k:v for k,v in md_dict.items() if k in include}
156 if exclude:
157 format_dict = {k:v for k,v in format_dict.items() if k not in exclude}
158 md_dict = {k:v for k,v in md_dict.items() if k not in exclude}
159
142 for format_type, formatter in self.formatters.items():
160 for format_type, formatter in self.formatters.items():
143 if format_type in format_dict:
161 if format_type in format_dict:
144 # already got it from mimebundle, don't render again
162 # already got it from mimebundle, don't render again
@@ -163,7 +181,6 class DisplayFormatter(Configurable):
163 format_dict[format_type] = data
181 format_dict[format_type] = data
164 if md is not None:
182 if md is not None:
165 md_dict[format_type] = md
183 md_dict[format_type] = md
166
167 return format_dict, md_dict
184 return format_dict, md_dict
168
185
169 @property
186 @property
@@ -983,4 +1000,3 def format_display_data(obj, include=None, exclude=None):
983 include,
1000 include,
984 exclude
1001 exclude
985 )
1002 )
986
@@ -444,9 +444,13 def test_repr_mime():
444 return {
444 return {
445 'application/json+test.v2': {
445 'application/json+test.v2': {
446 'x': 'y'
446 'x': 'y'
447 }
447 },
448 'plain/text' : '<HasReprMime>',
449 'image/png' : 'i-overwrite'
448 }
450 }
449
451
452 def _repr_png_(self):
453 return 'should-be-overwritten'
450 def _repr_html_(self):
454 def _repr_html_(self):
451 return '<b>hi!</b>'
455 return '<b>hi!</b>'
452
456
@@ -458,9 +462,18 def test_repr_mime():
458 d, md = f.format(obj)
462 d, md = f.format(obj)
459 html_f.enabled = save_enabled
463 html_f.enabled = save_enabled
460
464
461 nt.assert_equal(sorted(d), ['application/json+test.v2', 'text/html', 'text/plain'])
465 nt.assert_equal(sorted(d), ['application/json+test.v2',
466 'image/png',
467 'plain/text',
468 'text/html',
469 'text/plain'])
462 nt.assert_equal(md, {})
470 nt.assert_equal(md, {})
463
471
472 d, md = f.format(obj, include={'image/png'})
473 nt.assert_equal(list(d.keys()), ['image/png'],
474 'Include should filter out even things from repr_mimebundle')
475 nt.assert_equal(d['image/png'], 'i-overwrite', '_repr_mimebundle_ take precedence')
476
464
477
465 def test_repr_mime_meta():
478 def test_repr_mime_meta():
466 class HasReprMimeMeta(object):
479 class HasReprMimeMeta(object):
General Comments 0
You need to be logged in to leave comments. Login now