~ubuntu-branches/ubuntu/maverick/python3.1/maverick

« back to all changes in this revision

Viewing changes to Misc/TextMate/Python-Dev.tmbundle/Commands/2 to 3 - Module Deletion.tmCommand

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-03-23 00:01:27 UTC
  • Revision ID: james.westby@ubuntu.com-20090323000127-5fstfxju4ufrhthq
Tags: upstream-3.1~a1+20090322
ImportĀ upstreamĀ versionĀ 3.1~a1+20090322

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="UTF-8"?>
 
2
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 
3
<plist version="1.0">
 
4
<dict>
 
5
        <key>beforeRunningCommand</key>
 
6
        <string>nop</string>
 
7
        <key>command</key>
 
8
        <string>#!/usr/bin/python
 
9
"""Generate code to warn about a module's removal in Python 3.0.
 
10
 
 
11
XXX Not supported:
 
12
- Module's in a package do not have their full name generated.
 
13
- Package's __init__ module; should detect and use the package's name instead.
 
14
 
 
15
"""
 
16
py_template = """from warnings import warnpy3k
 
17
warnpy3k("the ${1:%s} module has been removed in Python 3.0", stacklevel=2)
 
18
del warnpy3k$0"""
 
19
 
 
20
c_template = """
 
21
if (PyErr_WarnPy3k("the ${1:%s} module has been removed in "
 
22
                   "Python 3.0", 2) &lt; 0)
 
23
    return;$0"""
 
24
 
 
25
 
 
26
import imp
 
27
import os
 
28
 
 
29
file_name = os.path.split(os.environ['TM_FILEPATH'])[1]
 
30
 
 
31
py_suffixes = reversed(sorted((suffix[0] for suffix in imp.get_suffixes() if suffix[2] == imp.PY_SOURCE), key=len))
 
32
c_suffixes = reversed(sorted((os.path.splitext(suffix[0])[0] + '.c'
 
33
                                for suffix in imp.get_suffixes() if suffix[2] == imp.C_EXTENSION), key=len))
 
34
 
 
35
pairings = ((py_suffixes, py_template), (c_suffixes, c_template))
 
36
 
 
37
def create_template(suffixes, template):
 
38
    for suffix in suffixes:
 
39
        if not file_name.endswith(suffix):
 
40
            continue
 
41
        module_name = file_name[:-len(suffix)]
 
42
        return template % module_name
 
43
    else:
 
44
        return None
 
45
 
 
46
for template in (create_template(*pair) for pair in pairings):
 
47
    if not template:
 
48
        continue
 
49
    print template,
 
50
    break
 
51
else:
 
52
    print 'XXX Could not generate code.'</string>
 
53
        <key>input</key>
 
54
        <string>none</string>
 
55
        <key>name</key>
 
56
        <string>2 to 3 - Module Deletion</string>
 
57
        <key>output</key>
 
58
        <string>insertAsSnippet</string>
 
59
        <key>tabTrigger</key>
 
60
        <string>2to3moddel</string>
 
61
        <key>uuid</key>
 
62
        <string>9519C22B-6AB8-41A1-94F6-079E0B45C147</string>
 
63
</dict>
 
64
</plist>