diff -rup decompyle.orig/Parser.py decompyle/Parser.py
--- decompyle.orig/Parser.py	2005-01-17 16:33:08.000000000 +0300
+++ decompyle/Parser.py	2010-02-03 19:51:29.000000000 +0300
@@ -99,6 +99,7 @@ class Parser(GenericASTBuilder):
 		'''
 		stmt ::= augassign1
 		stmt ::= augassign2
+		stmt ::= augassign3
 		augassign1 ::= expr expr inplace_op designator
 		augassign1 ::= expr expr inplace_op ROT_THREE STORE_SUBSCR
 		augassign1 ::= expr expr inplace_op ROT_TWO   STORE_SLICE+0
@@ -108,6 +109,8 @@ class Parser(GenericASTBuilder):
 		augassign2 ::= expr DUP_TOP LOAD_ATTR expr
 				inplace_op ROT_TWO   STORE_ATTR
 
+		augassign3 ::= expr expr ROT_TWO designator designator
+
 		inplace_op ::= INPLACE_ADD
 		inplace_op ::= INPLACE_SUBTRACT
 		inplace_op ::= INPLACE_MULTIPLY
@@ -185,6 +188,33 @@ class Parser(GenericASTBuilder):
 		import_as ::= IMPORT_FROM designator
 		'''
 
