question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Unexpected indentation behavior after latest update

See original GitHub issue

Environment data

  • VS Code version: 1.36.1
  • Extension version (available under the Extensions sidebar): 2019.8.29288 (6 August 2019)
  • OS and version: Ubuntu 18.04.1
  • Python version (& distribution if applicable, e.g. Anaconda): 3.6.8
  • Type of virtual environment used (N/A | venv | virtualenv | conda | …): N/A
  • Relevant/affected Python packages and their versions: N/A

Expected behaviour

When moving a line up or down (using the editor.action.moveLinesDownAction and editor.action.moveLinesUpAction actions), the following should happen:

  • Line being moved is automatically indented according to the indentation level of its context (i.e. the line(s) above it)
  • The lines surrounding the line being moved, should be unaffected by the line being moved.

Actual behaviour

When moving a line up or down, the indentation levels of the lines surrounding it are wrongfully affected.

Steps to reproduce:

See GIF screenshot below. The Baz class is wrongfully indented one level to the right, when a line was begin moved through it: indentation

move_to_end


class Foo:
    def __init__(self):
        pass

    def bar(self):
        pass


class Baz:
    pass



Logs

Output for Python in the Output panel (ViewOutput, change the drop-down the upper-right of the Output panel to Python)

User belongs to experiment group 'ShowPlayIcon - start'
> conda --version
> pyenv root
> python3.7 -c "import sys;print(sys.executable)"
> python3.6 -c "import sys;print(sys.executable)"
> python3 -c "import sys;print(sys.executable)"
> python2 -c "import sys;print(sys.executable)"
> python -c "import sys;print(sys.executable)"
> python -c "import sys;print(sys.executable)"
> conda info --json
Starting Jedi Python language engine.
> conda info --json
> conda --version
> /usr/bin/python3 -c "import sys;print(sys.prefix)"
cwd: ~/.vscode/extensions/ms-python.python-2019.8.29288/out/client
> /usr/bin/python3 -c "import sys;print(sys.prefix)"
cwd: ~/.vscode/extensions/ms-python.python-2019.8.29288/out/client
> /usr/bin/python3 -c "import sys;print(sys.executable)"
cwd: ~/.vscode/extensions/ms-python.python-2019.8.29288/out/client
> /usr/bin/python3 -c "import sys;print(sys.executable)"
cwd: ~/.vscode/extensions/ms-python.python-2019.8.29288/out/client
> /usr/bin/python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
cwd: ~/.vscode/extensions/ms-python.python-2019.8.29288/out/client
> /usr/bin/python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
cwd: ~/.vscode/extensions/ms-python.python-2019.8.29288/out/client
> /usr/bin/python3 -m site --user-site
cwd: ~/.vscode/extensions/ms-python.python-2019.8.29288/out/client
> /usr/bin/python3 -m site --user-site
cwd: ~/.vscode/extensions/ms-python.python-2019.8.29288/out/client
> /usr/bin/python3 completion.py
cwd: ~/.vscode/extensions/ms-python.python-2019.8.29288/pythonFiles
> /usr/bin/python3 completion.py
cwd: ~/.vscode/extensions/ms-python.python-2019.8.29288/pythonFiles
> /usr/bin/python3 -m pylint --disable=all --enable=F,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,unused-wildcard-import,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode,E0001,E0011,E0012,E0100,E0101,E0102,E0103,E0104,E0105,E0107,E0108,E0110,E0111,E0112,E0113,E0114,E0115,E0116,E0117,E0118,E0202,E0203,E0211,E0213,E0236,E0237,E0238,E0239,E0240,E0241,E0301,E0302,E0303,E0401,E0402,E0601,E0602,E0603,E0604,E0611,E0632,E0633,E0701,E0702,E0703,E0704,E0710,E0711,E0712,E1003,E1101,E1102,E1111,E1120,E1121,E1123,E1124,E1125,E1126,E1127,E1128,E1129,E1130,E1131,E1132,E1133,E1134,E1135,E1136,E1137,E1138,E1139,E1200,E1201,E1205,E1206,E1300,E1301,E1302,E1303,E1304,E1305,E1306,E1310,E1700,E1701 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text ~/Desktop/indent.py
cwd: ~/Desktop
> /usr/bin/python3 -m pylint --disable=all --enable=F,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,unused-wildcard-import,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode,E0001,E0011,E0012,E0100,E0101,E0102,E0103,E0104,E0105,E0107,E0108,E0110,E0111,E0112,E0113,E0114,E0115,E0116,E0117,E0118,E0202,E0203,E0211,E0213,E0236,E0237,E0238,E0239,E0240,E0241,E0301,E0302,E0303,E0401,E0402,E0601,E0602,E0603,E0604,E0611,E0632,E0633,E0701,E0702,E0703,E0704,E0710,E0711,E0712,E1003,E1101,E1102,E1111,E1120,E1121,E1123,E1124,E1125,E1126,E1127,E1128,E1129,E1130,E1131,E1132,E1133,E1134,E1135,E1136,E1137,E1138,E1139,E1200,E1201,E1205,E1206,E1300,E1301,E1302,E1303,E1304,E1305,E1306,E1310,E1700,E1701 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text ~/Desktop/indent.py
cwd: ~/Desktop
> /usr/bin/python3 -c "import pylint"
> /usr/bin/python3 -c "import pylint"
> /usr/bin/python3 -c "import pylint"
> /usr/bin/python3 -c "import pylint"

