E&S CVS Commit: pylib - YAGR.1 - Yet Another Great Refactoring, Part 1

pje at eby-sarna.com pje at eby-sarna.com
Mon May 28 02:23:00 EDT 2001


Module Name:	pylib
Committed By:	pje
Date:		Mon May 28 06:22:36 UTC 2001

Modified Files:
	pylib/TW: Aspects.py Features.py
	pylib/TW/UML: MMX.py
	pylib/TW/tests: Aspects.py
	pylib/TW/tests/StructuralModel: _Aspects.py

Log Message:
YAGR.1 - Yet Another Great Refactoring, Part 1

(Note: unit tests are not yet back to 100% functionality - work in progress)

Rewrote AOP functionality almost from scratch for a simpler internal API
that involves fewer kinds of objects and less weirdness, generally.  Now
there are really only Aspects and Builders, instead of Aspects, Makers, and
FeatureDefs.  There is a much simpler interface for feature weaving now,
the Builder interface.  Documentation is still sparse, but the concepts to
be explained now aren't as hard in some ways.

Major feature enhancement - fully nested scopes for reference by name, and
knowledge of fully qualified paths/parent hierarchies during all building
operations...  and without any use of circular references.  The groundwork
has now been laid for "exotic" features like structuring packages as nested
classes and still being able to refer to the classes in them from inside
other packages, even without Python nested scopes in use.  Across-the-tree
dependencies (up one branch and down another) are supported, but none of
these new features has been really thoroughly exercised (no new tests yet.)

Missing functionality: the '__features__' concept and Transform objects in
general are temporarily broken, while I figure out what they ought to look
like.  The unit tests which test their functionality are broken, as are
possibly some examples from the Wiki and docs.

Other brokenness/issues: UML.MMX is starting to smell bad from being hacked
on to work around not yet properly designed API's at the AspectBuilder
level.  Ugh.  ComponentBuilder could *really* use some internal comments
and docstrings, not that a bunch of other classes couldn't use 'em also.


To view diffs of this commit, you can use the following URL(s):
http://cvs.eby-sarna.com/pylib/TW/Aspects.py.diff?r1=1.8&r2=1.9
http://cvs.eby-sarna.com/pylib/TW/Features.py.diff?r1=1.4&r2=1.5
http://cvs.eby-sarna.com/pylib/TW/UML/MMX.py.diff?r1=1.9&r2=1.10
http://cvs.eby-sarna.com/pylib/TW/tests/Aspects.py.diff?r1=1.2&r2=1.3
http://cvs.eby-sarna.com/pylib/TW/tests/StructuralModel/_Aspects.py.diff?r1=1.7&r2=1.8

To generate a diff of this commit:
cvs rdiff -r1.8 -r1.9 pylib/TW/Aspects.py
cvs rdiff -r1.4 -r1.5 pylib/TW/Features.py
cvs rdiff -r1.9 -r1.10 pylib/TW/UML/MMX.py
cvs rdiff -r1.2 -r1.3 pylib/TW/tests/Aspects.py
cvs rdiff -r1.7 -r1.8 pylib/TW/tests/StructuralModel/_Aspects.py

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.





More information about the source-changes mailing list