Documentation for Deptle Terminal.

Guides for setup, scripting, troubleshooting, and more.

Reading a diagnostic

Every DSL compile error is printed in a consistent, structured format: a headline with an error code, a pointer at the offending source location, a snippet with a caret under the exact tokens, and optional help: or note: lines.

  • **Headline** — error[EXXXX]: <message>. The code (e.g. E0521) is stable and can be grepped.
  • **Location** — --> <file>:<line>:<col> points at the start of the primary span.
  • **Snippet** — the source line with a caret (^) under the exact tokens that caused the error. When a span crosses multiple lines, the snippet shows the opening line, an elided ..., and the closing line. Very long lines are windowed around the span (prefixed/suffixed with ...) so the interesting tokens stay visible.
  • **Context line** — when the error doesn't start on line 1 the compiler also prints the preceding source line above the primary, to give the reader a little surrounding code.
  • **Secondary label** — for errors that reference two locations (e.g. a duplicate Parameter name), a second caret is printed at the first occurrence with previously declared here.
  • **Help / Note** — lines prefixed with note: explain *why* something is wrong; lines prefixed with help: suggest a concrete fix. note: lines are printed first, help: second. Multi-line notes are indented under the first character of the message so they read as a coherent paragraph.
  • **Did you mean?** — when an identifier is unknown the compiler tries to find the closest in-scope name via edit distance and suggests it in a help: line.
Example output
1error[E0521]: `Parameter n` is missing `min`
2 --> <strategy.py>:3:14
3 |
4 3 | n: int = Parameter(default=5, max=10)
5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
6 |
7 = help: pass `min=...` (the lower bound for optimization sweeps)

Declaration errors (E05xx)

Errors raised while analyzing class fields, Parameter/State/Extra declarations, and asset config.

  • E0500on_tick has the wrong signature. Use (self, tick) or (self, tick, sys).
  • E0501on_bar is no longer supported; rename it to on_tick and configure bars in the UI.
  • E0502 — missing required on_tick method on the strategy class.
  • E0504 — a field name uses the reserved deptle_bar_ prefix.
  • E0505 — duplicate field name across Parameter / State / Extra.
  • E0510E0512bar_timeframe / bar_fill_mode / required_assets / asset_slots annotation is wrong.
  • E0520E0525Parameter(...) is missing default / min / max, or has min > max, default out of range, or non-positive step.
  • E0530E0540State(...) indicator / array / size issues.
  • E0550E0554Extra(...) positional args, bad annotation, missing / out-of-range binding.
  • E0570E0577required_assets / asset_slots validation.

Lowering errors (E02xx–E04xx)

Errors raised while lowering the body of on_tick into the internal IR.

  • E02xx — statement-level issues (unsupported for/while, disallowed assignment target, augassign type mismatches, unsupported return shape).
  • E03xx — expression-level issues (unknown name, unsupported attribute access, bad literal form, slice / subscript errors).
  • E04xx — call / ordering issues (unknown builtin, wrong arg count, bad Order.*(...) shape, disallowed call target).

The caret points at the exact token the compiler tripped on. When in doubt, read the help: line — it is hand-written for each error and suggests a concrete fix.

Workflow tips

How to quickly resolve compile errors.

  • Fix errors top-to-bottom: the compiler stops at the first hard error in declarations before lowering the body.
  • Error codes are stable across releases — pin them in team runbooks or tests.
  • If a help: line suggests a different keyword (e.g. size= instead of positional), prefer that wording verbatim.
  • Parse errors (syntax) are reported separately by the editor before the DSL compiler runs.
Need help?

If launch fails, include your loader version, OS, and latest crash log so support can reproduce the issue quickly.

Check service status