return { { "nvim-treesitter/nvim-treesitter", opts = function(_, opts) if type(opts.ensure_installed) == "table" then vim.list_extend(opts.ensure_installed, { "ninja", "python", "rst", "toml" }) end end, }, { "neovim/nvim-lspconfig", opts = { servers = { pyright = {}, ruff_lsp = { keys = { { "co", function() vim.lsp.buf.code_action({ apply = true, context = { only = { "source.organizeImports" }, diagnostics = {}, }, }) end, desc = "Organize Imports", }, }, }, }, setup = { ruff_lsp = function() require("lazyvim.util").lsp.on_attach(function(client, _) if client.name == "ruff_lsp" then -- Disable hover in favor of Pyright client.server_capabilities.hoverProvider = false end end) end, }, }, }, { "nvim-neotest/neotest", optional = true, dependencies = { "nvim-neotest/neotest-python", }, opts = { adapters = { ["neotest-python"] = { -- Here you can specify the settings for the adapter, i.e. -- runner = "pytest", -- python = ".venv/bin/python", }, }, }, }, { "mfussenegger/nvim-dap", optional = true, dependencies = { "mfussenegger/nvim-dap-python", -- stylua: ignore keys = { { "dPt", function() require('dap-python').test_method() end, desc = "Debug Method", ft = "python" }, { "dPc", function() require('dap-python').test_class() end, desc = "Debug Class", ft = "python" }, }, config = function() local path = require("mason-registry").get_package("debugpy"):get_install_path() require("dap-python").setup(path .. "/venv/bin/python") end, }, }, { "linux-cultist/venv-selector.nvim", cmd = "VenvSelect", opts = function(_, opts) if require("lazyvim.util").has("nvim-dap-python") then opts.dap_enabled = true end return vim.tbl_deep_extend("force", opts, { name = { "venv", ".venv", "env", ".env", }, }) end, keys = { { "cv", ":VenvSelect", desc = "Select VirtualEnv" } }, }, }