Visual Studio Code#

Extensions#

The list of installed extensions can be exported with

$ code --list-extensions

Extensions can be installed with

$ code --install-extension <ExtensionName>

Taken from https://stackoverflow.com/a/49398449.

The Python Extension#

With the Python extension in Visual Studio Code, it is possible to create cells in normal *.py files by putting

# %%

(or #%%) in a line. The cell can be run with Shift + Enter from within VS Code. Since this is just a plain comment, it does not change in any way, how the file behaves when it is run as a script with python <filename>.

The env File#

A plain text file can be specified that contains environment variables and their values which should be used when debugging or when running tests. The default file path is ${workspaceFolder}/.env, which is stored in the setting Python: Env File. The file format is:

# comment
ENV_VAR=VALUE

The Python Docstring Generator Extension#

Apply the following settings:

  • Set Auto Docstring: Docstring Format to google

  • Set Auto Docstring: Quote Style to '''

  • Check Auto Docstring: Start On New Line

When using Sphinx with the sphinx_autodoc_typehints extension, it is sufficient to include the types in the type hints and not necessary to include them in the docstrings as well. In the spirit of avoiding duplication, I have created a google-no-types.mustache docstring template based on NilsJPWerner’s original google.mustache:

{{! Google Docstring Template Without Type Hints }}
{{summaryPlaceholder}}

{{extendedSummaryPlaceholder}}

{{#parametersExist}}
Args:
{{#args}}
    {{var}}: {{descriptionPlaceholder}}
{{/args}}
{{#kwargs}}
    {{var}} (optional): {{descriptionPlaceholder}}. Defaults to {{&default}}.
{{/kwargs}}
{{/parametersExist}}

{{#exceptionsExist}}
Raises:
{{#exceptions}}
    {{type}}: {{descriptionPlaceholder}}
{{/exceptions}}
{{/exceptionsExist}}

{{#returnsExist}}
Returns:
{{#returns}}
    {{descriptionPlaceholder}}
{{/returns}}
{{/returnsExist}}

{{#yieldsExist}}
Yields:
{{#yields}}
    {{descriptionPlaceholder}}
{{/yields}}
{{/yieldsExist}}

When the path to this template file is specified in the Auto Docstring: Custom Template Path setting, google-style docstrings without type specifications are generated.

Tasks#

Run a task within a specific conda environment#

  • Create an entry in tasks.json

  • Activate the desired conda environment before executing the actual command, e.g.:

    "command": "conda activate spellbook && make html"
    
  • VS Code tasks are run in non-interactive shells, e.g. zsh -c. Therefore, for the conda environment activation to work, conda has to be initialized in a file that is read by the non-interactive shell, e.g. ~/.zhenv.