[Biopython-dev] Usage of deprecated function apply()

Peter Slickers piet at clondiag.com
Tue Sep 2 12:45:50 EDT 2003


Since python2.3 the buildin function aplly() is deprecated.
Code using apply() is still running under python2.3, but the
performance is reduced due to calls into python's warn() function.
For example, the blast parser runs only at half speed under
python2.3. Moreover, any code using apply() will NOT be
executable under python2.4.

I suggest to remove an usage of apply() from biopython.
According to the python manual, the apply function should
be replaced by the 'extended call synthax'. The extended call
synthax was introduced in python2.0. Therefore, it is save
to drop the apply() fucntion, since nowadays at least
python2.2 is required to run biopython.

Here are some examples of how to replace apply():

-               obj = apply(klass, (), kwargs)
+               obj = klass( *(), **kwargs)

-        self.this = apply(_KDTreec.new_KDTree,args)
+        self.this = _KDTreec.new_KDTree(*args)

-        reader = apply(self.make_footer_reader,
-                       (self.fileobj,) + self.footer_args,
-                       {"lookahead": self._lookahead})
+        reader = self.make_footer_reader(
+                       *(self.fileobj,) + self.footer_args,
+                       **{"lookahead": self._lookahead})


Today, Tue 02-sep-2003, I have scanned the cvs and found
19 file which make use of apply(). Here is a list of the
affected files:

Bio/EUtils/POM.py
Bio/EUtils/tests/unittest.py
Bio/FilteredReader.py
Bio/KDTree/_KDTree.py
Bio/Prosite/Pattern.py
Bio/RecordFile.py
Bio/SGMLExtractor.py
Bio/Seq.py
Bio/SeqUtils/__init__.py
Bio/Std.py
Bio/config/DBRegistry.py
Bio/sequtils.py
Martel/Iterator.py
Martel/Parser.py
Martel/convert_re.py
Scripts/Performance/biocorba_sql_server.py
Tests/test_KeyWList.py
Tests/unittest.py
Tests/unittestgui.py


If have created a patch which will fix these 19 files.
As I don't have any wright premissions to the cvs repository, I will send
the patch to Jeffrey Chang. He will eventually apply
the patch to the cvs (if this meets approval of the
other developers).

Everybody who is owning one of the affected files
should give a note to Jeffrey if he/she does not like
that his code is patched.


With best regards,
-- 


Peter
-------------------------------------------------------------------
Peter Slickers                             piet at clondiag.com
Clondiag Chip Technologies                 http://www.clondiag.com/
Löbstedter Str. 105
07749 Jena
Germany

Fon:  03641/5947-65                        Fax:  03641/5947-20
-------------------------------------------------------------------




More information about the Biopython-dev mailing list