summaryrefslogtreecommitdiff
path: root/Misc/TextMate/Python-Dev.tmbundle/Commands/2 to 3 - Module Deletion.tmCommand
blob: 3cfada8cd5604aa7b26e50978a1ce02d20808f99 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>beforeRunningCommand</key>
	<string>nop</string>
	<key>command</key>
	<string>#!/usr/bin/python
"""Generate code to warn about a module's removal in Python 3.0.

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.

"""
py_template = """from warnings import warnpy3k
warnpy3k("the ${1:%s} module has been removed in Python 3.0", stacklevel=2)
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]

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
    print template,
    break
else:
    print 'XXX Could not generate code.'</string>
	<key>input</key>
	<string>none</string>
	<key>name</key>
	<string>2 to 3 - Module Deletion</string>
	<key>output</key>
	<string>insertAsSnippet</string>
	<key>tabTrigger</key>
	<string>2to3moddel</string>
	<key>uuid</key>
	<string>9519C22B-6AB8-41A1-94F6-079E0B45C147</string>
</dict>
</plist>