| 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) < 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>
|
|---|