enthought / envisage

Envisage is a Python-based framework for building applications whose functionalities can be extended by adding "plug-ins".
http://docs.enthought.com/envisage/
Other
80 stars 26 forks source link

Deprecate EggBasketPluginManager and EggPluginManager #541

Closed mdickinson closed 1 year ago

mdickinson commented 1 year ago

Discussed in https://github.com/enthought/envisage/discussions/521

Originally posted by **mdickinson** March 13, 2023 I propose deprecating and eventually removing the egg-related machinery in Envisage. Specifically, the `EggPluginManager` and the `EggBasketPluginManager`. - The Python packaging community has moved away from eggs towards wheels, and eggs are becoming increasingly difficult to manage. For example, there's no obvious supported way that I could find to _build_ eggs (e.g., for testing purposes). Use of `python setup.py bdist_egg` is [discouraged](https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html), and (for example) `python build` doesn't seem to support building eggs. - The code is becoming increasingly difficult to maintain. Moreover, on recent projects we haven't found this particular method of extensibility to be useful. Instead, where this sort of thing is needed we've gone with an approach of installing packages into `site-packages` and having those packages contribute to setuptools entry points. It may make sense to add a new `PluginManager` subclass that knows how to retrieve and instantiate plugins given the name of a `setuptools` entry point.