[PEAK] A few issues and suggestions

Sergey Schetinin maluke at gmail.com
Mon Nov 3 22:09:55 EST 2008


Here's the test case:

class C(Component):
    x = attr(0)
    def __init__(self):
        self.x = 10
        @on_undo
        def undo():
            print 'UNDO'


class TC(Component):
    c = make(C)
    x = attr(0)
    y = attr(0)

    @maintain
    def test(self):
        if self.x:
            self.c
            self.y

    @maintain
    def write(self):
        self.y = self.x


tc = TC()

@atomically
def test():
    tc.x = 1
    tc.test

print tc.c.x

# prints UNDO \ 0





On Tue, Nov 4, 2008 at 04:51, Sergey Schetinin <maluke at gmail.com> wrote:
>> Thanks for your help identifying and fixing the problems.  I've checked in
>> fixes, as described here:
>>
>> http://svn.eby-sarna.com?rev=2595&view=rev
>
> Thanks a lot. However, I see that some problems, that I thought was
> related to my monkeypatching, didn't go away, what happens in effect
> is that changes done Component.__init__ get rolled back. I'm working
> on a test case for this, and I've noticed something I didn't think
> about before. In the following example __init__ reads data it
> shouldn't. This isn't a problem normally, but something to keep in
> mind when writing components' __init__
>
> class TC(Component):
>    y = attr(0)
>
>    def __init__(self):
>        print self.read # 0
>
>    @compute
>    def read(self):
>        return self.y
>
>    @maintain
>    def write(self):
>        self.y = 5
>



-- 
Best Regards,
Sergey Schetinin

http://s3bk.com/ -- S3 Backup
http://word-to-html.com/ -- Word to HTML Converter



More information about the PEAK mailing list