[Grok-dev] more changes in martian, grokcore.component

Martijn Faassen faassen at startifact.com
Fri Jun 6 13:16:54 EDT 2008


Hi there,

I've just released Martian 0.10. Martian 0.10 follows up on some recent 
Martian changes. What's new:

* new tutorial content, replacing the old README.txt. Those tests have 
moved to core.txt. The new tutorial is shorter and should explain 
Martian better to beginners.

* new directives: martian.component, replaces component_class 
class-level attribute on grokkers. martian.priority replaces priority 
class level attribute on grokkers, and martian.directive replaces the 
new 'directives' list. It takes a directive (class) as an argument, and 
optionally the further parameters to bind() (name, default, get_default).

* combined martian.GrokRegistry that makes martian more easy to use from 
Python code.

The new directives allow you to write a grokker in the same style as the 
classes you're actually grokking:

class FooGrokker(martian.ClassGrokker):
     martian.component(Foo)
     martian.directive(name)
     martian.directive(context, get_default=default_context)

     def execute(self, class_, name, context, **kw):
          ...

I've also updated grokcore.component trunk to work with the new version 
of Martian. I haven't updated the Grok trunk yet. Someone else will have 
to update five.grok; the changes aren't difficult but if you have 
questions, please ask them here!

This set of changes was driven also to simplify classix, a new library 
I'm developing that provides a Martian-based glue for lxml 
element-specific classes:

http://svn.zope.org/classix/

It's a simple library, and I considered it when considering how to 
improve Martian.

All this is yet another step to improve Martian. While reviewing things 
I got another idea: I think we need a (decorated) module-level function 
grokker in Martian itself, to replace the ugliness that is in 
grokcore.component.decorator now. Hopefully we can simply use grok 
directives for the subscribe, adapter decorators and also replace some 
of the GlobalGrokkers with FunctionGrokker.

Regards,

Martijn

P.S. yes, an actual feature version bump to martian 0.10, we shouldn't 
be doing major changes to the way martian works in the third number!



More information about the Grok-dev mailing list