|  | 
| 5 | 5 | # PY3KTODO: Get rid of "print >>fh" syntax | 
| 6 | 6 | 
 | 
| 7 | 7 | from __future__ import division, print_function | 
| 8 |  | -import contextlib | 
| 9 | 8 | import glob, math, os, shutil, sys, time | 
| 10 | 9 | def _fn_name(): return sys._getframe(1).f_code.co_name | 
| 11 | 10 | import io | 
| @@ -974,11 +973,6 @@ def print_ps(self, outfile, *args, **kwargs): | 
| 974 | 973 |     def print_eps(self, outfile, *args, **kwargs): | 
| 975 | 974 |         return self._print_ps(outfile, 'eps', *args, **kwargs) | 
| 976 | 975 | 
 | 
| 977 |  | - | 
| 978 |  | - | 
| 979 |  | - | 
| 980 |  | - | 
| 981 |  | - | 
| 982 | 976 |     def _print_ps(self, outfile, format, *args, **kwargs): | 
| 983 | 977 |         papertype = kwargs.pop("papertype", rcParams['ps.papersize']) | 
| 984 | 978 |         papertype = papertype.lower() | 
| @@ -1106,21 +1100,7 @@ def write(self, *kl, **kwargs): | 
| 1106 | 1100 |         self.figure.set_facecolor(origfacecolor) | 
| 1107 | 1101 |         self.figure.set_edgecolor(origedgecolor) | 
| 1108 | 1102 | 
 | 
| 1109 |  | -        if rcParams['ps.usedistiller']: | 
| 1110 |  | -            # We are going to use an external program to process the output. | 
| 1111 |  | -            # Write to a temporary file. | 
| 1112 |  | -            fd, tmpfile = mkstemp() | 
| 1113 |  | -            context_manager = io.open(fd, 'wb') | 
| 1114 |  | -        else: | 
| 1115 |  | -            # Write directly to outfile. | 
| 1116 |  | -            if passed_in_file_object: | 
| 1117 |  | -                @contextlib.contextmanager | 
| 1118 |  | -                def null_context(value): | 
| 1119 |  | -                    yield value | 
| 1120 |  | -                context_manager = null_context(outfile) | 
| 1121 |  | -            else: | 
| 1122 |  | -                context_manager = open(outfile, 'wb') | 
| 1123 |  | -        with context_manager as raw_fh: | 
|  | 1103 | +        def print_figure_impl(): | 
| 1124 | 1104 |             if sys.version_info[0] >= 3: | 
| 1125 | 1105 |                 fh = io.TextIOWrapper(raw_fh, encoding="ascii") | 
| 1126 | 1106 |             else: | 
| @@ -1195,6 +1175,24 @@ def null_context(value): | 
| 1195 | 1175 |             if not isEPSF: print("%%EOF", file=fh) | 
| 1196 | 1176 |             fh.flush() | 
| 1197 | 1177 | 
 | 
|  | 1178 | +            if sys.version_info[0] >= 3: | 
|  | 1179 | +                fh.detach() | 
|  | 1180 | + | 
|  | 1181 | +        if rcParams['ps.usedistiller']: | 
|  | 1182 | +            # We are going to use an external program to process the output. | 
|  | 1183 | +            # Write to a temporary file. | 
|  | 1184 | +            fd, tmpfile = mkstemp() | 
|  | 1185 | +            with io.open(fd, 'wb') as raw_fh: | 
|  | 1186 | +                print_figure_impl() | 
|  | 1187 | +        else: | 
|  | 1188 | +            # Write directly to outfile. | 
|  | 1189 | +            if passed_in_file_object: | 
|  | 1190 | +                raw_fh = outfile | 
|  | 1191 | +                print_figure_impl() | 
|  | 1192 | +            else: | 
|  | 1193 | +                with open(outfile, 'wb') as raw_fh: | 
|  | 1194 | +                    print_figure_impl() | 
|  | 1195 | + | 
| 1198 | 1196 |         if rcParams['ps.usedistiller']: | 
| 1199 | 1197 |             if rcParams['ps.usedistiller'] == 'ghostscript': | 
| 1200 | 1198 |                 gs_distill(tmpfile, isEPSF, ptype=papertype, bbox=bbox) | 
|  | 
0 commit comments