Re: Re: trellis.Set.discard

"Phillip J. Eby" <pje-Wh6+Hckhi6HFNGf7iClzIwC/[email protected]>
Newsgroups gmane.comp.python.peak
Message-ID <[email protected]>
At 08:50 PM 10/21/2008 -0400, Phillip J. Eby wrote:
>Hm.  ISTM that this is a bug in Component creation, in that it 
>should push and restore read-onlyness.  The make() should be 
>idempotent with respect to the @compute rule.

Unfortunately, it's not *quite* that simple.  What's really needed is 
to allow changes to cells even during "read-only" periods, as long as 
they are "new".

It's the precise definition of "new" that eludes me...  I suppose we 
could keep a set of "cells created" within a given "transaction", and 
clear it upon commit.  Component creation could then push and pop 
this set, instead of pushing and popping read-onlyness.

Unfortunately, such a set could complicate garbage collection, unless 
it used weak references.  I suppose that's probably an acceptable 
solution, though.

Also, we probably don't want to consider cells created outside of 
Component creation to be "new", so the "cells created" set could 
perhaps be None during the main transaction body.

I'm thinking something like ctrl.new_cell(cell) that either registers 
the cell or does nothing, depending on whether the "cells created" 
set is None or not.  Then changed() would check if the changed cell 
is in the set in the readonly case.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.