]> granicus.if.org Git - python/commitdiff
Add support for extension modules in 3.0 deprection command.
authorBrett Cannon <bcannon@gmail.com>
Fri, 9 May 2008 22:52:28 +0000 (22:52 +0000)
committerBrett Cannon <bcannon@gmail.com>
Fri, 9 May 2008 22:52:28 +0000 (22:52 +0000)
Misc/TextMate/Python-Dev.tmbundle/Commands/2 to 3 - Module Deletion.tmCommand

index c24311f20518c63bc08cd64ee6b319e4aa064ce3..3cfada8cd5604aa7b26e50978a1ce02d20808f99 100644 (file)
 XXX Not supported:
 - Module's in a package do not have their full name generated.
 - Package's __init__ module; should detect and use the package's name instead.
-- Extension modules; need to create template.
 
 """
-template = """from warnings import warnpy3k
+py_template = """from warnings import warnpy3k
 warnpy3k("the ${1:%s} module has been removed in Python 3.0", stacklevel=2)
-del warnpy3k
-$0"""
+del warnpy3k$0"""
+
+c_template = """
+if (PyErr_WarnPy3k("the ${1:%s} module has been removed in "
+                   "Python 3.0", 2) &lt; 0)
+    return;$0"""
+
 
 import imp
 import os
 
 file_name = os.path.split(os.environ['TM_FILEPATH'])[1]
-for suffix in (tuple_[0] for tuple_ in imp.get_suffixes()):
-    if not file_name.endswith(suffix):
+
+py_suffixes = reversed(sorted((suffix[0] for suffix in imp.get_suffixes() if suffix[2] == imp.PY_SOURCE), key=len))
+c_suffixes = reversed(sorted((os.path.splitext(suffix[0])[0] + '.c'
+                                for suffix in imp.get_suffixes() if suffix[2] == imp.C_EXTENSION), key=len))
+
+pairings = ((py_suffixes, py_template), (c_suffixes, c_template))
+
+def create_template(suffixes, template):
+    for suffix in suffixes:
+        if not file_name.endswith(suffix):
+            continue
+        module_name = file_name[:-len(suffix)]
+        return template % module_name
+    else:
+        return None
+
+for template in (create_template(*pair) for pair in pairings):
+    if not template:
         continue
-    module_name = file_name[:-len(suffix)]
-    print (template % module_name),
+    print template,
     break
 else:
-    print (template % "XXX"),</string>
+    print 'XXX Could not generate code.'</string>
        <key>input</key>
        <string>none</string>
        <key>name</key>