Subject: bug#60142: 28.1; python.el Incorrect region when python-shell-send-region from indented code

From: Eli Zaretskii <[email-masked]>
Date: Sun, 18 Dec 2022 12:39:01 +0200

> Date: Fri, 16 Dec 2022 23:54:23 +0100
> From: pmercatoris <[email-masked]>
> 
> I am unable to get correct behavious when sending a region from indented code
> to the python shell. Consider this python code:
> 
> ```python
> if True:
>     if True:
>         a = "test"
> ```
> 
> If I select the first `True` and `python-shell-send-region`, it will
> correctly send it to the consol and print `True`.
> 
> Now if I do the same thing with the second `True` it will throw an
> error: `IndentationError: expected an indented block after 'if'
> statement on line 1` Although it would also reffer to unexpected block
> after `if` even it it were `for`, `try`, ...
> 
> If I select the `a` or `a = "test"` it will correctly send it to the
> console, however it won't echo the evaluation of the statement.
> 
> If I select the string "test" and send, it will throw the same error as
> the second True.
> 
> My python config is very minimal:
> 
>   (use-package python
>     :ensure nil
>     :mode
>     ("\\.py\\'" . python-mode)
> 
>     :init
>     (setq-default indent-tabs-mode nil)
> 
>     :config
>     (setq python-indent-offset 4
>           python-indent-guess-indent-offset-verbose nil
>           )
> 
>     (setq python-shell-interpreter "jupyter"
>           python-shell-interpreter-args "console --simple-prompt"
>           python-shell-prompt-detect-failure-warning nil)
> 
>     (add-to-list 'python-shell-completion-native-disabled-interpreters
>                  "jupyter"))

Could you two please look into this?  It sounds to me like Emacs works
as expected here, but I'm not an expert on Python and our interfaces
with it.

Thanks.