vimrc

My Vim configuration
git clone git://pcardenasb.com/vimrc
Log | Files | Refs | Submodules

python.snippets (6150B)


      1 snippet #! "#!/usr/bin/env python" b
      2 #!/usr/bin/env python
      3 $0
      4 endsnippet
      5 
      6 
      7 snippet ifmain "ifmain" b
      8 if __name__ == "__main__":
      9 	${1:${VISUAL:main()}}
     10 endsnippet
     11 
     12 
     13 snippet with "with" b
     14 with ${1:expr}`!p snip.rv = " as " if t[2] else ""`${2:var}:
     15 	${3:${VISUAL:pass}}
     16 $0
     17 endsnippet
     18 
     19 
     20 snippet for "for loop" b
     21 for ${1:item} in ${2:iterable}:
     22 	${3:${VISUAL:pass}}
     23 $0
     24 endsnippet
     25 
     26 # --------------------------------------------- #
     27 
     28 snippet sized "Sized" b
     29 def __len__(self):
     30 	${2:pass}
     31 endsnippet
     32 
     33 
     34 snippet sequence "Sequence" b
     35 def __getitem__(self, index):
     36 	${1:pass}
     37 
     38 def __len__(self):
     39 	${2:pass}
     40 endsnippet
     41 
     42 
     43 snippet contextmanager "AbstractContextManager" b
     44 def __enter__(self):
     45 	${1:pass}
     46 
     47 def __exit__(self, exc_type, exc_value, traceback):
     48 	${2:pass}
     49 endsnippet
     50 
     51 
     52 snippet descriptor "Descriptor" b
     53 def __get__(self, instance, owner):
     54 	${1:pass}
     55 
     56 def __set__(self, instance, value):
     57 	${2:pass}
     58 
     59 def __delete__(self, instance):
     60 	${3:pass}
     61 endsnippet
     62 
     63 
     64 snippet repr "__repr__" b
     65 def __repr__(self):
     66 	${1:pass}
     67 endsnippet
     68 
     69 # --------------------------------------------- #
     70 
     71 global !p
     72 
     73 class Arg:
     74 	def __init__(self, arg):
     75 		self.arg = arg
     76 		name_and_type = arg.split('=')[0].split(':')
     77 		self.name = name_and_type[0].strip()
     78 		self.type = name_and_type[1].strip() if len(name_and_type) == 2 else None
     79 
     80 def get_args(arglist):
     81 	args = []
     82 	n = len(arglist)
     83 	i = 0
     84 	while i < n:
     85 		l_bracket = 0
     86 		start = i
     87 		while i < n and (l_bracket > 0 or arglist[i] != ','):
     88 			if arglist[i] == '[':
     89 				l_bracket += 1
     90 			elif arglist[i] == ']' and l_bracket > 0:
     91 				l_bracket -= 1
     92 			i += 1
     93 		arg = arglist[start:i]
     94 		if arg:
     95 			args.append(Arg(arg))
     96 		i += 1
     97 
     98 	args = [arg for arg in args if arg.name != 'self']
     99 
    100 	return args
    101 endglobal
    102 
    103 
    104 snippet def "function with docstrings" b
    105 def ${1:function}(`!p
    106 if snip.indent:
    107 	snip.rv = 'self' + (", " if len(t[2]) else "")`${2:arg1: Type1}) -> ${3:None}:`!p
    108 snip.rv = ""
    109 if t[4]:
    110 	snip >> 1
    111 	snip += '"""'
    112 	snip += ""
    113 `${4:TODO: Docstring for $1.}`!p
    114 snip.rv = ""
    115 if t[4]:
    116 	snip >> 1
    117 
    118 	args = get_args(t[2])
    119 	for arg in args:
    120 		snip += ":param {}: TODO".format(arg.name)
    121 
    122 	if t[3] != "None":
    123 		snip += ":returns: TODO"
    124 
    125 	snip += '"""'
    126 `
    127 	${5:${VISUAL:pass}}
    128 endsnippet
    129 
    130 
    131 snippet defc "class method with docstrings" b
    132 @classmethod
    133 def ${1:function}(`!p
    134 if snip.indent:
    135 	snip.rv = 'cls' + (", " if len(t[2]) else "")`${2:arg1}) -> ${3:None}:
    136 	"""${4:TODO: Docstring for $1.}`!p
    137 
    138 snip.rv = ""
    139 snip >> 1
    140 
    141 args = get_args(t[2])
    142 for arg in args:
    143 	snip += ":param {}: TODO".format(arg.name)
    144 
    145 if t[3] != "None":
    146 	snip += ":returns: TODO"
    147 `
    148 	"""
    149 	${5:${VISUAL:pass}}
    150 endsnippet
    151 
    152 
    153 snippet defs "static method with docstrings" b
    154 @staticmethod
    155 def ${1:function}(${2:arg1}) -> ${3:None}:
    156 	"""${4:TODO: Docstring for $1.}`!p
    157 snip.rv = ""
    158 snip >> 1
    159 
    160 args = get_args(t[2])
    161 for arg in args:
    162 	snip += ":param {}: TODO".format(arg.name)
    163 
    164 if t[3] != "None":
    165 	snip += ":returns: TODO"
    166 `
    167 	"""
    168 
    169 	${5:${VISUAL:pass}}
    170 endsnippet
    171 
    172 
    173 snippet class "class with docstrings" b
    174 class ${1:MyClass}`!p snip.rv = "(" if t[2] else ""`${2:Parent}`!p snip.rv = ")" if t[2] else ""`:
    175 	"""${3:Docstring for $1.}`!p
    176 snip.rv = ""
    177 snip >> 1
    178 args = get_args(t[4])
    179 if args:
    180 	snip.rv += "\n" + snip.mkline("")
    181 for arg in args:
    182 	snip += ":param {}: TODO".format(arg.name)
    183 `
    184 	"""
    185 	def __init__(self`!p snip.rv = ", " if t[4] else ""`${4:arg1: Type1}) -> None:`!p
    186 snip >> 2
    187 snip.rv = ""
    188 if t[2]:
    189 	# If has parent class
    190 	snip += "super().__init__()"
    191 
    192 if args and t[2]:
    193 	snip.rv += '\n' + snip.mkline("")
    194 
    195 for arg in args:
    196 	# Initialize attributes
    197 	snip += "self._{} = {}".format(arg.name, arg.name)
    198 `
    199 
    200 		$5
    201 endsnippet
    202 
    203 
    204 snippet dcl "dataclass" b
    205 @dataclass`!p snip.rv = "(" if t[1] or t[2] else ""`${1/(.+)/(?1:frozen=)/}${1:True}`!p snip.rv = ', ' if t[1] and t[2] else ""`${2/(.+)/(?1:order=)/}${2:True}`!p snip.rv = ")" if t[1] or t[2] else ""`
    206 class ${3:MyClass}:
    207 	"""${4:Docstring for $3.}
    208 	"""
    209 	var_1: int
    210 	var_2: float
    211 	var_3: str
    212 endsnippet
    213 
    214 
    215 snippet namedtuple "namedtuple" b
    216 ${1:MyNamedTuple} = namedtuple("$1", (${2:"attr1", "attr2"}))
    217 $0
    218 
    219 endsnippet
    220 
    221 
    222 snippet if "If" b
    223 if ${1:condition}:
    224 	${2:${VISUAL:pass}}
    225 endsnippet
    226 
    227 
    228 snippet ife "If / Else" b
    229 if ${1:condition}:
    230 	${2:${VISUAL:pass}}
    231 else:
    232 	${3:pass}
    233 endsnippet
    234 
    235 
    236 snippet ifee "If / Elif / Else" b
    237 if ${1:condition}:
    238 	${2:${VISUAL:pass}}
    239 elif ${3:condition}:
    240 	${4:pass}
    241 else:
    242 	${5:pass}
    243 endsnippet
    244 
    245 
    246 snippet initpkg "Init file for package" b
    247 """${1:project_name}
    248 
    249 ${2:project_description}
    250 """
    251 
    252 __version__ = "${3:0.1}"
    253 endsnippet
    254 
    255 
    256 snippet ppe "ProcessPoolExecutor" b
    257 with concurrent.futures.ProcessPoolExecutor(max_workers=${1:4}) as executor:
    258 	${0:emap or cfac}
    259 endsnippet
    260 
    261 
    262 snippet tpe "ThreadPoolExecutor" b
    263 with concurrent.futures.ThreadPoolExecutor(max_workers=${1:4}) as executor:
    264 	${0:emap or cfac}
    265 endsnippet
    266 
    267 
    268 snippet emap "executor.map" b
    269 ${1:results} = executor.map(${2:func}, ${3:iterable})
    270 $0
    271 endsnippet
    272 
    273 
    274 snippet cfac "concurrent.futures.as_completed" b
    275 futures = (executor.submit(${1:func}, ${2:args}) for $2 in ${3:iterable})
    276 
    277 for future in concurrent.futures.as_completed(futures):
    278 	result = future.result()
    279 	$0
    280 endsnippet
    281 
    282 
    283 snippet perf_counter "time.perf_counter()" b
    284 start_time = time.perf_counter()
    285 print("Start: ${1:name}")
    286 
    287 ${2:${VISUAL:pass}}
    288 
    289 end_time = time.perf_counter()
    290 print(f"End: $1 ({end_time - start_time:.2f}s)")
    291 $0
    292 endsnippet
    293 
    294 
    295 snippet tempdir "tempfile.TemporaryDirectory()" b
    296 with tempfile.TemporaryDirectory() as ${1:tmpdirname}:
    297 	${2:${VISUAL:pass}}
    298 endsnippet
    299 
    300 
    301 snippet zipfile "zipfile.ZipFile" b
    302 with zipfile.ZipFile(${1:zip_path},"r") as zip_ref:
    303 	zip_ref.extract(member, target_dir)
    304 	zip_ref.extractall(target_dir)
    305 	$0
    306 endsnippet
    307 
    308 
    309 snippet ET "xml.etree.ElementTree" b
    310 tree = ET.parse(${1:path})
    311 ${2:root} = tree.getroot()
    312 endsnippet
    313 
    314 
    315 snippet printf "print(f'{value=}')" b
    316 print(f"{${1:value}=}")
    317 endsnippet
    318 
    319 
    320 snippet importlib "import file" b
    321 spec = importlib.util.spec_from_file_location(${1:module_name}, ${2:file_path})
    322 ${3:module} = importlib.util.module_from_spec(spec)
    323 spec.loader.exec_module($3)
    324 $0
    325 endsnippet
    326 
    327 
    328 snippet argparse "argparse" b
    329 parser = argparse.ArgumentParser()
    330 parser.add_argument(${1:"arg1"})
    331 args = parser.parse_args()
    332 endsnippet