[Distutils] Are there best practices on creating/using egg extras?
Dave Peterson
dpeterson at enthought.com
Fri Jul 20 20:50:44 CEST 2007
Hello,
I'm not sure if I've painted Enthought into a corner or not, but I can't
figure out if there is a way to help users of a library, delivered as an
egg, to know and/or maintain dependencies on extras declared in that
egg. By which I mean that if my library, called X, declares extras 1,
2, and 3, and the source for X includes all the code that implements the
features in extras 1, 2, and 3, and the extras document the external
dependencies component X has to get those extras to work, how does
someone importing from the API in X know whether their dependency on it
should be 'X', 'X[1]', X[1,2]', etc. ? After all, all the API methods
are already there even if they didn't install the extras. So far the
only mechanisms I can see are (a) a manual one which depends on people
(everyone using X!) knowing the internals of X such that they can tell
that if they import symbols a, b, or c, then that means they need extra
1, etc., and (b) trial and error iteration driven by unit / integration
tests.
Am I just misusing or misunderstanding extras here?
BTW, what I'm trying to do is convert Enthought's old monolithic
distribution of ETS into components that could be installed
individually. The first step of this was to package each component as
an egg; the second was to ensure that cross-component dependencies were
put in place (simply declaring A requires B if code in component A
imported a symbol from packages in component B); the third was to try to
minimize these cross-component dependencies by minor refactoring and
introduction of extras to represent non-core functionality; and the
fourth is to ensure that cross-component dependencies properly include
extras as needed.
It's this last step that has got me thinking about this problem. I've
been able to mostly automate the previous steps, or at least write tools
to help me, but for this fourth step, I can't figure out how to do it
consistently. It is quite possible that I've missed some best practice
of when to create or use extras. Any advice would be greatly appreciated!
-- Dave
More information about the Distutils-SIG
mailing list