As I covered in my talk this past PyCon, we're getting a proliferation of domain-modelling frameworks in Python. I'm actually responsible for 2 of them myself (OpenGLContext's fields and BasicProperty). There's also Traits, Zope's fields, and a similar system in PEAK.
When you consider PyTable (which creates BasicProperty properties from database-schema definitions and builds convenience methods from them), then you add SQLObject, DJango, and probably half a dozen other Object-Relational mappers which are "almost the same thing".
So, what really seems to be needed is a way to unify the whole set. Take the common features, and the usefully distinctive features, and create a single, rational, well-thought-out domain-modelling property type. It will need to have optional observability, type-checking, constraints, default values, the ability to house database-specific information, friendly names, delegation support, easily overridden storage mechanisms, easily overridden coercian, and reasonable speed.
BasicProperty already has most of that. It needs a better mechanism for overriding coercion at the property level (right now it always relies on the baseType). It needs a better observability story, namely it needs to have the option for pre-set and post-set messages built-in. It needs the ability to generate property ordering, likely with a special class/metaclass that takes a simple list-of-properties and moves them into the class, noting their position (or alternately, give every property created a creation timestamp and simple sort those in a class by it when needing an order).
The delegation is easy, in fact, so easy that I normally write it whole-cloth for each property (lambda prop,client: client.someProp.someValue), but maybe making it explicit and obvious would be a good thing i.e. delegateTo = ('someProp','someValue' ). Yes, something would be useful, particularly to get rid of the ambiguity of declaring a default with no caching on default when a delegate is intended.
Anyway, the thing that really seems to be missing, however, is the set of support mechanisms; drag and drop editors to produce domain models with all of the various features selected from a palette; multiple "propertied" classes to provide various modelling types... effectively just a typology of property use patterns (e.g. constrain attributes to properties or not, display _repr_ as a full property-by-property display, ordered or unordered properties); a "web framework" like Django with default editing tools (I already have one for BasicProperty, but it'd be better to use an already published and running one, rather than recreating it); and a (couple of) GUI-library bindings (e.g. wxoo, but finished
Enough rambling. Time to start the day.


Comments
2010-07-25 14:02
> and would have no Trac integ ration The trac-bzr plugin[ 1] seems to provide good integ ration between bzr and t [...]
2010-07-13 21:47
I've always been fascinated wi th the Asterisk AMI interface. So much so that I married tha t fascination with the [...]
2010-07-03 21:32
Yes, only references in dicti onaries are replaced, so hold ing references in lists, tuple s, etceteras keeps them alive.
2010-07-03 11:18
They hold references to remove and install?
2010-06-24 08:34
There's higher-level objects w hich are tracking what is repl aced (the actual Mock objects) . They hold references [...]
2010-06-24 08:23
I haven't tried it, but it see ms to me like this approach ha s one fundamental problem: If you replace all refs o [...]
2010-06-24 08:22
That's the "magic" that made m e go "ooh shiny"
2010-06-24 06:03
That's even more evil than the mock patch decorator...
2010-06-06 18:33
blush Oh.
2010-06-06 11:07
That's what the module does (a utomatically), but on a per-te st-run basis, and only for the process being tested (i [...]
2010-06-06 02:43
Maybe I'm missing something im portant here, but why not just write small scripts to mimic whatever dangerous utili [...]
2010-06-05 15:17
I thought about stubbing out t he python call to the process in the current process, but I want something which stu [...]
2010-06-05 14:47
Hmm... if Mock isn't flexibl e enough to handle mocking pro cesses adequately then I'd lik e to know how it could b [...]
2010-05-19 10:27
Hey, maybe it's a stupid new bie question, but where and ho w exactly should the patching of the core take place? [...]
2010-05-04 14:36
I used Qemu and VirtualBox pre tty extensively back when I wa s working for the OLPC, but mo st of the stuff we were [...]