diff --git a/package.json b/package.json index b9c8a7da..e5439d89 100644 --- a/package.json +++ b/package.json @@ -331,7 +331,7 @@ }, { "language": "python", - "path": "./snippets/python/base.json" + "path": "./snippets/python/python.json" }, { "language": "python", @@ -339,15 +339,11 @@ }, { "language": "python", - "path": "./snippets/python/debug.json" - }, - { - "language": "python", - "path": "./snippets/python/python.json" + "path": "./snippets/python/unittest.json" }, { "language": "python", - "path": "./snippets/python/unittest.json" + "path": "./snippets/python/debug.json" }, { "language": "pydoc", diff --git a/snippets/python/base.json b/snippets/python/base.json deleted file mode 100644 index 712f4693..00000000 --- a/snippets/python/base.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "#!/usr/bin/env python": { - "prefix": "env", - "body": "#!/usr/bin/env python\n$0", - "description": "Adds shebang line for default python interpreter." - }, - "#!/usr/bin/env python3": { - "prefix": "env3", - "body": "#!/usr/bin/env python3\n$0", - "description": "Adds shebang line for default python 3 interpreter." - }, - "# -*- coding=utf-8 -*-": { - "prefix": "enc", - "body": "# -*- coding=utf-8 -*-\n$0", - "description": "set default python2.x encoding specification to utf-8 as it is mentioned in pep-0263." - }, - "# coding=utf-8": { - "prefix": "enco", - "body": "# coding=utf-8\n$0", - "description": "Set default python3 encoding specification to utf-8, by default this is the encoding for python3.x as it is mentioned in pep-3120." - }, - "from future import ...": { - "prefix": "fenc", - "body": [ - "# -*- coding: utf-8 -*-", - "from __future__ import absolute_import, division, print_function, unicode_literals" - ], - "description": "Import future statement definitions for python2.x scripts using utf-8 as encoding." - }, - "from future import ... v1": { - "prefix": "fenco", - "body": [ - "# coding: utf-8", - "from __future__ import absolute_import, division, print_function, unicode_literals" - ], - "description": "Import future statement definitions for python3.x scripts using utf-8 as encoding." - }, - "import": { - "prefix": "im", - "body": "import ${1:package/module}$0", - "description": "Import a package or module" - }, - "from ... import ...": { - "prefix": "fim", - "body": "from ${1:package/module} import ${2:names}$0", - "description": "Import statement that allows individual objects from the module to be imported directly into the caller’s symbol table." - }, - "class": { - "prefix": "class", - "body": ["class ${1:classname}(${2:object}):", "\t${3:pass}"], - "description": "Code snippet for a class definition" - }, - "New class": { - "prefix": "classi", - "body": "class ${1:ClassName}(${2:object}):\n\t\"\"\"${3:docstring for $1.}\"\"\"\n\tdef __init__(self, ${4:arg}):\n\t\t${5:super($1, self).__init__()}\n\t\tself.arg = arg\n\t\t$0", - "description": "Code snippet for a class definition." - }, - "New method": { - "prefix": "defs", - "body": "def ${1:mname}(self, ${2:arg}):\n\t${3:pass}$0", - "description": "Code snippet for a class method definition." - }, - "New method w/ return": { - "prefix": "defst", - "body": "def ${1:mname}(self, ${2:arg}) -> ${3:return_type}:\n\t${4:pass}$0", - "description": "Code snippet for a class method definition." - }, - "New function": { - "prefix": "def", - "body": "def ${1:fname}(${2:arg}):\n\t${3:pass}$0", - "description": "Code snippet for function definition." - }, - "New function w/ return": { - "prefix": "deft", - "body": "def ${1:fname}(${2:arg}) -> ${3:return_type}:\n\t${4:pass}$0", - "description": "Code snippet for function definition." - }, - "New async function": { - "prefix": "adef", - "body": "async def ${1:fname}(${2:arg}):\n\t${3:pass}$0", - "description": "Code snippet for async function definition." - }, - "New property": { - "prefix": "property", - "body": "@property\ndef ${1:foo}(self):\n \"\"\"${2:The $1 property.}\"\"\"\n ${3:return self._$1}\n@${4:$1}.setter\ndef ${5:$1}(self, value):\n ${6:self._$1} = value", - "description": "New property: get and set via decorator" - }, - "if": { - "prefix": "if", - "body": "if ${1:condition}:\n\t${2:pass}$0", - "description": "Code snippet for the if statement." - }, - "if/else": { - "prefix": "if/else", - "body": ["if ${1:condition}:", "\t${2:pass}", "else:", "\t${3:pass}"], - "description": "Code snippet for an if statement with else" - }, - "elif": { - "prefix": "elif", - "body": ["elif ${1:expression}:", "\t${2:pass}"], - "description": "Code snippet for an elif" - }, - "else": { - "prefix": "else", - "body": ["else:", "\t${1:pass}"], - "description": "Code snippet for an else" - }, - "for": { - "prefix": "for", - "body": "for ${1:value} in ${2:iterable}:\n\t${3:pass}$0", - "description": "Code snippet to create a for loop structure." - }, - "for/else": { - "prefix": "for/else", - "body": [ - "for ${1:target_list} in ${2:expression_list}:", - "\t${3:pass}", - "else:", - "\t${4:pass}" - ], - "description": "Code snippet for a for loop with else" - }, - "while": { - "prefix": "while", - "body": "while ${1:condition}:\n\t${2:pass}$0", - "description": "Code snippet to create a while loop structure." - }, - "while/else": { - "prefix": "while/else", - "body": [ - "while ${1:expression}:", - "\t${2:pass}", - "else:", - "\t${3:pass}" - ], - "description": "Code snippet for a while loop with else" - }, - "try:except:": { - "prefix": "try", - "body": "try:\n\t${1:pass}\nexcept ${2:Exception} as ${3:e}:\n\t${4:raise $3}$0", - "description": "Code Snippet for a try and except blocks." - }, - "try:except:else:finally": { - "prefix": "tryef", - "body": "try:\n\t${1:pass}\nexcept${2: ${3:Exception} as ${4:e}}:\n\t${5:raise}\nelse:\n\t${6:pass}\nfinally:\n\t${7:pass}$0", - "description": "Code Snippet for a try/except/finally with else statement." - }, - "try:except:else": { - "prefix": "trye", - "body": "try:\n\t${1:pass}\nexcept ${2:Exception} as ${3:e}:\n\t${4:raise $3}\nelse:\n\t${5:pass}$0", - "description": "Code Snippet for a try/except with else statement." - }, - "try:except:finally": { - "prefix": "tryf", - "body": "try:\n\t${1:pass}\nexcept ${2:Exception} as ${3:e}:\n\t${4:raise $3}\nfinally:\n\t${5:pass}$0", - "description": "Code Snippet for a try/except/finally." - }, - "with": { - "prefix": "with", - "body": ["with ${1:expression} as ${2:target}:", "\t${3:pass}"], - "description": "Code snippet for a with statement" - }, - "self": { - "prefix": "s", - "body": "self.$0", - "description": "Shortend snippet to reference the self property in an object." - }, - "__magic__": { - "prefix": "__", - "body": "__${1:init}__$0", - "description": "Code snippet to create magic methods." - }, - "if __name__ == \"__main__\"": { - "prefix": "ifmain", - "body": "if __name__ == \"__main__\":\n\t${1:main()}$0", - "description": "Create implicitly all the code at the top level using the __name__ special variable." - } -} diff --git a/snippets/python/python.json b/snippets/python/python.json index 313d29df..eae0151f 100644 --- a/snippets/python/python.json +++ b/snippets/python/python.json @@ -1,128 +1,234 @@ { + "#!/usr/bin/env pythonX": { + "prefix": "#env", + "body": "#!/usr/bin/env python$0", + "description": "Shebang line for the first python in PATH" + }, + "pyright ignore line": { + "prefix": "#ignore", + "body": "# pyright: ignore[$0]", + "description": "Ignore specific line diagnostic in pyright (ignore all is unsafe)" + }, + "Multiline string": { + "prefix": "#", + "body": ["\"\"\"$0", "\"\"\""], + "description": "Snippet to avoid autopair plugin annoyances when typing multiple \"" + }, + "One-line multiline string": { + "prefix": "##", + "body": "\"\"\"$0\"\"\"", + "description": "Snippet to avoid autopair plugin annoyances when typing multiple \"" + }, + "self": { + "prefix": "s", + "body": "self.$0", + "description": "Snippet to reference the self property in an object" + }, + "__magic__": { + "prefix": "__", + "body": "__${1:init}__$0", + "description": "Create magic method" + }, + "if __name__ == __main__": { + "prefix": "ifmain", + "body": ["if __name__ == \"__main__\":", "\t${1:main()}"], + "description": "Execute code if the file is executed directly" + }, + "import": { + "prefix": "import", + "body": "import ${1:datetime}", + "description": "Import a package or module" + }, + "from ... import ...": { + "prefix": "fromim", + "body": "from ${1:pathlib} import ${2:Path}", + "description": "Import individual objects directly into the caller’s symbol table" + }, + "if": { + "prefix": "if", + "body": ["if ${1:condition}:", "\t${2:pass}"], + "description": "if statement" + }, + "elif": { + "prefix": "elif", + "body": ["elif ${1:expression}:", "\t${2:pass}"], + "description": "elif statement" + }, + "else": { + "prefix": "else", + "body": ["else:", "\t${1:pass}"], + "description": "else statement" + }, + "if/else": { + "prefix": "ifelse", + "body": ["if ${1:condition}:", "\t${2:pass}", "else:", "\t${3:pass}"], + "description": "if statement with else" + }, + "match/case": { + "prefix": "match", + "body": [ + "match ${1:expression}:", + "\tcase ${2:pattern}:", + "\t\t${3:pass}" + ], + "description": "match/case statements" + }, + "case": { + "prefix": "case", + "body": ["case ${2:pattern}:", "\t${3:pass}"], + "description": "case block" + }, + "case wildcard": { + "prefix": "casew", + "body": ["case _:", "\t${1:pass}"], + "description": "case wildcard block if other cases fail" + }, + "while": { + "prefix": "while", + "body": ["while ${1:condition}:", "\t${2:pass}"], + "description": "while loop" + }, + "for": { + "prefix": "for", + "body": ["for ${1:value} in ${2:iterable}:", "\t${3:pass}"], + "description": "for loop" + }, + "for w/ range": { + "prefix": "forr", + "body": ["for ${1:value} in range($2):", "\t${3:pass}"], + "description": "for loop that iterates over range of integers" + }, + "with": { + "prefix": "with", + "body": ["with ${1:expression} as ${2:target}:", "\t${3:pass}"], + "description": "'with' statement" + }, + "lambda": { + "prefix": "lambda", + "body": ["lambda ${1:parameter_list}: ${2:expression}"], + "description": "lambda statement" + }, + "Function": { + "prefix": "def", + "body": ["def ${1:fname}($2):", "\t${3:pass}"], + "description": "Function definition" + }, + "Function w/ return type": { + "prefix": "deft", + "body": ["def ${1:fname}($2) -> ${3:None}:", "\t${4:pass}"], + "description": "Function definition with return type" + }, + "class": { + "prefix": "class", + "body": ["class ${1:classname}:", "\t${2:pass}"], + "description": "Class definition" + }, + "Derived class": { + "prefix": "classd", + "body": ["class ${1:classname}($2):", "\t${3:pass}"], + "description": "Class definition with inheritance" + }, + "class template": { + "prefix": "classi", + "body": [ + "class ${1:ClassName}($2):", + "\t\"\"\"${3:docstring for $1.}\"\"\"", + "\tdef __init__(self, ${4:arg}):", + "\t\t${5:super($1, self).__init__()}", + "\t\tself.$4 = $4$0" + ], + "description": "Class definition template" + }, + "Method": { + "prefix": "defs", + "body": ["def ${1:mname}(self$2):", "\t${3:pass}"], + "description": "Class method definition" + }, + "Method w/ return type": { + "prefix": "defst", + "body": ["def ${1:mname}(self$2) -> ${3:None}:", "\t${4:pass}"], + "description": "Class method definition" + }, + "property template": { + "prefix": "property", + "body": [ + "@property", + "def ${1:pname}(self):", + "\t\"\"\"${2:The $1 property.}\"\"\"", + "\t${3:return self._$1}", + "", + "@${4:$1}.setter", + "def ${5:$1}(self, value):", + "\t${6:self._$1} = value" + ], + "description": "New property: get and set via decorator" + }, + "except": { + "prefix": "except", + "body": ["except$1:", "\t${2:pass}"], + "description": "except statement" + }, + "except as": { + "prefix": "exceptas", + "body": ["except ${1:Exception} as ${2:e}:", "\t${3:raise $2}"], + "description": "'except as' statement" + }, "try/except": { - "prefix": "try/except", + "prefix": "try", "body": [ "try:", "\t${1:pass}", - "except ${2:expression} as ${3:identifier}:", - "\t${4:pass}" + "except ${2:Exception} as ${3:e}:", + "\t${4:raise $3}" ], - "description": "Code snippet for a try/except statement" - }, - "try/finally": { - "prefix": "try/finally", - "body": ["try:", "\t${1:pass}", "finally:", "\t${2:pass}"], - "description": "Code snippet for a try/finally statement" + "description": "try/except blocks" }, "try/except/else": { - "prefix": "try/except/else", + "prefix": "trya", "body": [ "try:", "\t${1:pass}", - "except ${2:expression} as ${3:identifier}:", - "\t${4:pass}", + "except ${2:Exception} as ${3:e}:", + "\t${4:raise $3}", "else:", "\t${5:pass}" ], - "description": "Code snippet for a try/except/else statement" + "description": "try/except/else blocks" }, "try/except/finally": { - "prefix": "try/except/finally", + "prefix": "tryf", "body": [ "try:", "\t${1:pass}", - "except ${2:expression} as ${3:identifier}:", - "\t${4:pass}", + "except ${2:Exception} as ${3:e}:", + "\t${4:raise $3}", "finally:", "\t${5:pass}" ], - "description": "Code snippet for a try/except/finally statement" + "description": "try/except/finally blocks" }, "try/except/else/finally": { - "prefix": "try/except/else/finally", + "prefix": "tryef", "body": [ "try:", "\t${1:pass}", - "except ${2:expression} as ${3:identifier}:", - "\t${4:pass}", + "except${2: ${3:Exception} as ${4:e}}:", + "\t${5:raise}", "else:", - "\t${5:pass}", + "\t${6:pass}", "finally:", - "\t${6:pass}" - ], - "description": "Code snippet for a try/except/else/finally statement" - }, - "def(class method)": { - "prefix": "def class method", - "body": [ - "def ${1:funcname}(self, ${2:parameter_list}):", - "\t${3:pass}" - ], - "description": "Code snippet for a class method" - }, - "def(static class method)": { - "prefix": "def static class method", - "body": [ - "@staticmethod", - "def ${1:funcname}(${2:parameter_list}):", - "\t${3:pass}" - ], - "description": "Code snippet for a static class method" - }, - "def(abstract class method)": { - "prefix": "def abstract class method", - "body": [ - "def ${1:funcname}(self, ${2:parameter_list}):", - "\traise NotImplementedError" - ], - "description": "Code snippet for an abstract class method" - }, - "lambda": { - "prefix": "lambda", - "body": ["lambda ${1:parameter_list}: ${2:expression}"], - "description": "Code snippet for a lambda statement" - }, - "if(main)": { - "prefix": "__main__", - "body": ["if __name__ == \"__main__\":", " ${1:pass}"], - "description": "Code snippet for a `if __name__ == \"__main__\": ...` block" - }, - "async/def": { - "prefix": "async/def", - "body": [ - "async def ${1:funcname}(${2:parameter_list}):", - "\t${3:pass}" - ], - "description": "Code snippet for an async statement" - }, - "async/for": { - "prefix": "async/for", - "body": ["async for ${1:target} in ${2:iter}:", "\t${3:block}"], - "description": "Code snippet for an async for statement" - }, - "async/for/else": { - "prefix": "async/for/else", - "body": [ - "async for ${1:target} in ${2:iter}:", - "\t${3:block}", - "else:", - "\t${4:block}" + "\t${7:pass}" ], - "description": "Code snippet for an async for statement with else" - }, - "async/with": { - "prefix": "async/with", - "body": ["async with ${1:expr} as ${2:var}:", "\t${3:block}"], - "description": "Code snippet for an async with statement" + "description": "try/except/else/finally blocks" }, - "add/new/cell": { - "prefix": "add/new/cell", + "Jupyter cell": { + "prefix": "#cell", "body": "# %%", - "description": "Code snippet to add a new cell" + "description": "Add a new cell" }, - "mark/markdown": { - "prefix": "mark/markdown", + "Jupyter markdown cell": { + "prefix": "#mark", "body": "# %% [markdown]", - "description": "Code snippet to add a new markdown cell" + "description": "Add a new markdown cell" } }