1
0
Fork 0
mirror of synced 2024-11-26 18:55:34 -05:00
ultimate-vim/sources_non_forked/vim-snippets/UltiSnips/python.snippets

587 lines
10 KiB
Text
Raw Normal View History

priority -50
2012-08-16 23:41:25 -04:00
###########################################################################
# TEXTMATE SNIPPETS #
###########################################################################
#! header
snippet #! "Shebang header for python scripts" b
#!/usr/bin/env python
# encoding: utf-8
$0
endsnippet
snippet ifmain "ifmain" b
if __name__ == '__main__':
${1:main()}$0
endsnippet
snippet for "for loop" b
for ${1:item} in ${2:iterable}:
${3:pass}
endsnippet
2012-08-16 23:41:25 -04:00
##########
# COMMON #
##########
# The smart def and smart class snippets use a global option called
# "g:ultisnips_python_style" which, if set to "doxygen" will use doxygen
# style comments in docstrings.
global !p
NORMAL = 0x1
DOXYGEN = 0x2
SPHINX = 0x3
2014-04-18 08:58:02 -04:00
GOOGLE = 0x4
2012-08-16 23:41:25 -04:00
SINGLE_QUOTES = 0x1
DOUBLE_QUOTES = 0x2
2014-04-18 08:58:02 -04:00
class Arg(object):
def __init__(self, arg):
self.arg = arg
self.name = arg.split('=')[0].strip()
def __str__(self):
return self.name
2014-08-03 18:02:51 -04:00
2014-04-18 08:58:02 -04:00
def __unicode__(self):
return self.name
2014-08-03 18:02:51 -04:00
2014-04-18 08:58:02 -04:00
def is_kwarg(self):
return '=' in self.arg
2012-08-16 23:41:25 -04:00
def get_args(arglist):
2014-04-18 08:58:02 -04:00
args = [Arg(arg) for arg in arglist.split(',') if arg]
args = [arg for arg in args if arg.name != 'self']
2012-08-16 23:41:25 -04:00
return args
2012-08-16 23:41:25 -04:00
def get_quoting_style(snip):
style = snip.opt("g:ultisnips_python_quoting_style", "double")
if style == 'single':
return SINGLE_QUOTES
return DOUBLE_QUOTES
2014-04-18 08:58:02 -04:00
def triple_quotes(snip):
if get_quoting_style(snip) == SINGLE_QUOTES:
return "'''"
return '"""'
2012-08-16 23:41:25 -04:00
def get_style(snip):
style = snip.opt("g:ultisnips_python_style", "normal")
2012-08-16 23:41:25 -04:00
if style == "doxygen": return DOXYGEN
elif style == "sphinx": return SPHINX
2014-04-18 08:58:02 -04:00
elif style == "google": return GOOGLE
else: return NORMAL
2012-08-16 23:41:25 -04:00
def format_arg(arg, style):
if style == DOXYGEN:
2014-09-27 11:32:18 -04:00
return "@param %s TODO" % arg
elif style == SPHINX:
2014-09-27 11:32:18 -04:00
return ":param %s: TODO" % arg
elif style == NORMAL:
2014-09-27 11:32:18 -04:00
return ":%s: TODO" % arg
2014-04-18 08:58:02 -04:00
elif style == GOOGLE:
2014-09-27 11:32:18 -04:00
return "%s (TODO): TODO" % arg
2012-08-16 23:41:25 -04:00
def format_return(style):
if style == DOXYGEN:
2014-09-27 11:32:18 -04:00
return "@return: TODO"
elif style in (NORMAL, SPHINX):
2014-09-27 11:32:18 -04:00
return ":returns: TODO"
2014-04-18 08:58:02 -04:00
elif style == GOOGLE:
2014-09-27 11:32:18 -04:00
return "Returns: TODO"
2012-08-16 23:41:25 -04:00
def write_docstring_args(args, snip):
if not args:
2014-04-18 08:58:02 -04:00
snip.rv += ' {0}'.format(triple_quotes(snip))
return
2012-08-16 23:41:25 -04:00
snip.rv += '\n' + snip.mkline('', indent='')
2012-08-16 23:41:25 -04:00
style = get_style(snip)
2012-08-16 23:41:25 -04:00
2014-04-18 08:58:02 -04:00
if style == GOOGLE:
write_google_docstring_args(args, snip)
else:
for arg in args:
snip += format_arg(arg, style)
def write_google_docstring_args(args, snip):
kwargs = [arg for arg in args if arg.is_kwarg()]
args = [arg for arg in args if not arg.is_kwarg()]
if args:
snip += "Args:"
snip.shift()
for arg in args:
snip += format_arg(arg, GOOGLE)
snip.unshift()
snip.rv += '\n' + snip.mkline('', indent='')
if kwargs:
snip += "Kwargs:"
snip.shift()
for kwarg in kwargs:
snip += format_arg(kwarg, GOOGLE)
snip.unshift()
snip.rv += '\n' + snip.mkline('', indent='')
2012-08-16 23:41:25 -04:00
def write_init_body(args, parents, snip):
parents = [p.strip() for p in parents.split(",")]
parents = [p for p in parents if p != 'object']
2012-08-16 23:41:25 -04:00
for p in parents:
snip += p + ".__init__(self)"
2012-08-16 23:41:25 -04:00
if parents:
snip.rv += '\n' + snip.mkline('', indent='')
2012-08-16 23:41:25 -04:00
for arg in args:
snip += "self._%s = %s" % (arg, arg)
2012-08-16 23:41:25 -04:00
def write_slots_args(args, snip):
args = ['"_%s"' % arg for arg in args]
snip += '__slots__ = (%s,)' % ', '.join(args)
2012-08-16 23:41:25 -04:00
endglobal
########################################
# Class & Special Method Name Snippets #
########################################
snippet class "class with docstrings" b
class ${1:MyClass}(${2:object}):
2014-04-18 08:58:02 -04:00
`!p snip.rv = triple_quotes(snip)`${3:Docstring for $1. }`!p snip.rv = triple_quotes(snip)`
2012-08-16 23:41:25 -04:00
def __init__(self$4):
2014-09-27 11:32:18 -04:00
`!p snip.rv = triple_quotes(snip)`${5:TODO: to be defined1.}`!p
2012-08-16 23:41:25 -04:00
snip.rv = ""
snip >> 2
args = get_args(t[4])
write_docstring_args(args, snip)
if args:
snip.rv += '\n' + snip.mkline('', indent='')
2014-04-18 08:58:02 -04:00
snip += '{0}'.format(triple_quotes(snip))
2012-08-16 23:41:25 -04:00
write_init_body(args, t[2], snip)
`
$0
endsnippet
snippet slotclass "class with slots and docstrings" b
class ${1:MyClass}(${2:object}):
2014-04-18 08:58:02 -04:00
`!p snip.rv = triple_quotes(snip)`${3:Docstring for $1. }`!p snip.rv = triple_quotes(snip)`
2012-08-16 23:41:25 -04:00
`!p
snip >> 1
args = get_args(t[4])
write_slots_args(args, snip)
`
def __init__(self$4):
2014-09-27 11:32:18 -04:00
`!p snip.rv = triple_quotes(snip)`${5:TODO: to be defined.}`!p
2012-08-16 23:41:25 -04:00
snip.rv = ""
snip >> 2
args = get_args(t[4])
write_docstring_args(args, snip)
if args:
snip.rv += '\n' + snip.mkline('', indent='')
2014-04-18 08:58:02 -04:00
snip += triple_quotes(snip)
2012-08-16 23:41:25 -04:00
write_init_body(args, t[2], snip)
`
$0
endsnippet
snippet contain "methods for emulating a container type" b
def __len__(self):
${1:pass}
def __getitem__(self, key):
${2:pass}
def __setitem__(self, key, value):
${3:pass}
def __delitem__(self, key):
${4:pass}
def __iter__(self):
${5:pass}
def __reversed__(self):
${6:pass}
def __contains__(self, item):
${7:pass}
endsnippet
snippet context "context manager methods" b
def __enter__(self):
${1:pass}
def __exit__(self, exc_type, exc_value, traceback):
${2:pass}
endsnippet
snippet attr "methods for customizing attribute access" b
def __getattr__(self, name):
${1:pass}
def __setattr__(self, name, value):
${2:pass}
def __delattr__(self, name):
${3:pass}
endsnippet
snippet desc "methods implementing descriptors" b
def __get__(self, instance, owner):
${1:pass}
def __set__(self, instance, value):
${2:pass}
def __delete__(self, instance):
${3:pass}
endsnippet
snippet cmp "methods implementing rich comparison"
def __eq__(self, other):
${1:pass}
def __ne__(self, other):
${2:pass}
def __lt__(self, other):
${3:pass}
def __le__(self, other):
${4:pass}
def __gt__(self, other):
${5:pass}
def __ge__(self, other):
${6:pass}
def __cmp__(self, other):
${7:pass}
endsnippet
snippet repr "methods implementing string representation"
def __repr__(self):
${1:pass}
def __str__(self):
${2:pass}
def __unicode__(self):
${3:pass}
endsnippet
# note: reflected operands and augmented arithmeitc assignements have been
# intentionally ommited to reduce verbosity.
snippet numeric "methods for emulating a numeric type" b
def __add__(self, other):
${1:pass}
def __sub__(self, other):
${2:pass}
def __mul__(self, other):
${3:pass}
def __div__(self, other):
${4:pass}
def __truediv__(self, other):
${5:pass}
def __floordiv__(self, other):
${6:pass}
def __mod__(self, other):
${7:pass}
def __divmod__(self, other):
${8:pass}
def __pow__(self, other):
${9:pass}
def __lshift__(self, other):
${10:pass}
def __rshift__(self, other):
${11:pass}
def __and__(self, other):
${12:pass}
def __xor__(self, other):
${13:pass}
def __or__(self, other):
${14:pass}
def __neg__(self):
${15:pass}
def __pos__(self):
${16:pass}
def __abs__(self):
${17:pass}
def __invert__(self):
${18:pass}
def __complex__(self):
${19:pass}
def __int__(self):
${20:pass}
def __long__(self):
${21:pass}
def __float__(self):
${22:pass}
def __oct__(self):
${22:pass}
def __hex__(self):
${23:pass}
def __index__(self):
${24:pass}
def __coerce__(self, other):
${25:pass}
endsnippet
snippet def "function with docstrings" b
def ${1:function}(`!p
if snip.indent:
snip.rv = 'self' + (", " if len(t[2]) else "")`${2:arg1}):
2014-09-27 11:32:18 -04:00
`!p snip.rv = triple_quotes(snip)`${4:TODO: Docstring for $1.}`!p
2012-08-16 23:41:25 -04:00
snip.rv = ""
snip >> 1
args = get_args(t[2])
if args:
write_docstring_args(args, snip)
2012-08-16 23:41:25 -04:00
style = get_style(snip)
snip += format_return(style)
snip.rv += '\n' + snip.mkline('', indent='')
2014-04-18 08:58:02 -04:00
snip += triple_quotes(snip) `
2012-08-16 23:41:25 -04:00
${0:pass}
endsnippet
# doesn't expand when there is a word in front
snippet /(^|(?<=\W))\./ "self." r
self.
endsnippet
snippet from "from module import name" b
from ${1:module} import ${2:Stuff}
endsnippet
##############
# PROPERTIES #
##############
snippet roprop "Read Only Property" b
@property
def ${1:name}(self):
2012-08-16 23:41:25 -04:00
${2:return self._$1}$0
endsnippet
snippet rwprop "Read write property" b
def ${1:name}():
2014-04-18 08:58:02 -04:00
`!p snip.rv = triple_quotes(snip) if t[2] else ''
2014-09-27 11:32:18 -04:00
`${2:TODO: Docstring for $1.}`!p
if t[2]:
snip >> 1
style = get_style(snip)
snip.rv += '\n' + snip.mkline('', indent='')
snip += format_return(style)
snip.rv += '\n' + snip.mkline('', indent='')
2014-04-18 08:58:02 -04:00
snip += triple_quotes(snip)
else:
snip.rv = ""`
def fget(self):
2012-08-16 23:41:25 -04:00
return self._$1$0
2012-08-16 23:41:25 -04:00
def fset(self, value):
self._$1 = value
return locals()
$1 = property(**$1(), doc=$1.__doc__)
endsnippet
####################
# If / Else / Elif #
####################
snippet if "If" b
if ${1:condition}:
${2:pass}
endsnippet
snippet ife "If / Else" b
if ${1:condition}:
${2:pass}
else:
${3:pass}
endsnippet
snippet ifee "If / Elif / Else" b
if ${1:condition}:
${2:pass}
elif ${3:condition}:
${4:pass}
else:
${5:pass}
2012-08-16 23:41:25 -04:00
endsnippet
##########################
# Try / Except / Finally #
##########################
snippet try "Try / Except" b
try:
${1:pass}
except ${2:Exception}, ${3:e}:
${4:raise $3}
endsnippet
snippet try "Try / Except / Else" b
try:
${1:pass}
except ${2:Exception}, ${3:e}:
${4:raise $3}
else:
${5:pass}
endsnippet
snippet try "Try / Except / Finally" b
try:
${1:pass}
except ${2:Exception}, ${3:e}:
${4:raise $3}
finally:
${5:pass}
endsnippet
snippet try "Try / Except / Else / Finally" b
try:
${1:pass}
except${2: ${3:Exception}, ${4:e}}:
${5:raise}
else:
${6:pass}
finally:
${7:pass}
endsnippet
#####################
# Assertions & Tests #
#####################
snippet pdb "Set PDB breakpoint" b
import pdb; pdb.set_trace()
endsnippet
snippet ipdb "Set IPDB breakpoint" b
import ipdb; ipdb.set_trace()
endsnippet
snippet pudb "Set PUDB breakpoint" b
import pudb; pudb.set_trace()
endsnippet
2012-08-16 23:41:25 -04:00
snippet ae "Assert equal" b
self.assertEqual(${1:first},${2:second})
endsnippet
snippet at "Assert True" b
self.assertTrue(${0:exp})
endsnippet
snippet af "Assert False" b
self.assertFalse(${1:expression})
endsnippet
snippet aae "Assert almost equal" b
self.assertAlmostEqual(${1:first},${2:second})
endsnippet
snippet ar "Assert raises" b
self.assertRaises(${1:exception}, ${2:func}${3/.+/, /}${3:arguments})
endsnippet
2014-08-03 18:02:51 -04:00
snippet an "Assert is None" b
self.assertIsNone(${0:expression})
endsnippet
snippet ann "Assert is not None" b
self.assertIsNotNone(${0:expression})
endsnippet
2012-08-16 23:41:25 -04:00
snippet testcase "pyunit testcase" b
class Test${1:Class}(${2:unittest.TestCase}):
2014-04-18 08:58:02 -04:00
`!p snip.rv = triple_quotes(snip)`${3:Test case docstring.}`!p snip.rv = triple_quotes(snip)`
2012-08-16 23:41:25 -04:00
def setUp(self):
${4:pass}
def tearDown(self):
${5:pass}
def test_${6:name}(self):
${7:pass}
endsnippet
# vim:ft=snippets: