| 1 | # operation flags
 | 
| 2 | OP_ASSIGN = 'OP_ASSIGN'
 | 
| 3 | OP_DELETE = 'OP_DELETE'
 | 
| 4 | OP_APPLY = 'OP_APPLY'
 | 
| 5 | 
 | 
| 6 | SC_LOCAL = 1
 | 
| 7 | SC_GLOBAL_IMPLICIT = 2
 | 
| 8 | SC_GLOBAL_EXPLICIT = 3
 | 
| 9 | SC_FREE = 4
 | 
| 10 | SC_CELL = 5
 | 
| 11 | SC_UNKNOWN = 6
 | 
| 12 | 
 | 
| 13 | # NOTE: These really should be an ASDL enum types so we get proper names.
 | 
| 14 | # Although we will also need reflection to iterate over them.
 | 
| 15 | VALUE_TO_NAME = {}
 | 
| 16 | 
 | 
| 17 | def _const(name, val):
 | 
| 18 |   VALUE_TO_NAME[val] = name
 | 
| 19 |   globals()[name] = val
 | 
| 20 |   
 | 
| 21 | 
 | 
| 22 | _const('CO_OPTIMIZED', 0x0001)
 | 
| 23 | _const('CO_NEWLOCALS', 0x0002)
 | 
| 24 | _const('CO_VARARGS', 0x0004)
 | 
| 25 | _const('CO_VARKEYWORDS', 0x0008)
 | 
| 26 | _const('CO_NESTED', 0x0010)
 | 
| 27 | _const('CO_GENERATOR', 0x0020)
 | 
| 28 | _const('CO_FUTURE_DIVISION', 0x2000)
 | 
| 29 | _const('CO_FUTURE_ABSIMPORT', 0x4000)
 | 
| 30 | _const('CO_FUTURE_WITH_STATEMENT', 0x8000)
 | 
| 31 | # The only FUTURE that's relevant to us.  Everything else is the default.
 | 
| 32 | _const('CO_FUTURE_PRINT_FUNCTION', 0x10000)
 |