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