Skip to content

tintinweb/vscode-vyper

Repository files navigation

get in touch with Consensys Diligence   and   get in touch with Consensys Diligence
[ 🌐 📩 🔥 ]

vscode-Vyper

img

Ethereum Vyper language support for Visual Studio Code

Marketplace: ext install tintinweb.vscode-vyper

Also available on vscode.dev! (compilation not yet supported)

Features

Passive Features

  • Vyper syntax highlighting support

Active Features

Note: Active features can be disabled by setting SettingsVyperMode: Active to false.

  • Provides Security augmented decorations (SettingsVyperDecoration: Enable)
  • Provides Hover information (SettingsVyperHover: Enable)
  • Provides Code snippets for common language constructs
  • Integrates with the vyper compiler
    • automatically compile contracts on save (SettingsVyperCompile: On Save)
    • compilation can be triggered by executing a vscode command (cmd + shift + pVyper: Compile)
    • vyper location/command can be customized (default assumes vyper is in PATH) (SettingsVyperCommand)

Requirements

  • It is assumed that vyper is installed and generally available on the system (pip3 install vyper). In case vyper is not available in path or called in a virtualenv configure the vyper command in SettingsVyperCommand

Tour

Syntax Highlighting

VSCode Light+ (default light)

theme-light

Solidity Visual Auditor - Dark

theme-light

Compiler Errors and Details

image

Hover information

image

Security Augmented Decorations - Auditor Mode

image

Snippets

  • Quickly create constructor, fallback function, methods, structs, ... as you type. Select the snippet from the suggestion box. See snippets/ for a list of available snippets.
  • start typing ...

image

  • creates a template constructor after selecting it from the suggestion box.

image

Extension Settings

settings

FAQ

  • Q: I get an error running vyper on my macbook with M1/M2 chipset.

  • A: The extension executes the vyper compiler in a /bin/sh shell that may not have all the customizations you are using in your day-to-day shell/terminal. As a workaround, I suggest to set the setting:vyper.command to arch -x86_64 vyper. see #18

  • Q: My project uses Vyper 0.3.x and import some interfaces from other contracts. but the extension does not recognize them and output FileNotFoundError: Cannot locate interface 'interface/my_interface{.vy,.json}.

  • A The extension compiles your file with the command vyper. You should set the setting: vyper.command to vyper -p path/to/your/project/directory to make the compiler aware of the interfaces in your project.

  • Q My multi-module project uses Vyper 0.4.x and while the extension does not report compilation error for any files, when compiling the project with the Vyper cli or some framework such as ape, foundry or titanoboa, it fails with some issue about modules usage/initialization.

  • A In 0.4.x, A Vyper modules might be valid when being imported but not a valid standalone contracts to compile into bytecode. Hence the extension stops the compilation at the ``annotated_ast` phase, before the global constraint checker. For more info see vyperlang/vyper#3810.

Developer Notes

  • install vyper pip3 install vyper
  • use the script in ./scripts/fetch_vyper_language_spec.py or run npm run fetchGrammar to merge the python tmlanguage spec with vyper language specifics.

Release Notes

see CHANGELOG

Contact / Maintainer