[Grok-dev] Grok, Martian and class decorators

Jan-Wijbrand Kolman janwijbrand at gmail.com
Mon Jan 31 04:14:03 EST 2011


On 1/29/11 17:58 PM, Vincent Fretin wrote:
> On Thu, Jan 27, 2011 at 9:43 AM, Jan-Wijbrand Kolman
> <janwijbrand at gmail.com <mailto:janwijbrand at gmail.com>> wrote:
>
>     On 1/26/11 14:08 PM, Souheil CHELFOUH wrote:
>      > I need to add : this is very important to me :)
>      >
>      > 2011/1/25 Souheil CHELFOUH<trollfot at gmail.com
>     <mailto:trollfot at gmail.com>>:
>      >> Hello Grok,
>      >>
>      >> Recently, as I tried to migrate Dolmen to Grok 1.3, I faced some
>     problems.
>      >> Two packages of Dolmen use class decorators and, especially in
>      >> dolmen.menu, it creates problems with martian directives.
>      >> In dolmen.menu, I try to access the directive value of the class
>     being
>      >> decorated. While it used to work on martian 0.11.x, it no longer
>      >> works.
>      >> We investigated the problem with J-W and Matthias and we concluded
>      >> that Martian is not longer "class decorated safe".
>      >> It never claimed to be, obviously, but this is a real problem
>     for me,
>      >> as these packages are an important brick or the Dolmen stack,
>     for me.
>      >> What should we do ?
>
>     The more I think about this, the less I see a solution: directives do
>     their work at import-time as do class decorators. In other words, like
>     it is not possible to get values through a directive in another
>     directive (as the import-time has not finished yet), class decorators
>     cannot get values through directives either.
>
>     After import-time comes grokking-time. During grokking-time, annotations
>     left by the directives can be read from the grokked components.
>
>     So *maybe* there is a solution, being, have the class decorators
>     annotate the decorated components and use a grokker (registered for a
>     very generic component type, `object` perhaps, would that work?) read
>     that information and do the registrations.
>
>     Would this provide a way forward?
>
>     regards, jw
>
> Hi,
>
> Maybe http://pypi.python.org/pypi/venusian
> can help here?

Note that in venusian too, the "annotation" or "decoration" is done at 
import time and only later - in the scanning phase, AFAICT similar to 
the grokking phase - the information left by the decorator is read and 
interpreted.

regards, jw




More information about the Grok-dev mailing list