if lazyvim_docs then -- LSP Server to use for Python. -- Set to "basedpyright" to use basedpyright instead of pyright. vim.g.lazyvim_python_lsp = "pyright" vim.g.lazyvim_python_ruff = "ruff_lsp" end local lsp = vim.g.lazyvim_python_lsp or "pyright" local ruff = vim.g.lazyvim_python_ruff or "ruff_lsp" return { recommended = function() return LazyVim.extras.wants({ ft = "python", root = { "pyproject.toml", "setup.py", "setup.cfg", "requirements.txt", "Pipfile", "pyrightconfig.json", }, }) end, { "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = { "ninja", "rst" } }, }, { "neovim/nvim-lspconfig", opts = { servers = { pyright = { enabled = lsp == "pyright", }, basedpyright = { enabled = lsp == "basedpyright", }, [lsp] = { enabled = true, }, ruff_lsp = { enabled = ruff == "ruff_lsp", }, ruff = { enabled = ruff == "ruff", }, [ruff] = { keys = { { "co", LazyVim.lsp.action["source.organizeImports"], desc = "Organize Imports", }, }, }, }, setup = { [ruff] = function() LazyVim.lsp.on_attach(function(client, _) -- Disable hover in favor of Pyright client.server_capabilities.hoverProvider = false end, ruff) 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() require("dap-python").setup(LazyVim.get_pkg_path("debugpy", "/venv/bin/python")) end, }, }, { "linux-cultist/venv-selector.nvim", branch = "regexp", -- Use this branch for the new version cmd = "VenvSelect", enabled = function() return LazyVim.has("telescope.nvim") end, opts = { settings = { options = { notify_user_on_venv_activation = true, }, }, }, -- Call config for python files and load the cached venv automatically ft = "python", keys = { { "cv", ":VenvSelect", desc = "Select VirtualEnv", ft = "python" } }, }, { "hrsh7th/nvim-cmp", opts = function(_, opts) opts.auto_brackets = opts.auto_brackets or {} table.insert(opts.auto_brackets, "python") end, }, }