[Bioperl-l] Backward compatibility mode for Bio::Root::RootI
Lincoln Stein
lstein@cshl.org
Tue, 11 Dec 2001 12:04:39 -0500
How about:
sub _cleanup_methods {
warn "please use Bio::Root::Root, not Bio::Root::RootI";
}
I'll put these two things in, if there's no more debate.
Lincoln
On Monday 10 December 2001 22:46, Jason Stajich wrote:
> We need to also do something about the calling of _cleanup_methods as this
> will currently cause DESTROY to segfault if one does not reimplement
> _cleanup_methods in the subclass - I don't see any reason that
> _cleanup_methods has to DO anything unless someone wants to add methods to
> it. Right now someone extending the RootI interface, and providing their
> own new method will get a perl segfault when the object is DESTROYED. If
> _cleanup_methods doesn't return anything, nothing is harmed, someone must
> call _register_for_cleanup to add a method and if this isn't implemented
> then the developer will get some errors.
>
> Can I suggest additionally doing:
> sub _cleanup_methods { # purposely an empty method
> }
>
> Rather than an _abstractDeath('_cleanup_methods') here.
>
> Is everyone happy with the Root::IO way of doing tempfiles/catfile? I
> think it is nice to provide a little backwards compatibility, but it seems
> like File::Spec is pretty standard - although some versions have
> different #'s of methods. Additionally we should insure that File::Temp
> tempfiles can be cleaned up on object destruction not just when the Perl
> script exits memory. If someone wanted to take some time to test all the
> cases - would be awesome.
>
> Has anyone looked at Damian's new NEXT module? Nice little post about
> this on use.perl.org. Looks like a nice way to do method dispatch and we
> might want to consider adopting it ... Later, I know! Lincoln has also
> suggested starting to use some perl 5.6 niceties: 'use base' and others.
> I know that Sanger system perl version and the rest of our users has been
> one of the things stopping us, but I would like to consider some of these
> new features in the post 1.0 era (getting ahead of myself as ususal).
>
> -jason
>
> On Sun, 9 Dec 2001, Lincoln Stein wrote:
> > I would suggest putting this in Bio::Root::RootI
> >
> > sub new {
> > local($^W) = 0;
> > my ($caller, @args) = @_;
> >
> > my $self = $caller->_create_object(@args);
> >
> > my %param = @args;
> > my $verbose = $param{'-VERBOSE'} || $param{'-verbose'};
> >
> > ## See "Comments" above regarding use of _rearrange().
> > $self->verbose($verbose);
> >
> > return $self;
> > }
> >
> > sub _create_object {
> > my $class = shift;
> > warn "Attempt to use deprecated API: Please use Bio::Root::Root
> > instead"; require Bio::Root::Root;
> > return Bio::Root::Root->new(@_);
> > }
> >
> > This way, if they try to create a new Bio::Root::RootI object, they get a
> > Bio::Root::Root (and a deprecation warning) instead.
> >
> > Lincoln
> >
> > On Sunday 09 December 2001 14:54, Ewan Birney wrote:
> > > I basically like the split of Bio::Root::RootI interface away
> > > from implementation, but it does give us a backward compatibility
> > > problem.
> > >
> > >
> > > Some (external) modules written using Bioperl - in particular large
> > > tracks of Ensembl (say - 50 modules) - now break as they assumme that
> > > Bio::Root::RootI new works.
> > >
> > >
> > > There is alot of active ensembl's out there with the current code base,
> > > and we are not going to be able to change these code bases (they are
> > > off the stable branch of ensembl) by Janurary.
> > >
> > >
> > > What I would like to do is reintroduce a new function to RootI (blesses
> > > an anonymous hash) with a strong "deprecated" warning being thrown.
> > >
> > >
> > >
> > > Jason/Lincoln/anyone else - do you think this ok?
> > >
> > >
> > >
> > >
> > > ewan
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > Bioperl-l mailing list
> > > Bioperl-l@bioperl.org
> > > http://bioperl.org/mailman/listinfo/bioperl-l
--
========================================================================
Lincoln D. Stein Cold Spring Harbor Laboratory
lstein@cshl.org Cold Spring Harbor, NY
NOW HIRING BIOINFORMATICS POSTDOCTORAL FELLOWS AND PROGRAMMERS.
PLEASE WRITE FOR DETAILS.
========================================================================