Skip to content

pythonREPLSmartSend does not fully close a code block with a dict or set at the end #22469

@GriceTurrble

Description

@GriceTurrble

Type: Bug

  1. Opt into the Python experiment pythonREPLSmartSend.

  2. Define a small class with one method that returns a dict:

    class Something:
        def method():
            return {"something": "abc"}
  3. Place the cursor at the end of the first line, class Something:

  4. Press Shift-Enter

The result sent to the REPL is the full definition, but it is missing the last trailing newline:

>>> class Something:
...     def method():
...         return {"something": "abc"}
... # cursor is here!

This means chaining the next line of code can result in an indentation error, because the REPL has not fully closed this multiline entry:

>>> class Something:
...     def method():
...         return {"something": "abc"}
... a = {"something_else": "abc"}
  File "<stdin>", line 4
    a = {"something_else": "abc"}
    ^
SyntaxError: invalid syntax
>>> 

Notably, I've reproduced this when the return statement returns a dict. The issue is not reproduced in the case of return "abc" or return 123.

Multiline dicts also cause the issue:

>>> class Something:
...     def method():
...         return {
...             "abc": "def",
...             "cdf": "what",
...         }
... # cursor is here

Parentheses used for multiine strings do not:

>>> class Something:
...     def method():
...         return (
...             "abc"
...             "cdf"
...         )
... 
>>> # cursor is here

VS Code version: Code 1.84.0 (Universal) (d037ac076cee195194f93ce6fe2bdfe2969cc82d, 2023-11-01T11:30:19.406Z)
OS version: Darwin arm64 22.1.0
Modes:

System Info
Item Value
CPUs Apple M1 Pro (10 x 24)
GPU Status 2d_canvas: enabled
canvas_oop_rasterization: enabled_on
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
video_decode: enabled
video_encode: enabled
vulkan: disabled_off
webgl: enabled
webgl2: enabled
webgpu: enabled
Load (avg) 9, 8, 7
Memory (System) 16.00GB (0.12GB free)
Process Argv
Screen Reader no
VM 0%
Extensions (53)
Extension Author (truncated) Version
vscode-sqlite ale 0.14.1
vscode-django bat 1.14.0
markdown-mermaid bie 1.20.0
markdown-preview-github-styles bie 2.0.3
prettier-toml bod 0.1.0
ruff cha 2023.44.0
npm-intellisense chr 1.4.5
csharpier-vscode csh 1.3.6
vscode-eslint dba 2.4.2
gitlens eam 14.4.1
vsc-material-theme Equ 33.10.5
vsc-material-theme-icons equ 3.1.4
prettier-vscode esb 10.1.0
vscode-reveal evi 4.3.3
codespaces Git 1.16.2
vscode-github-actions git 0.26.2
vscode-pull-request-github Git 0.76.0
cloudcode goo 2.1.1
gc-excelviewer Gra 4.2.58
terraform has 2.28.2
prettier-sql-vscode inf 1.6.0
git-graph mhu 1.30.0
vscode-docker ms- 1.27.0
csdevkit ms- 1.0.14
csharp ms- 2.9.20
dotnet-interactive-vscode ms- 1.0.4517010
vscode-dotnet-runtime ms- 2.0.0
vscode-kubernetes-tools ms- 1.3.15
black-formatter ms- 2023.4.1
isort ms- 2023.10.1
mypy-type-checker ms- 2023.4.0
python ms- 2023.20.0
vscode-pylance ms- 2023.10.50
jupyter ms- 2023.10.1003070148
jupyter-keymap ms- 1.1.2
jupyter-renderers ms- 1.0.17
vscode-jupyter-cell-tags ms- 0.1.8
vscode-jupyter-slideshow ms- 0.1.5
remote-containers ms- 0.321.0
remote-wsl ms- 0.81.8
powershell ms- 2023.8.0
vscode-github-issue-notebooks ms- 0.0.130
vsliveshare ms- 1.0.5892
vsliveshare-pack ms- 0.4.0
jekyll ost 0.1.1
postman-for-vscode Pos 0.13.1
vscode-commons red 0.0.6
vscode-yaml red 1.14.0
svelte-vscode sve 107.12.0
even-better-toml tam 0.19.2
tilt Tch 1.0.9
tiltfile til 0.0.3
markdown-all-in-one yzh 3.5.1

(5 theme extensions excluded)

Metadata

Metadata

Assignees

Labels

area-replbugIssue identified by VS Code Team member as probable bugverification-neededVerification of issue is requestedverifiedVerification succeeded

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions