Skip to content
Andrew Geiger edited this page Jul 28, 2022 · 6 revisions

Ignition Metatools: Tools to build tools

An eclectic collection of must-have functionality

Given that Ignition has a full Python implementation backing it, there's vast untapped potential for extensibility. Add that it is implemented in Java and that it has direct interop with Java objects, scripting has shocking power on the platform. These modules, functions, classes, and tools bring out some of the more interesting options.

Quick Overview

Each module covers a specific theme, from threading to converting datatypes to faking modules. There's even a module for profiling your code 😉! There's enough here to make navigating a bit tricky and there's no telling which bit is the solution to the problem du jour. So there are a couple tables of content here, one by commonly/heavily used functionality, and the other by module/theme.

By Tool

  • p pdir
  • @async
  • Logger
  • ExtraGlobal
  • @semaphore
  • @memoize
  • Expression

By Module

Helpers

  • pretty
  • thread
  • logging
  • global
  • memoize
  • timing
  • macro

Utility

  • data
  • enum
  • expression
  • dictclass
  • compat

Ports

  • easing
  • toml
  • yaml

Network

  • sidecar
  • crowbar

Simulation

  • drunk
  • process

Introspection

  • meta
  • debug
  • venv
  • wrapped
  • snapshot

Monkey-patching

  • hotpatch
  • hotload
  • runtime

Every tool has been made in direct response to a real, pressing production need. Some are used constantly in production, others are used in a DMZ for experimentation. Each is will be rated on it's production quality (with "been used in production for more than a year" as full rating).