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:
- an extensible application framework
- application building blocks
- 2-D and 3-D graphics libraries
- scientific and math libraries
- developer tools
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.
Traits: Run-Time Type-Checking and Reactive Programming¶
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.