The VS Code extension that web2py never had.
Autocomplete · Hover docs · Go to Definition · Typo detection
One index per application. Zero configuration.
web2py injects db, session, request, response, auth, T, and hundreds of other names into every controller and model at runtime. No editor understands this — Pylance flags everything red, autocomplete offers nothing, and Go to Definition doesn't work.
This extension fixes all of it. It indexes your web2py project the way web2py itself sees it, and gives you the IDE experience every other framework gets out of the box.
| You type | You get |
|---|---|
db. |
Every table in the current application |
db.employee. |
Fields with type, requires, and default value |
db[t][f]. |
Full Field API — belongs, lower, cast, contains, … |
Field( |
Kwarg completion — multiline-aware, filters already-used kwargs |
session. |
Every key assigned anywhere in the app, with file and line |
request.vars. |
Vars keys used across the app |
IS_IN_ |
All validators with signature and usage example |
app_settings. |
Keys from model settings containers |
TwoDimensionalView. |
Methods and attributes with full parameter list |
Field, DAL, Rows |
325+ pydal/gluon names with signatures, straight from the source |
Every completion item shows the signature and a one-line summary beside the label — you see what something does without opening the docs popup.
| Click on | Jumps to |
|---|---|
| A model function or class | Its definition in models/ |
| A table name | The define_table call |
| A validator or HTML helper | The line in pydal/validators.py or gluon/html.py |
| A settings key | The file and line where the key was assigned |
| A controller variable | Its assignment in the models |
| A controller string value | The controller file |
| Any pydal/gluon name | The source file |
Hover any name for its full signature, all parameters, and the complete docstring — inherited docs included. Works across model code, pydal, gluon, validators, HTML helpers, and settings.
- Name typos in red —
Fiel→ did you meanField? - Kwarg typos —
typ=→type - Syntax errors via Python's
ast.parse - Ctrl+. quick fixes — one keypress correction
- Star-import files are skipped — no false positives
Automatically suppresses reportUndefinedVariable for web2py's injected globals. No more yellow underlines on db, session, auth, or T.
- Download the latest
.vsixfrom Releases - Open VS Code → Extensions panel →
…menu → Install from VSIX… - Select the downloaded
.vsixfile - Open your web2py folder (the one containing
applications/) as workspace - Reload the window
git clone https://github.com/IbraDevx/Web2py-AutoComplete.git
cd Web2py-AutoComplete
npm install
npx tsc -p ./
npx vsce packageThis produces web2py-intern-tools-<version>.vsix. Install it with:
code --install-extension web2py-intern-tools-0.13.0.vsixOr via VS Code: Extensions → … → Install from VSIX…
The extension covers every name available at runtime in a web2py application.
| Source | Names | Method |
|---|---|---|
list_globals.py |
130+ | dir() over 21 gluon modules at startup |
list_api.py |
325+ | AST parse of pydal/gluon source — no imports needed |
list_members.py |
session, request, response, Field members | inspect on live objects |
| Indexer | tables, fields, model functions, settings containers | Static analysis of your code |
100% of what Python's dir() returns is known to the extension, with signatures and documentation.
| Command | What it does |
|---|---|
| Rebuild Index | Re-indexes all applications in the workspace |
| Scan All Files for Errors | Runs diagnostics across every .py file |
| Show Index for This File | Prints every global, container, key and class member — debug tool for missing completions |
All accessible via Ctrl+Shift+P.
src/
extension.ts activation, completion, hover, Go to Definition
parser.ts tables, fields, functions, classes, settings containers
indexer.ts one AppIndex per application, merges models + controllers + modules
diagnostics.ts name/kwarg typo detection, syntax errors
kwargcomplete.ts Field() / define_table() kwarg completion
quickfix.ts Ctrl+. code actions
scripts/
list_globals.py dir() over gluon → runtime names with signatures and docs
list_api.py ast walk over pydal/gluon source → every function/class/method
list_members.py members of session/request/response/Field via inspect
generate_stubs.py .pyi stub for Pylance
See DEVELOPMENT.md for the full developer guide.
Issues and PRs welcome. Run the test suite before submitting:
node test-fixture/test-full-diagnostics.js
node test-fixture/test-precision.js
node test-fixture/test-functions.js
node test-fixture/test-members.js
node test-fixture/test-global-objects.js
node test-fixture/test-class-members.js
node test-fixture/test-api-extract.jsMIT — see LICENSE.
Developed by Ibrahem Darwish