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 |
|
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 |
|
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 |
|
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', |
|
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