Enthought Tool Suite

The Enthought Tool Suite (ETS) is a collection of open-source components developed by Enthought, our partners and the scientific Python community, which we use every day to construct custom scientific applications. It includes a wide variety of components, including:

The cornerstone on which these tools rest is the Traits package, which provides the observer pattern in Python; its features include initialization, validation, delegation, notification, and visualization of typed attributes.

Community support for ETS is available on the ets-users group, and on stackoverflow (tag “enthought”) .

Traits: Run-Time Type-Checking and Reactive Programming

Traits provides dataclasses-like type-checked attributes, the ability to watch and react to changes in attribute values, together with (optional) automatic GUI generation.


TraitsUI: Easy GUI-Building

TraitsUI provides a declarative GUI system built on top of Traits. Reasonable default values allow incremental improvement from an automatically generated GUI through to highly customized behaviour. TraitsUI uses and can interoperate with PyQt, PySide or WxPython.


Mayavi: 3D Visualization Application and Library

Mayavi provides a 3D visualization application, a library for 3D plotting within IPython, and a library for embedding 3D visualizations into GUI applications in TraitsUI, PyQt, PySide and WxPython.


Chaco: Interactive 2D Plotting Library

Chaco provides an interactive 2D plotting library for GUI applications in TraitsUI, PyQt, PySide and WxPython.

Envisage: Plug-In Application Framework

Envisage is a plug-in application framework for Python inspired by the plug-in framework of the Eclipse IDE.

Pyface: Low Level GUI Components

Pyface provides a traits-aware wrapper around basic GUI components, providing a toolkit-agnostic framework for building application UIs. Pyface uses and can interoperate with PyQt, PySide or WxPython.

Qt Binder: Low Level Trait Bindings for Qt

QtBinder thinly wraps Qt widgets with Traits. Binder widgets can be used inside a Traits UI View using a special Item called Bound. Binder widgets can be bound to model traits using binding expressions.

Traits Futures: Background Processing for TraitsUI

Traits-futures provides a means to fire off a background calculation from a TraitsUI application, and later respond to the result(s) of that calculation, leaving the main UI responsive for user interactions while the background calculation is in progress.

Apptools: GUI Application Components and Systems

Apptools provides a collection of utilities and systems for building GUI applications, including logging, undo/redo, application-wide selection, macro recording.

Kiva and Enable: 2D Vector Drawing and Interaction

Kiva provides a 2D vector drawing abstraction over a variety of backends, including AGG, Cairo, Quartz, QPainter, PDF and PostScript. Enable adds Traits-based interactivity and event-handling on top of Qt or Wx.

Codetools: Python Code Analysis and Execution

Codetools provides tools for analyzing data flow through Python code and advanced execution contexts that permit observation of changes to variables as code is executed.

SciMath: Scientific Utilities Including Units

Scimath provides a collection of scientific computation utilities, including scalar and numpy array quantities with physical units.

GraphCanvas: 2D Network Visualization (Under Development)

GraphCanvas provides interactive 2D representations of networks and graphs using Enable and NetworkX.

Other Enthought Open Source

Enthought also offers a number of other open source packages that aren’t part of the wider Enthought Tool Suite, but which will hopefully be of use to the wider community.


The ibm2ieee package provides NumPy universal functions (“ufuncs”) for converting IBM single-precision and double-precision hexadecimal floats to the IEEE 754-format floats used by Python and NumPy on almost all current platforms.


A reimplementation of pywin32 that is pure python. It uses cffi, if available, otherwise falling back to using ctypes. There is no need to have a compiler available on installation or at runtime.


comtypes is a lightweight Python COM package, based on the ctypes_ FFI library.