{"format":1,"manifest":{"name":"python-snippets","publisher":"vyloxi","version":"1.1.0","displayName":"Python Snippets","description":"Functions, classes, dataclasses, context managers, comprehensions, pytest and asyncio.","engines":{"ferrum":"^0.1.0"},"categories":["Snippets"],"icon":"icon.png","repository":"https://github.com/voukengdongmofrankysteve/ferrum-market","license":"MIT","contributes":{"snippets":[{"language":"Python","path":"snippets/python.json"}]}},"files":{"icon.png":{"encoding":"base64","content":"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"},"snippets/python.json":{"encoding":"utf8","content":"{\n  \"Main guard\": {\n    \"prefix\": \"main\",\n    \"body\": [\n      \"def main() -> None:\",\n      \"\\t$0\",\n      \"\",\n      \"\",\n      \"if __name__ == \\\"__main__\\\":\",\n      \"\\tmain()\"\n    ],\n    \"description\": \"if __name__ == \\\"__main__\\\"\"\n  },\n  \"Function with types\": {\n    \"prefix\": \"def\",\n    \"body\": [\n      \"def ${1:name}(${2:arg}: ${3:str}) -> ${4:None}:\",\n      \"\\t\\\"\\\"\\\"${5:Summary.}\\\"\\\"\\\"\",\n      \"\\t$0\"\n    ],\n    \"description\": \"A typed function\"\n  },\n  \"Class\": {\n    \"prefix\": \"cls\",\n    \"body\": [\n      \"class ${1:Name}:\",\n      \"\\tdef __init__(self, ${2:arg}) -> None:\",\n      \"\\t\\tself.${2:arg} = ${2:arg}\",\n      \"\",\n      \"\\t$0\"\n    ],\n    \"description\": \"A class\"\n  },\n  \"Dataclass\": {\n    \"prefix\": \"dc\",\n    \"body\": [\n      \"from dataclasses import dataclass\",\n      \"\",\n      \"\",\n      \"@dataclass\",\n      \"class ${1:Name}:\",\n      \"\\t${2:field}: ${3:str}\"\n    ],\n    \"description\": \"A dataclass\"\n  },\n  \"With open\": {\n    \"prefix\": \"wo\",\n    \"body\": [\n      \"with open(${1:path}, encoding=\\\"utf-8\\\") as ${2:f}:\",\n      \"\\t$0\"\n    ],\n    \"description\": \"Open a file\"\n  },\n  \"Try except\": {\n    \"prefix\": \"tc\",\n    \"body\": [\n      \"try:\",\n      \"\\t$1\",\n      \"except ${2:Exception} as ${3:e}:\",\n      \"\\t$0\"\n    ],\n    \"description\": \"try / except\"\n  },\n  \"List comprehension\": {\n    \"prefix\": \"lc\",\n    \"body\": [\n      \"[${1:x} for ${1:x} in ${2:items} if ${3:True}]\"\n    ],\n    \"description\": \"A list comprehension\"\n  },\n  \"Dict comprehension\": {\n    \"prefix\": \"dcmp\",\n    \"body\": [\n      \"{${1:k}: ${2:v} for ${1:k}, ${2:v} in ${3:items}}\"\n    ],\n    \"description\": \"A dict comprehension\"\n  },\n  \"Argparse\": {\n    \"prefix\": \"arg\",\n    \"body\": [\n      \"import argparse\",\n      \"\",\n      \"parser = argparse.ArgumentParser(description=\\\"${1:What it does}\\\")\",\n      \"parser.add_argument(\\\"${2:path}\\\", help=\\\"${3:help}\\\")\",\n      \"args = parser.parse_args()\"\n    ],\n    \"description\": \"An argparse parser\"\n  },\n  \"Pytest test\": {\n    \"prefix\": \"test\",\n    \"body\": [\n      \"def test_${1:name}():\",\n      \"\\tassert $0\"\n    ],\n    \"description\": \"A pytest test\"\n  },\n  \"Pytest fixture\": {\n    \"prefix\": \"fix\",\n    \"body\": [\n      \"import pytest\",\n      \"\",\n      \"\",\n      \"@pytest.fixture\",\n      \"def ${1:name}():\",\n      \"\\treturn $0\"\n    ],\n    \"description\": \"A pytest fixture\"\n  },\n  \"Async main\": {\n    \"prefix\": \"amain\",\n    \"body\": [\n      \"import asyncio\",\n      \"\",\n      \"\",\n      \"async def main() -> None:\",\n      \"\\t$0\",\n      \"\",\n      \"\",\n      \"asyncio.run(main())\"\n    ],\n    \"description\": \"An asyncio entry point\"\n  },\n  \"Logging\": {\n    \"prefix\": \"log\",\n    \"body\": [\n      \"import logging\",\n      \"\",\n      \"log = logging.getLogger(__name__)\"\n    ],\n    \"description\": \"Module logger\"\n  },\n  \"Context manager\": {\n    \"prefix\": \"ctx\",\n    \"body\": [\n      \"class ${1:Name}:\",\n      \"\\tdef __enter__(self):\",\n      \"\\t\\treturn self\",\n      \"\",\n      \"\\tdef __exit__(self, exc_type, exc, tb) -> None:\",\n      \"\\t\\t$0\"\n    ],\n    \"description\": \"A context manager class\"\n  },\n  \"Pathlib read\": {\n    \"prefix\": \"pl\",\n    \"body\": [\n      \"from pathlib import Path\",\n      \"\",\n      \"text = Path(${1:\\\"file.txt\\\"}).read_text(encoding=\\\"utf-8\\\")\"\n    ],\n    \"description\": \"Read a file with pathlib\"\n  }\n}\n"},"README.md":{"encoding":"utf8","content":"# Python Snippets\n\nFunctions, classes, dataclasses, context managers, comprehensions, pytest and asyncio.\n\nType a prefix and press Tab. 15 snippets.\n\n| Language | Prefix | What it inserts |\n| --- | --- | --- |\n| Python | `main` | if __name__ == \"__main__\" |\n| Python | `def` | A typed function |\n| Python | `cls` | A class |\n| Python | `dc` | A dataclass |\n| Python | `wo` | Open a file |\n| Python | `tc` | try / except |\n| Python | `lc` | A list comprehension |\n| Python | `dcmp` | A dict comprehension |\n| Python | `arg` | An argparse parser |\n| Python | `test` | A pytest test |\n| Python | `fix` | A pytest fixture |\n| Python | `amain` | An asyncio entry point |\n| Python | `log` | Module logger |\n| Python | `ctx` | A context manager class |\n| Python | `pl` | Read a file with pathlib |\n\nThis extension runs no code and asks for no permissions.\n"}}}