Skip to content

Envisage 7.0.0

Compare
Choose a tag to compare
@mdickinson mdickinson released this 24 Mar 09:03
· 20 commits to main since this release
7.0.0
e12d20d

This is a major release aimed at modernization and cleanup of some out-of-date
code. In particular, this release removes the IPython-related plugins, and
drops support for Python 3.6.

Thanks to:

  • Mark Dickinson
  • Chengyu Liu
  • Corran Webster

Features

  • There's a new unbind_extension_point function that reverses the effects
    of bind_extension_point. This can be useful for clean teardown. (#546)
  • All id string constants that were previously available from envisage.ids
    are now also exported in envisage.api. Users are encouraged to import
    everything they need from envisage.api, and to open an issue if anything
    they need is not exported in envisage.api. (#508)

Changes

  • When exiting a TasksApplication, the plugins are now stopped after
    exiting the event loop. Previously they were stopped while the event loop was
    still running, causing some lifecycle issues. (#524)
  • The extension_registry argument to bind_extension_point is no
    longer optional, and ExtensionPointBinding will no longer look for
    an extension registry on the ExtensionPoint class. (#545)
  • Operations that used to raise SystemError now raise something more
    appropriate. In particular, the PluginManager.start_plugin and
    PluginManager.stop_plugin methods now raise ValueError rather
    than SystemError when given an invalid plugin id. (#529)
  • envisage.__version__ is no longer defined. If you need the Envisage
    version at runtime, use importlib.metadata to retrieve it. (#513)
  • Python 3.6 is no longer supported. All current versions of Python (3.7
    through 3.11) are supported. (#513)

Fixes

  • The repr of a Plugin instance now correctly uses the name of the
    plugin class. (#535)

Deprecations

  • The EggPluginManager, EggBasketPluginManager and
    PackagePluginManager are deprecated, and will be removed in Envisage 8.0.
    (#540)
  • The include and exclude traits on the PluginManager are
    deprecated, and will be removed in Envisage 8.0. (#544)

Removals

  • Plugins and machinery related to IPython have been removed. Specifically,
    the IPythonKernelPlugin and IPythonKernelUIPlugin plugins have been
    removed, along with supporting classes InternalIPKernel and
    IPKernelApp. (#496)
  • The ExtensionPoint.bind method has been removed. (#545)
  • The previously deprecated safeweakref.ref class has been removed. (#522)
  • Some legacy unmaintained examples have been removed. (#557)

Documentation

  • The changelog is now included in the built documentation. (#550)

Tests

  • Old-style namespace packages used for testing have been replaced with
    normal non-namespace packages. This fixes some warnings from the latest
    setuptools. (#543)
  • The test suite now runs cleanly under pytest. (#539)
  • Tests that are skipped due to a PySide6 problem should now be run
    if the version of PySide6 is recent enough. (#554)

Build

  • Package configuration now uses pyproject.toml in place of the old
    setup.py-based configuration. (#513)
  • Optional dependencies are no longer declared. (#513)
  • A new style-checking workflow has been added that runs black, isort
    and flake8 over the codebase, and new code is expected to comply with
    black and isort configurations. (#549)
  • A new documentation-build workflow has been added. The built documentation
    is uploaded as an artifact. (#551)