[Biopython-dev] Last chance to claim Dispatch bug fix
jchang at smi.stanford.edu
Mon Apr 1 20:10:17 EST 2002
Please don't do that. If I understand correctly, you are having
problems with Martel.Parser._parse_elements because it is checking to
see if a class is an instance of Dispatch.Dispatcher. You are using a
ParserSupport._EventGenerator object that is decorating a _consumer
member that is a Dispatcher. Since _EventGenerator is not a
Dispatcher, the check in _parse_elements fails. You want it to
succeed because your _consumer can handle the Dispatcher calls. Thus,
you would like to patch _EventGenerator to expose the _consumer member
via a function call, and patch _parse_elements to call that function
to see whether the decorated object is a Dispatcher.
I don't think this is the right approach to solve the problem, because
it makes too many changes to the APIs to both _EventGenerator and
_parse_elements. This might be acceptable if it's a common enough
case, but I'm not convinced that it is.
The problem with adding new APIs is that they're hard to get rid of.
If you add a method to get the decorated object of _EventGenerator,
future implementations and subclasses of this object will have to also
implement this method, even if it's not a decorator. Plus, if you add
another check in _parse_elements, that method will have to do multiple
checks forever. In addition, any other method that checks to see
whether an object is a Dispatcher will have to do that check too. It
gets messy and bug-prone really fast.
Instead, you should create your own subclass of _EventGenerator that
also inherits from Dispatcher, so that you conform to the API that
_parse_elements is expecting.
On Mon, Apr 01, 2002 at 03:17:54PM -0800, Cayte wrote:
> I posted a description of my fix. So I have a grren light to proceed?
> ----- Original Message -----
> From: "Jeffrey Chang" <jchang at smi.stanford.edu>
> To: "Cayte" <katel at worldpath.net>
> Cc: <biopython-dev at biopython.org>
> Sent: Thursday, March 28, 2002 9:03 PM
> Subject: Re: [Biopython-dev] Last chance to claim Dispatch bug fix
> > Hi Cayte,
> > Could you please describe your fixes in a little more detail? For
> > example, I'm not sure what you're planning on doing with _consumer in
> > ParserSupport, or what problem it's trying to solve. Also, for
> > _consumer, are you referring to the member variable of the
> > EventGenerator or SGMLStrippingConsumer, or something else?
More information about the Biopython-dev