Subject: bug#79036: [PATCH] Fix pdb tracking for remote filenames

From: Liu Hui <[email-masked]>
Date: Thu, 17 Jul 2025 21:34:14 +0800

On Thu, Jul 17, 2025 at 7:10 PM Michael Albinus <[email-masked]> wrote:
>
> Liu Hui <[email-masked]> writes:
>
> Hi,
>
> > Because file-name may be not the actual file. file-name is actually
> > extracted from the pdb output in the python shell, e.g.
> >
> >     >>> f()
> >     > /ssh:server:/tmp/test.py(3)f()
> >     (Pdb)
> >
> > Generally, pdb shows local file names. But if we send the code using
> > C-c C-c from python buffers (i.e. step 3), python-send-string passes
> > (buffer-file-name), which may be a remote file name, to python
> > process. Therefore, pdb may also shows remote file names.
>
> This is an error. python-send-string shall send (file-local-name (buffer-file-name)) .

Why is it an error? In python-shell-send-string, (buffer-file-name) is
finally passed to python's compile function in __PYTHON_EL_eval or
__PYTHON_EL_eval_file, and is just used for run-time error messages
according to the docstring.

   The filename argument should give the file from which the code was
   read; pass some recognizable value if it wasn’t read from a file
   ('<string>' is commonly used).

I think it is suitable to use a remote filename or even buffer name as
long as it helps Emacs find the source.