Skip to content

An extension for nvim-dap, providing default configurations for python and methods to debug individual test methods or classes.

License

Notifications You must be signed in to change notification settings

HudsonMC16/nvim-dap-python

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nvim-dap-python

An extension for nvim-dap providing default configurations for python and methods to debug individual test methods or classes.

Installation

If you want to use the test runner functionality, it additionally requires a tree sitter parser for Python.

Debugpy

It is recommended to install debugpy into a dedicated virtualenv. To do so:

mkdir .virtualenvs
cd .virtualenvs
python -m venv debugpy
debugpy/bin/python -m pip install debugpy

The debugger will automatically pick-up another virtual environment if it is activated before neovim is started.

Tree-sitter

Install either:

  • Via :TSInstall python of nvim-treesitter
  • Compile the parser from tree-sitter-python and copy it into .config/nvim/parser/:
    • git clone https://github.com/tree-sitter/tree-sitter-python.git
    • cd tree-sitter-python
    • cc -O2 -o ~/.config/nvim/parser/python}.so -I./src src/parser.c src/scanner.cc -shared -Os -lstdc++ -fPIC

Usage

  1. Call setup in your init.vim to register the adapter and configurations:
lua require('dap-python').setup('~/.virtualenvs/debugpy/bin/python')

The argument to setup is the path to the python installation which contains the debugpy module.

  1. Use nvim-dap as usual.
  • Call :lua require('dap').continue() to start debugging.
  • See :help dap-mappings and :help dap-api.
  • Use :lua require('dap-python').test_method() to debug the closest method above the cursor.

Supported test frameworks are unittest and pytest. It defaults to using unittest. To configure pytest set the test runner like this:

lua require('dap-python').test_runner = 'pytest'

Mappings

nnoremap <silent> <leader>dn :lua require('dap-python').test_method()<CR>
nnoremap <silent> <leader>df :lua require('dap-python').test_class()<CR>
vnoremap <silent> <leader>ds <ESC>:lua require('dap-python').debug_selection()<CR>

Looking for Maintainers

I'm looking for co-maintainers who are:

  • Ensuring test runners like pytest are supported as well.
  • Ensuring Windows is well supported

Alternatives

A test runner building upon vim-test with nvim-dap support. Aims to work for all python runners.

About

An extension for nvim-dap, providing default configurations for python and methods to debug individual test methods or classes.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 100.0%