Skip to content
Go to file

Latest commit


* Support @observe("name:items") for ExtensionPoint

This is achieved by caching the value of ExtensionPoint and make it
impossible to mutate the list directly.

* Make sure an object with ExtensionPoint is garbage collectable after disconnecting listeners

* Clean up test and add docstring

* Remove reference back to the object

The reference only serves to support some edge cases where
the extension point values become out-of-sync because the listeners
are not connected yet. Once the listeners are connected the values
are refreshed. So all in all it is not worth keeping the reference,
as one will then need to use weakref to avoid cycle references,
and special handling in the pickling logic to handle that weakref.

* Move functions out of ExtensionPoint to avoid cycle reference between listeners and trait types

* Fix unpickling ExtensionPointValue in newer versions of Python

* Bump traits requirement to 6.1

Co-authored-by: Poruri Sai Rahul <>

Git stats


Failed to load latest commit information.


envisage: extensible application framework

Build Status Code Coverage


Envisage is a Python-based framework for building extensible applications, that is, applications whose functionality can be extended by adding "plug-ins". Envisage provides a standard mechanism for features to be added to an application, whether by the original developer or by someone else. In fact, when you build an application using Envisage, the entire application consists primarily of plug-ins. In this respect, it is similar to the Eclipse and Netbeans frameworks for Java applications.

Each plug-in is able to:

  • Advertise where and how it can be extended (its "extension points").
  • Contribute extensions to the extension points offered by other plug-ins or its own.
  • Create and share the objects that perform the real work of the application ("services").

The Envisage project provides the basic machinery of the Envisage framework. You are free to use:

  • the envisage CorePlugin available through the envisage.api module
  • plug-ins from the envisage plugins module
  • plug-ins from other ETS projects that expose their functionality as plug-ins
  • plug-ins that you create yourself


The supported versions of Python are Python >= 3.6. Envisage requires:

Envisage has the following optional dependencies:

To build the full documentation one needs:


Envisage is a Python-based framework for building applications whose functionalities can be extended by adding "plug-ins".




No packages published