+	def p_import25(self, args):
+		'''
+		stmt ::= importstmt2
+		stmt ::= importfrom2
+		stmt ::= importfrom2
+		stmt ::= importstmt3
+		stmt ::= importfrom4
+
+		importstmt2 ::= LOAD_CONST import_as
+		importstar2 ::= LOAD_CONST IMPORT_NAME IMPORT_STAR
+		importstmt3 ::= expr expr IMPORT_NAME designator
+
+		importfrom2 ::= LOAD_CONST IMPORT_NAME importlist2 POP_TOP
+		importfrom4 ::= LOAD_CONST LOAD_CONST IMPORT_NAME IMPORT_FROM designator POP_TOP
+		importlist2 ::= importlist2 import_as
+		importlist2 ::= import_as
+		import_as ::= IMPORT_NAME designator
+		import_as ::= IMPORT_NAME LOAD_ATTR designator
+		import_as ::= IMPORT_FROM designator
+		'''
+
+
+#	def p_docstring(self, args):
+#		'''
+#		'''
+
+
 	def p_grammar(self, args):
 		'''
 		stmts ::= stmts stmt
@@ -221,6 +251,7 @@ class Parser(GenericASTBuilder):
 		stmt ::= yield_stmt
 		yield_stmt ::= expr YIELD_STMT
 		yield_stmt ::= expr YIELD_VALUE
+		yield_stmt ::= expr YIELD_VALUE POP_TOP
 
 		stmt ::= break_stmt
 		break_stmt ::= BREAK_LOOP
@@ -497,8 +528,8 @@ def parse(tokens, customize):
 		if p.customized.has_key(k):
 			continue
 		p.customized[k] = None
-
 		#nop = lambda self, args: None
+		rule2 = None
 		op = k[:string.rfind(k, '_')]
 		if op in ('BUILD_LIST', 'BUILD_TUPLE'):
 			rule = 'build_list ::= ' + 'expr '*v + k
@@ -517,6 +548,7 @@ def parse(tokens, customize):
 				  ('expr '*v, k), nop)
 			rule = 'mkfunc ::= %s LOAD_CONST %s' % ('expr '*v, k)
 		elif op == 'MAKE_CLOSURE':
+			rule2 = 'mkfunc ::= expr ' +k + ' STORE_FAST'
 			p.addRule('mklambda ::= %s load_closure LOAD_LAMBDA %s' %
 				  ('expr '*v, k), nop)
 			rule = 'mkfunc ::= %s load_closure LOAD_CONST %s' % ('expr '*v, k)
@@ -531,6 +563,8 @@ def parse(tokens, customize):
 		else:
 			raise 'unknown customize token %s' % k
 		p.addRule(rule, nop)
+		if rule2:
+		    p.addRule(rule2, nop)
 	ast = p.parse(tokens)
 	#p.cleanup()
 	return ast
diff -rup decompyle.orig/Walker.py decompyle/Walker.py
--- decompyle.orig/Walker.py	2005-01-17 16:33:28.000000000 +0300
+++ decompyle/Walker.py	2010-01-31 01:12:30.000000000 +0300
@@ -170,6 +170,7 @@ TABLE_DIRECT = {
     'assign':		( '%|%c = %c\n', -1, 0 ),
     'augassign1':	( '%|%c %c %c\n', 0, 2, 1),
     'augassign2':	( '%|%c%c %c %c\n', 0, 2, -3, -4),
+    'augassign3':	( '%|%c,%c = (%c, %c)\n', 3, 4, 0, 1),
 #   'dup_topx':		( '%c', 0),
     'designList':	( '%c = %c', 0, -1 ),
     'and':          	( '(%c and %c)', 0, 3 ),
@@ -188,6 +189,8 @@ TABLE_DIRECT = {
     'importstmt2':	( '%|import %c\n', 1),
     'importstar2':	( '%|from %[1]{pattr} import *\n', ),
     'importfrom2':	( '%|from %[1]{pattr} import %c\n', 2 ),
+    'importfrom4':	( '%|from %[2]{pattr} import %c\n', 4 ),
+    'importstmt3':	( '%|import %c\n', 3),
     'importlist2':	( '%C', (0, sys.maxint, ', ') ),
     'assert':		( '%|assert %c\n' , 3 ),
     'assert2':		( '%|assert %c, %c\n' , 3, -5 ),
@@ -386,8 +389,9 @@ class Walker(GenericASTTraversal, object
             self.write('...')
         elif data is None:
             # LOAD_CONST 'None' only occurs, when None is
-            # implicit eg. in 'return' w/o params
-            pass
+            # implicit eg. in 'return' w/o params (???)
+            self.write('None')
+#            pass
         else:
             self.write(repr(data))
         # LOAD_CONST is a terminal, so stop processing/recursing early
@@ -757,8 +761,8 @@ class Walker(GenericASTTraversal, object
             self.print_("(", ", ".join(params), "):")
             #self.print_(indent, '#flags:\t', int(code.co_flags))
 
-        if code.co_consts[0] != None: # docstring exists, dump it
-            self.print_docstring(indent, code.co_consts[0])
+#        if code.co_consts[0] != None: # docstring exists, dump it
+#            self.print_docstring(indent, code.co_consts[0])
 
         for g in find_globals(ast, {}).keys():
            self.print_(indent, 'global ', g)
diff -rup decompyle.orig/dis_files.py decompyle/dis_files.py
--- decompyle.orig/dis_files.py	2004-12-14 15:29:32.000000000 +0300
+++ decompyle/dis_files.py	2010-01-29 14:52:03.000000000 +0300
@@ -31,6 +31,7 @@ by_version = {
     '2.1': dis('2.1', 'dis_21'),
     '2.2': dis('2.2', 'dis_22'),
     '2.3': dis('2.3', 'dis_23'),
+    '2.5': dis('2.5', 'dis_23'),
 }
 
 by_magic = dict( [ (mag, by_version[ver])
diff -rup decompyle.orig/magics.py decompyle/magics.py
--- decompyle.orig/magics.py	2004-12-14 15:29:32.000000000 +0300
+++ decompyle/magics.py	2010-01-31 00:19:28.000000000 +0300
@@ -19,6 +19,8 @@ versions = {
     __build_magic(60202): '2.1',
     __build_magic(60717): '2.2',
     __build_magic(62011): '2.3',
+    __build_magic(62131): '2.5',
+    __build_magic(62161): '2.5',
 }
 
 magics = __by_version(versions)
diff -rup decompyle.orig/marshal_files.py decompyle/marshal_files.py
--- decompyle.orig/marshal_files.py	2004-12-14 15:29:32.000000000 +0300
+++ decompyle/marshal_files.py	2010-01-29 14:47:16.000000000 +0300
@@ -9,6 +9,7 @@ by_version = {
     '2.1': 'marshal_22',
     '2.2': 'marshal_22',
     '2.3': 'marshal_23',
+    '2.5': 'marshal',
 }
 
 by_magic = dict( [ (mag, by_version[ver])
diff -rup decompyle.orig/verify.py decompyle/verify.py
--- decompyle.orig/verify.py	2004-12-14 15:29:32.000000000 +0300
+++ decompyle/verify.py	2010-01-22 11:08:51.000000000 +0300
@@ -133,7 +133,6 @@ def cmp_code_objects(version, code_obj1,
 			
 			# use changed Token class
 			#   we (re)set this here to save exception handling,
-			#   which would get 'unübersichtlich'
 			scanner.setTokenClass(Token)
 			try:
 				# disassemble both code-objects
