Envisage 7.0.0
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
ofbind_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 inenvisage.api
. Users are encouraged to import
everything they need fromenvisage.api
, and to open an issue if anything
they need is not exported inenvisage.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 tobind_extension_point
is no
longer optional, andExtensionPointBinding
will no longer look for
an extension registry on theExtensionPoint
class. (#545) - Operations that used to raise
SystemError
now raise something more
appropriate. In particular, thePluginManager.start_plugin
and
PluginManager.stop_plugin
methods now raiseValueError
rather
thanSystemError
when given an invalid plugin id. (#529) envisage.__version__
is no longer defined. If you need the Envisage
version at runtime, useimportlib.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 aPlugin
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
andexclude
traits on thePluginManager
are
deprecated, and will be removed in Envisage 8.0. (#544)
Removals
- Plugins and machinery related to IPython have been removed. Specifically,
theIPythonKernelPlugin
andIPythonKernelUIPlugin
plugins have been
removed, along with supporting classesInternalIPKernel
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
andflake8
over the codebase, and new code is expected to comply with
black
andisort
configurations. (#549) - A new documentation-build workflow has been added. The built documentation
is uploaded as an artifact. (#551)