[Python-checkins] r54005 - sandbox/trunk/2to3/fixes/fix_apply.py sandbox/trunk/2to3/fixes/fix_except.py sandbox/trunk/2to3/fixes/fix_exec.py sandbox/trunk/2to3/fixes/fix_has_key.py sandbox/trunk/2to3/fixes/fix_intern.py sandbox/trunk/2to3/fixes/fix_raise.py sandbox/trunk/2to3/fixes/fix_throw.py

collin.winter python-checkins at python.org
Wed Feb 28 00:02:13 CET 2007


Author: collin.winter
Date: Wed Feb 28 00:02:12 2007
New Revision: 54005

Modified:
   sandbox/trunk/2to3/fixes/fix_apply.py
   sandbox/trunk/2to3/fixes/fix_except.py
   sandbox/trunk/2to3/fixes/fix_exec.py
   sandbox/trunk/2to3/fixes/fix_has_key.py
   sandbox/trunk/2to3/fixes/fix_intern.py
   sandbox/trunk/2to3/fixes/fix_raise.py
   sandbox/trunk/2to3/fixes/fix_throw.py
Log:
More comprehensive docstrings for fixer modules

Modified: sandbox/trunk/2to3/fixes/fix_apply.py
==============================================================================
--- sandbox/trunk/2to3/fixes/fix_apply.py	(original)
+++ sandbox/trunk/2to3/fixes/fix_apply.py	Wed Feb 28 00:02:12 2007
@@ -1,7 +1,9 @@
 # Copyright 2006 Google, Inc. All Rights Reserved.
 # Licensed to PSF under a Contributor Agreement.
 
-"""Fixer for apply()."""
+"""Fixer for apply().
+
+This converts apply(func, v, k) into (func)(*v, **k)."""
 
 # Local imports
 import pytree

Modified: sandbox/trunk/2to3/fixes/fix_except.py
==============================================================================
--- sandbox/trunk/2to3/fixes/fix_except.py	(original)
+++ sandbox/trunk/2to3/fixes/fix_except.py	Wed Feb 28 00:02:12 2007
@@ -1,4 +1,26 @@
-"""Fixer for except statements with named exceptions."""
+"""Fixer for except statements with named exceptions.
+
+The following cases will be converted:
+
+- "except E, T:" where T is a name:
+    
+    except E as T:
+    
+- "except E, T:" where T is not a name, tuple or list:
+    
+        except E as t:
+            T = t
+        
+    This is done because the target of an "except" clause must be a
+    name.
+    
+- "except E, T:" where T is a tuple or list literal:
+    
+        except E as t:
+            T = t.message
+    
+    This transformation is still under consideration.
+"""
 # Author: Collin Winter
 
 # Local imports
@@ -18,8 +40,6 @@
 as_leaf = pytree.Leaf(token.NAME, "as")
 as_leaf.set_prefix(" ")
 
-tuple_reason = "exception unpacking is going away"
-
 class FixExcept(basefix.BaseFix):
 
     PATTERN = """

Modified: sandbox/trunk/2to3/fixes/fix_exec.py
==============================================================================
--- sandbox/trunk/2to3/fixes/fix_exec.py	(original)
+++ sandbox/trunk/2to3/fixes/fix_exec.py	Wed Feb 28 00:02:12 2007
@@ -1,7 +1,13 @@
 # Copyright 2006 Google, Inc. All Rights Reserved.
 # Licensed to PSF under a Contributor Agreement.
 
-"""Fixer for exec."""
+"""Fixer for exec.
+
+This converts usages of the exec statement into calls to a built-in
+exec() function.
+
+exec code in ns1, ns2 -> exec(code, ns1, ns2)
+"""
 
 # Local imports
 import pytree

Modified: sandbox/trunk/2to3/fixes/fix_has_key.py
==============================================================================
--- sandbox/trunk/2to3/fixes/fix_has_key.py	(original)
+++ sandbox/trunk/2to3/fixes/fix_has_key.py	Wed Feb 28 00:02:12 2007
@@ -1,7 +1,33 @@
 # Copyright 2006 Google, Inc. All Rights Reserved.
 # Licensed to PSF under a Contributor Agreement.
 
-"""Fixer for has_key()."""
+"""Fixer for has_key().
+
+Calls to .has_key() methods are expressed in terms of the 'in'
+operator:
+
+    d.has_key(k) -> k in d
+
+CAVEATS:
+1) While the primary target of this fixer is dict.has_key(), the
+   fixer will change any has_key() method call, regardless of its
+   class.
+
+2) Cases like this will not be converted:
+
+    m = d.has_key
+    if m(k):
+        ...
+        
+   Only *calls* to has_key() are converted. While it is possible to
+   convert the above to something like
+   
+    m = d.__contains__
+    if m(k):
+        ...
+        
+   this is currently not done.
+"""
 
 # Local imports
 import pytree

Modified: sandbox/trunk/2to3/fixes/fix_intern.py
==============================================================================
--- sandbox/trunk/2to3/fixes/fix_intern.py	(original)
+++ sandbox/trunk/2to3/fixes/fix_intern.py	Wed Feb 28 00:02:12 2007
@@ -1,7 +1,9 @@
 # Copyright 2006 Georg Brandl.
 # Licensed to PSF under a Contributor Agreement.
 
-"""Fixer for intern()."""
+"""Fixer for intern().
+
+intern(s) -> sys.intern(s)"""
 
 # Local imports
 import pytree

Modified: sandbox/trunk/2to3/fixes/fix_raise.py
==============================================================================
--- sandbox/trunk/2to3/fixes/fix_raise.py	(original)
+++ sandbox/trunk/2to3/fixes/fix_raise.py	Wed Feb 28 00:02:12 2007
@@ -1,4 +1,24 @@
-"""Fixer for 'raise E, V, T'"""
+"""Fixer for 'raise E, V, T'
+
+raise         -> raise
+raise E       -> raise E
+raise E, V    -> raise E(V)
+raise E, V, T -> raise E(V).with_traceback(T)
+
+raise (((E, E'), E''), E'''), V -> raise E(V)
+raise "foo", V, T               -> warns about string exceptions
+
+
+CAVEATS:
+1) "raise E, V" will be incorrectly translated if V is an exception
+   instance. The correct Python 3 idiom is
+   
+        raise E from V
+        
+   but since we can't detect instance-hood by syntax alone and since
+   any client code would have to be changed as well, we don't automate
+   this.
+"""
 # Author: Collin Winter
 
 # Local imports

Modified: sandbox/trunk/2to3/fixes/fix_throw.py
==============================================================================
--- sandbox/trunk/2to3/fixes/fix_throw.py	(original)
+++ sandbox/trunk/2to3/fixes/fix_throw.py	Wed Feb 28 00:02:12 2007
@@ -1,4 +1,10 @@
-"""Fixer for generator.throw(E, V, T)"""
+"""Fixer for generator.throw(E, V, T).
+
+g.throw(E)       -> g.throw(E)
+g.throw(E, V)    -> g.throw(E(V))
+g.throw(E, V, T) -> g.throw(E(V).with_traceback(T))
+
+g.throw("foo"[, V[, T]]) will warn about string exceptions."""
 # Author: Collin Winter
 
 # Local imports


More information about the Python-checkins mailing list