|
22 | 22 | from uncompyle6.scanners.tok import Token |
23 | 23 |
|
24 | 24 | # The byte code versions we support |
25 | | -PYTHON_VERSIONS = (2.3, 2.4, 2.5, 2.6, 2.7, 3.2, 3.3, 3.4, 3.5) |
| 25 | +if PYTHON3: |
| 26 | + # Need to work out Python 2.3. ord's in PYTHON3 |
| 27 | + PYTHON_VERSIONS = (2.5, 2.6, 2.7, 3.2, 3.3, 3.4, 3.5) |
| 28 | +else: |
| 29 | + PYTHON_VERSIONS = (2.3, 2.5, 2.6, 2.7, 3.2, 3.3, 3.4, 3.5) |
26 | 30 |
|
27 | 31 | # FIXME: DRY |
28 | 32 | if PYTHON3: |
@@ -268,12 +272,18 @@ def restrict_to_parent(self, target, parent): |
268 | 272 | target = parent['end'] |
269 | 273 | return target |
270 | 274 |
|
271 | | -def get_scanner(version, show_asm=False): |
| 275 | +def get_scanner(version, show_asm=None): |
272 | 276 | # Pick up appropriate scanner |
273 | 277 | if version in PYTHON_VERSIONS: |
274 | 278 | v_str = "%s" % (int(version * 10)) |
275 | 279 | exec("import uncompyle6.scanners.scanner%s as scan" % v_str) |
276 | | - exec("scanner = scan.Scanner%s(show_asm=show_asm)" % v_str) |
| 280 | + if PYTHON3: |
| 281 | + import importlib |
| 282 | + scan = importlib.import_module("uncompyle6.scanners.scanner%s" % v_str) |
| 283 | + if False: print(scan) # Avoid unused scan |
| 284 | + else: |
| 285 | + exec("import uncompyle6.scanners.scanner%s as scan" % v_str) |
| 286 | + scanner = eval("scan.Scanner%s(show_asm=show_asm)" % v_str) |
277 | 287 | else: |
278 | 288 | raise RuntimeError("Unsupported Python version %s" % version) |
279 | 289 | return scanner |
|
0 commit comments