]> git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_isinstance.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Lib / lib2to3 / fixes / fix_isinstance.py
1 # Copyright 2008 Armin Ronacher.
2 # Licensed to PSF under a Contributor Agreement.
3
4 """Fixer that cleans up a tuple argument to isinstance after the tokens
5 in it were fixed. This is mainly used to remove double occurrences of
6 tokens as a leftover of the long -> int / unicode -> str conversion.
7
8 eg. isinstance(x, (int, long)) -> isinstance(x, (int, int))
9 -> isinstance(x, int)
10 """
11
12 from .. import fixer_base
13 from ..fixer_util import token
14
15
16 class FixIsinstance(fixer_base.BaseFix):
17 BM_compatible = True
18 PATTERN = """
19 power<
20 'isinstance'
21 trailer< '(' arglist< any ',' atom< '('
22 args=testlist_gexp< any+ >
23 ')' > > ')' >
24 >
25 """
26
27 run_order = 6
28
29 def transform(self, node, results):
30 names_inserted = set()
31 testlist = results["args"]
32 args = testlist.children
33 new_args = []
34 iterator = enumerate(args)
35 for idx, arg in iterator:
36 if arg.type == token.NAME and arg.value in names_inserted:
37 if idx < len(args) - 1 and args[idx + 1].type == token.COMMA:
38 iterator.next()
39 continue
40 else:
41 new_args.append(arg)
42 if arg.type == token.NAME:
43 names_inserted.add(arg.value)
44 if new_args and new_args[-1].type == token.COMMA:
45 del new_args[-1]
46 if len(new_args) == 1:
47 atom = testlist.parent
48 new_args[0].prefix = atom.prefix
49 atom.replace(new_args[0])
50 else:
51 args[:] = new_args
52 node.changed()