Linter 'pylint' is not installed. Please install it or select another linter".
Error: Module 'pylint' not installed.

Output from Console under the Developer Tools panel (toggle Developer Tools on under Help; turn on source maps to make any tracebacks be useful by running Enable source map support for extension debugging)

See attached .log file:
[vscode_devtools_console.log](https://github.com/microsoft/vscode-python/files/3476540/vscode_devtools_console.log)


Issue Analytics

  • State:closed
  • Created 4 years ago
  • Reactions:19
  • Comments:20 (5 by maintainers)

github_iconTop GitHub Comments

9reactions
kbdcommented, Aug 7, 2019

I was going to open a new ticket about unexpected indentation behavior, but I think it would be a dupe of this.

The extension now tries to indent consistently with what’s above it, which causes errors. Here’s a video of the change in behavior between the last version of the extension and current:

python-extension-auto-indent

6reactions
jkyeungcommented, Aug 9, 2019

I’m adding my voice to the chorus. (I’m glad there’s a chorus to join!)

Because Python has semantic indentation and no end-block delimiters, it is absolutely critical that the editor doesn’t try to be too “smart”.

Some of the seemingly new behaviors described in this thread are actually things that VS Code users in general have enjoyed/endured for quite a while now. For example, there’s this thread where they discussed the indent-on-paste behavior. It was opened in 2016 and closed in 2017.

In my view, part of the purpose of this extension is to fight against some of the “helpful behaviors” provided by VS Code. What might be genuinely helpful in other languages can actually be actively unhelpful in Python.

Please dumb the indentation back down to where it was! (Or at least provide settings that allow us to choose how dumb we want it.)

Read more comments on GitHub >

github_iconTop Results From Across the Web

Unexpected indentation error, or, is it likely the interpreter is ...
I'll start by saying I know it's almost certain it's me, but when I test a program I'm writing it's exhibiting some strange...
Read more >
What should I do with "Unexpected indent" in Python?
If you got an unexpected indent and you see that all the code is perfectly indented, try opening it with another editor and...
Read more >
Unexpected indentation behaviour when I set the terminal to ...
Based on what I have read, when a terminal is in raw mode, the characters are not processed by the terminal driver, but...
Read more >
Text editor: unexpected indentation and space in case labels ...
In the following example, there is unexpected indentation of the case labels and unexpected space between the cast expression and the following colon....
Read more >
Unexpected Indent Error in Visual Studio Python Interactive ...
All the indents are consistent, either 4 blank spaces or a tab of length 4. I've tried None, Block, and Smart for indenting...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found