Skip to content

Format Document not working (autopep8, python, vscode) #6495

Closed

Description

Environment data

  • VS Code version: 1.36.0
  • Extension version (available under the Extensions sidebar): 2019.6.22090
  • OS and version: macOS, Mojave 10.14.5
  • Python version (& distribution if applicable, e.g. Anaconda): Python 2.7.16
  • Type of virtual environment used (N/A | venv | virtualenv | conda | ...): N/A
  • Relevant/affected Python packages and their versions:
    autopep8 1.4.4
    pycodestyle: 2.5.0
  • Jedi or Language Server? (i.e. what is "python.jediEnabled" set to; more info How to update the language server to the latest stable version #3977): Jedi Enabled is "checked" (so, True?)

Expected behaviour

When I run "Format Document", the file is formatted.

Actual behaviour

When I run "Format Document", the file is not formatted.

Steps to reproduce:

  1. Open a Workspace
  2. Open up a Python File in the Workspace
  3. Right Click -> Format Document

Current Settings:

User Settings (showing only Python related settings):

{
    .
    .
    .
    "workbench.statusBar.visible": true,
    "files.autoSave": "afterDelay",
    "editor.formatOnPaste": true,
    "editor.formatOnSave": true,
    "editor.formatOnSaveTimeout": 1500,
    "python.pythonPath": "/usr/local/bin/python",
    "python.formatting.provider": "autopep8",
    "python.formatting.autopep8Path": "/usr/local/lib/python2.7/site-packages/autopep8.py",
    "python.formatting.autopep8Args": [
        "--max-line-length",
        "70",
        "--aggressive",
        "--aggressive",
        "--in-place"
    ],
    "python.linting.pylintArgs": [
        "--init-hook='import sys; sys.path.append(\"/Users/bagursreenivasamurth/OneDrive - F5 Networks/dev/godev/src/gitswarm.f5net.com/proj/tests/libs\")'"
    ]
}

Workspace Settings:

{
	"folders": [
		{
			"path": "."
		},
		{
			"path": "godev"
		}
	],
	"settings": {
		"python.pythonPath": "/usr/local/bin/python",
	}
}

Extensions:

Extensions

What I have already tried:

  1. Ensured autopep8 is installed correctly to py2.7 : pip2 install --upgrade autopep8
  2. The interpreter seems to be correctly pointing to py2.7 too
    py27
  3. This works:
    /usr/local/lib/python2.7/site-packages/autopep8.py --max-line-length 60 --in-place --aggressive --aggressive test.py
  4. This works too:
    python -m autopep8 --max-line-length 60 --in-place --aggressive --aggressive test.py
  5. autopep8 imported in python interpreter is the same as the one pointing in vscode python.formatting.autopep8Path setting:
$ python
Python 2.7.16 (default, Apr 12 2019, 15:32:40) 
[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.46.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import autopep8
>>> autopep8.__file__
'/usr/local/lib/python2.7/site-packages/autopep8.pyc


vscode setting:
 "python.formatting.autopep8Path": "/usr/local/lib/python2.7/site-packages/autopep8.py"
  1. Uninstalled all extensions, reloaded. Reinstalled all extensions.
  • When I had uninstalled all extensions, including Python. On "Format Document", I got a prompt asking me to choose formatter.
  • After reinstalling all extensions, including Python. On "Format Document", I get no prompt. I'm guessing it is honoring my user settings.
    onFormatSave-disabled-extensions

Meanwhile,

$ which python
/usr/local/bin/python

$ python --version
Python 2.7.16

Logs

  1. No output in "Output" when I run "Format Document"
  2. Console log on Developer Tools on "Format Document"
    onFormatDocument

Activity

  1. added
    triage-neededNeeds assignment to the proper sub-team
    bugIssue identified by VS Code Team member as probable bug
    on Jul 8, 2019
  2. coldino commented on Jul 10, 2019

    @coldino
  3. ghost removed
    triage-neededNeeds assignment to the proper sub-team
    on Jul 10, 2019
  4. sanathkumarbs commented on Jul 11, 2019

    @sanathkumarbs
    Author
  5. DonJayamanne commented on Jul 11, 2019

    @DonJayamanne

    "python.formatting.autopep8Path": "/usr/local/lib/python2.7/site-packages/autopep8.py"

    Please remove the above setting, and then select the required interpreter from the statusbar or using the command Python: Select Interpreter. (using the approach you have used might not always work as the file is a .py file and not an executable. We expect autopep8Path to be an executable)

    Not 100% certain this is the same issue, but I am seeing similar behaviour with the yapf formatter - but only in certain sub-directories of a project.

    coldino Please create a separate issue if it still persists.

  6. sanathkumarbs commented on Jul 11, 2019

    @sanathkumarbs
    Author

    Don Jayamanne (@DonJayamanne) I removed python.formatting.autopep8Path and tried Format Document that didn't do anything.

    I just started removing each of my setting and was just left with:

        "python.formatting.autopep8Args": [
            "--max-line-length",
            "70",
            "--aggressive",
            "--aggressive",
            "--in-place"
        ]
    

    Looks like the issue was in using --in-place, as soon as I got rid of the --in-place arg - voila everything started working!

    Not really sure why that was causing the issue. Also, I'm a tad bit confused why the console log never showed this issue.

  7. DonJayamanne commented on Jul 12, 2019

    @DonJayamanne

    Thanks for getting back. When you use In-place then no response is sent as the output, hence it's assumed that there's nothing to be formatted (i.e. code has already been formatted).

    Closing as this issue has been resolved.

  8. ghost removed on Jul 12, 2019
  9. sanathkumarbs commented on Jul 12, 2019

    @sanathkumarbs
    Author

    Thanks, Don Jayamanne (@DonJayamanne). Could there be some additional checks to catch this issue? Possibly log in console with an error/warning?

    Or mention about this in the docs?

  10. locked as resolved and limited conversation to collaborators on Jul 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bugIssue identified by VS Code Team member as probable bug

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions