(self, name, fd, filename=None, check_override=None)
| 2180 | return (r, w) |
| 2181 | |
| 2182 | def import_script(self, name, fd, filename=None, check_override=None): |
| 2183 | override_text = '' |
| 2184 | if check_override is not None: |
| 2185 | override_text = f''' |
| 2186 | import _imp |
| 2187 | _imp._override_multi_interp_extensions_check({check_override}) |
| 2188 | ''' |
| 2189 | if filename: |
| 2190 | # Apple extensions must be distributed as frameworks. This requires |
| 2191 | # a specialist loader. |
| 2192 | if is_apple_mobile: |
| 2193 | loader = "AppleFrameworkLoader" |
| 2194 | else: |
| 2195 | loader = "ExtensionFileLoader" |
| 2196 | |
| 2197 | return textwrap.dedent(f''' |
| 2198 | from importlib.util import spec_from_loader, module_from_spec |
| 2199 | from importlib.machinery import {loader} |
| 2200 | import os, sys |
| 2201 | {override_text} |
| 2202 | loader = {loader}({name!r}, {filename!r}) |
| 2203 | spec = spec_from_loader({name!r}, loader) |
| 2204 | try: |
| 2205 | module = module_from_spec(spec) |
| 2206 | loader.exec_module(module) |
| 2207 | except ImportError as exc: |
| 2208 | text = 'ImportError: ' + str(exc) |
| 2209 | else: |
| 2210 | text = 'okay' |
| 2211 | os.write({fd}, text.encode('utf-8')) |
| 2212 | ''') |
| 2213 | else: |
| 2214 | return textwrap.dedent(f''' |
| 2215 | import os, sys |
| 2216 | {override_text} |
| 2217 | try: |
| 2218 | import {name} |
| 2219 | except ImportError as exc: |
| 2220 | text = 'ImportError: ' + str(exc) |
| 2221 | else: |
| 2222 | text = 'okay' |
| 2223 | os.write({fd}, text.encode('utf-8')) |
| 2224 | ''') |
| 2225 | |
| 2226 | def run_here(self, name, filename=None, *, |
| 2227 | check_singlephase_setting=False, |
no test coverage detected