]> granicus.if.org Git - python/commitdiff
Remove apply()
authorNeal Norwitz <nnorwitz@gmail.com>
Fri, 17 Mar 2006 08:00:19 +0000 (08:00 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Fri, 17 Mar 2006 08:00:19 +0000 (08:00 +0000)
56 files changed:
Demo/classes/bitvec.py
Demo/metaclasses/Eiffel.py
Demo/metaclasses/Meta.py
Demo/metaclasses/Simple.py
Demo/metaclasses/Synch.py
Demo/metaclasses/Trace.py
Demo/pdist/RCSProxy.py
Demo/pdist/client.py
Demo/pdist/server.py
Demo/threads/Coroutine.py
Demo/threads/Generator.py
Demo/threads/find.py
Demo/tix/tixwidgets.py
Demo/tkinter/guido/AttrDialog.py
Demo/tkinter/guido/ManPage.py
Demo/tkinter/guido/ShellWindow.py
Demo/tkinter/guido/kill.py
Demo/tkinter/guido/optionmenu.py
Demo/tkinter/guido/sortvisu.py
Demo/tkinter/guido/svkill.py
Demo/tkinter/matt/window-creation-w-location.py
Doc/api/abstract.tex
Doc/lib/libfuncs.tex
Lib/bsddb/dbobj.py
Lib/bsddb/dbshelve.py
Lib/bsddb/test/test_basics.py
Lib/bsddb/test/test_dbobj.py
Lib/bsddb/test/test_join.py
Lib/compiler/transformer.py
Lib/distutils/archive_util.py
Lib/distutils/command/build_ext.py
Lib/distutils/command/build_py.py
Lib/distutils/dir_util.py
Lib/distutils/filelist.py
Lib/distutils/util.py
Lib/idlelib/MultiCall.py
Lib/logging/__init__.py
Lib/logging/config.py
Lib/plat-mac/gensuitemodule.py
Lib/subprocess.py
Lib/test/crashers/infinite_rec_4.py [deleted file]
Lib/test/test_builtin.py
Mac/Demo/sound/morse.py
Mac/Tools/IDE/ProfileBrowser.py
Mac/Tools/IDE/PyConsole.py
Mac/Tools/IDE/PyDebugger.py
Mac/Tools/IDE/Wapplication.py
Mac/Tools/IDE/Wbase.py
Mac/Tools/macfreeze/macgen_bin.py
Mac/scripts/buildpkg.py
PCbuild/readme.txt
Python/bltinmodule.c
Tools/freeze/freeze.py
Tools/pynche/pyColorChooser.py
Tools/unicode/gencodec.py
Tools/webchecker/webchecker.py

index 2894a56ae7616b96da32b87e8a15141250ea4858..934d33a80fb29bc9145dd2485b7a858bc58f7ad7 100755 (executable)
@@ -172,7 +172,7 @@ class BitVec:
     def __cmp__(self, other, *rest):
         #rprt('%r.__cmp__%r\n' % (self, (other,) + rest))
         if type(other) != type(self):
-            other = apply(bitvec, (other, ) + rest)
+            other = bitvec(other, *rest)
         #expensive solution... recursive binary, with slicing
         length = self._len
         if length == 0 or other._len == 0:
@@ -237,7 +237,7 @@ class BitVec:
         #rprt('%s.__setslice__%r\n' % (self, (i, j, sequence) + rest))
         i, j = _check_slice(self._len, i, j)
         if type(sequence) != type(self):
-            sequence = apply(bitvec, (sequence, ) + rest)
+            sequence = bitvec(sequence, *rest)
         #sequence is now of our own type
         ls_part = self[:i]
         ms_part = self[j:]
@@ -283,7 +283,7 @@ class BitVec:
     def __and__(self, otherseq, *rest):
         #rprt('%r.__and__%r\n' % (self, (otherseq,) + rest))
         if type(otherseq) != type(self):
-            otherseq = apply(bitvec, (otherseq, ) + rest)
+            otherseq = bitvec(otherseq, *rest)
         #sequence is now of our own type
         return BitVec(self._data & otherseq._data, \
                   min(self._len, otherseq._len))
@@ -292,7 +292,7 @@ class BitVec:
     def __xor__(self, otherseq, *rest):
         #rprt('%r.__xor__%r\n' % (self, (otherseq,) + rest))
         if type(otherseq) != type(self):
-            otherseq = apply(bitvec, (otherseq, ) + rest)
+            otherseq = bitvec(otherseq, *rest)
         #sequence is now of our own type
         return BitVec(self._data ^ otherseq._data, \
                   max(self._len, otherseq._len))
@@ -301,7 +301,7 @@ class BitVec:
     def __or__(self, otherseq, *rest):
         #rprt('%r.__or__%r\n' % (self, (otherseq,) + rest))
         if type(otherseq) != type(self):
-            otherseq = apply(bitvec, (otherseq, ) + rest)
+            otherseq = bitvec(otherseq, *rest)
         #sequence is now of our own type
         return BitVec(self._data | otherseq._data, \
                   max(self._len, otherseq._len))
@@ -316,7 +316,7 @@ class BitVec:
         #needed for *some* of the arithmetic operations
         #rprt('%r.__coerce__%r\n' % (self, (otherseq,) + rest))
         if type(otherseq) != type(self):
-            otherseq = apply(bitvec, (otherseq, ) + rest)
+            otherseq = bitvec(otherseq, *rest)
         return self, otherseq
 
     def __int__(self):
index 24fac148de0f6001b221b8fe858fb9bf915d2016..8c39746c559cc4b85a50e8af71b8bae1accc0d13 100644 (file)
@@ -82,10 +82,10 @@ class EiffelMethodWrapper(MetaMethodWrapper):
 
     def __call__(self, *args, **kw):
         if self.pre:
-            apply(self.pre, args, kw)
-        Result = apply(self.func, (self.inst,) + args, kw)
+            self.pre(*args, **kw)
+        Result = self.func(self.inst, *args, **kw)
         if self.post:
-            apply(self.post, (Result,) + args, kw)
+            self.post(Result, *args, **kw)
         return Result
 
 class EiffelHelper(MetaHelper):
index 580f5821ce5df10c3f203172a9f1ca710bc60b86..9529e0f8df76265e5a9cc91a8e166bb7bb7d2d8a 100644 (file)
@@ -14,7 +14,7 @@ class MetaMethodWrapper:
         self.__name__ = self.func.__name__
 
     def __call__(self, *args, **kw):
-        return apply(self.func, (self.inst,) + args, kw)
+        return self.func(self.inst, *args, **kw)
 
 class MetaHelper:
 
@@ -86,7 +86,7 @@ class MetaClass:
             init = inst.__getattr__('__init__')
         except AttributeError:
             init = lambda: None
-        apply(init, args, kw)
+        init(*args, **kw)
         return inst
 
 
index 03ed2592eefa8d71a6e24d41646ac6f855ba2546..e3e54f76bee20a59c0e5bae88c9cd78af084e2e4 100644 (file)
@@ -28,7 +28,7 @@ class BoundMethod:
         self.instance = instance
     def __call__(self, *args):
         print "calling", self.function, "for", self.instance, "with", args
-        return apply(self.function, (self.instance,) + args)
+        return self.function(self.instance, *args)
 
 Trace = Tracing('Trace', (), {})
 
index 80e52d9fd411ef4f1917ce161c390f394619f8f4..cd13e86207cf641913be6b93c03317d3baae6ab4 100644 (file)
@@ -148,10 +148,10 @@ from Meta import MetaClass, MetaHelper, MetaMethodWrapper
 class LockingMethodWrapper(MetaMethodWrapper):
     def __call__(self, *args, **kw):
         if self.__name__[:1] == '_' and self.__name__[1:] != '_':
-            return apply(self.func, (self.inst,) + args, kw)
+            return self.func(self.inst, *args, **kw)
         self.inst.__lock__.acquire()
         try:
-            return apply(self.func, (self.inst,) + args, kw)
+            return self.func(self.inst, *args, **kw)
         finally:
             self.inst.__lock__.release()
 
index 69b9fab7d942443a29b0752bb7c905d7a3ae17ce..97fda5642d684f3fd1522769dc5b7f3055122ca2 100644 (file)
@@ -50,7 +50,7 @@ class TraceMetaClass:
             init = inst.__getattr__('__init__')
         except AttributeError:
             init = lambda: None
-        apply(init, args, kw)
+        init(*args, **kw)
         return inst
 
     __trace_output__ = None
@@ -85,7 +85,7 @@ class NotTracingWrapper:
         self.func = func
         self.inst = inst
     def __call__(self, *args, **kw):
-        return apply(self.func, (self.inst,) + args, kw)
+        return self.func(self.inst, *args, **kw)
 
 class TracingWrapper(NotTracingWrapper):
     def __call__(self, *args, **kw):
@@ -93,7 +93,7 @@ class TracingWrapper(NotTracingWrapper):
                                  "calling %s, inst=%s, args=%s, kw=%s",
                                  self.__name__, self.inst, args, kw)
         try:
-            rv = apply(self.func, (self.inst,) + args, kw)
+            rv = self.func(self.inst, *args, **kw)
         except:
             t, v, tb = sys.exc_info()
             self.inst.__trace_call__(self.inst.__trace_output__,
index 87c65ccf0e2ff8474a4d5b277e4cdb19bd35c7bb..ff3f0ce02163e8722f882f76f4bc3f0ee54bed01 100755 (executable)
@@ -186,7 +186,7 @@ def test():
     if hasattr(proxy, what):
         attr = getattr(proxy, what)
         if callable(attr):
-            print apply(attr, tuple(sys.argv[2:]))
+            print attr(*sys.argv[2:])
         else:
             print repr(attr)
     else:
index 3e97d8469009b64965bf15b3d089d599e30763c3..664c41b59ea77704ec09046f18cc5fd016fd993f 100755 (executable)
@@ -132,12 +132,11 @@ from security import Security
 class SecureClient(Client, Security):
 
     def __init__(self, *args):
-        import string
-        apply(self._pre_init, args)
+        self._pre_init(*args)
         Security.__init__(self)
         self._wf.flush()
         line = self._rf.readline()
-        challenge = string.atoi(string.strip(line))
+        challenge = int(line.strip())
         response = self._encode_challenge(challenge)
         line = repr(long(response))
         if line[-1] in 'Ll': line = line[:-1]
index 01b3249371509a9663fb4d4f1a6681d6c0f2d86d..79afa8b9bdba120f0b74aef63858749c6e9d3860 100755 (executable)
@@ -81,7 +81,7 @@ class Server:
                 raise NameError, "illegal method name %s" % repr(methodname)
             else:
                 method = getattr(self, methodname)
-                reply = (None, apply(method, args), id)
+                reply = (None, method(*args), id)
         except:
             reply = (sys.exc_info()[:2], id)
         if id < 0 and reply[:2] == (None, None):
@@ -117,7 +117,7 @@ from security import Security
 class SecureServer(Server, Security):
 
     def __init__(self, *args):
-        apply(Server.__init__, (self,) + args)
+        Server.__init__(self, *args)
         Security.__init__(self)
 
     def _verify(self, conn, address):
index 4cc65f7bf8d1eafa82b78e98257e2a782916b7ab..10fa303f1390a69dfd48328b5a2144615097b4c5 100644 (file)
@@ -115,7 +115,7 @@ class Coroutine:
         if not self.killed:
             try:
                 try:
-                    apply(me.f, args)
+                    me.f(*args)
                 except Killed:
                     pass
             finally:
index a2713af1a18f165504fb189e0691d87276fd72fa..63bed9b9059d70597c65686c62f61c8cd9b0d540 100644 (file)
@@ -22,7 +22,7 @@ class Generator:
             self.putlock.acquire()
             if not self.killed:
                 try:
-                    apply(self.func, (self,) + self.args)
+                    self.func(self, *self.args)
                 except Killed:
                     pass
         finally:
index 7d5edc1c50b19a9a6361d0c641f9aa9457df544b..14148b8bb96cd307a35f94da066ad2ad02661d37 100644 (file)
@@ -17,7 +17,6 @@
 
 import sys
 import getopt
-import string
 import time
 import os
 from stat import *
@@ -85,7 +84,7 @@ class WorkQ:
             if not job:
                 break
             func, args = job
-            apply(func, args)
+            func(*args)
             self._donework()
 
     def run(self, nworkers):
@@ -104,7 +103,7 @@ def main():
     opts, args = getopt.getopt(sys.argv[1:], '-w:')
     for opt, arg in opts:
         if opt == '-w':
-            nworkers = string.atoi(arg)
+            nworkers = int(arg)
     if not args:
         args = [os.curdir]
 
index de2e22e7eb63e8d97efba2112bc491c55b84d397..bf7102ad4d8946285dc9351dcbfd8ebd33ed049e 100644 (file)
@@ -71,8 +71,7 @@ class Demo:
         hm.add_checkbutton(label='BalloonHelp', underline=0, command=ToggleHelp,
                            variable=self.useBalloons)
         # The trace variable option doesn't seem to work, instead I use 'command'
-        #apply(w.tk.call, ('trace', 'variable', self.useBalloons, 'w',
-        #                     ToggleHelp))
+        #w.tk.call('trace', 'variable', self.useBalloons, 'w', ToggleHelp))
 
         return w
 
index 86333adc7d1b5434de31e1fc60a9c200c49c5e3b..9fa699e2878be8c67ffb8ec01ee42fe89998334e 100755 (executable)
@@ -155,8 +155,7 @@ class PackDialog(Dialog):
         def set(self, e=None):
             self.current = self.var.get()
             try:
-                apply(self.dialog.widget.pack, (),
-                      {self.option: self.current})
+                self.dialog.widget.pack(**{self.option: self.current})
             except TclError, msg:
                 print msg
                 self.refresh()
index 7d6fe002306993659b48097da4f5d3954c7b8656..911961e59eebff56812a3afc2c7a5d3515c5ee77 100755 (executable)
@@ -22,7 +22,7 @@ class EditableManPage(ScrolledText):
     # Initialize instance
     def __init__(self, master=None, **cnf):
         # Initialize base class
-        apply(ScrolledText.__init__, (self, master), cnf)
+        ScrolledText.__init__(self, master, **cnf)
 
         # Define tags for formatting styles
         self.tag_config('X', underline=1)
@@ -178,7 +178,7 @@ class ReadonlyManPage(EditableManPage):
     # Initialize instance
     def __init__(self, master=None, **cnf):
         cnf['state'] = DISABLED
-        apply(EditableManPage.__init__, (self, master), cnf)
+        EditableManPage.__init__(self, master, **cnf)
 
 # Alias
 ManPage = ReadonlyManPage
index 609101bc88b4d643b7dba80db6c33d7f8b19b9b0..6cdce0b4ef93273f21fd69c842ad1d6d218cae8c 100755 (executable)
@@ -20,7 +20,7 @@ class ShellWindow(ScrolledText):
         args = string.split(shell)
         shell = args[0]
 
-        apply(ScrolledText.__init__, (self, master), cnf)
+        ScrolledText.__init__(self, master, **cnf)
         self.pos = '1.0'
         self.bind('<Return>', self.inputhandler)
         self.bind('<Control-c>', self.sigint)
index e7df26121354e3014e32f958ea39e06253b7f25f..dd0dbf4f9d28ee7835e2ac1fc71ae4ba94cc86c2 100755 (executable)
@@ -9,7 +9,7 @@ import os
 
 class BarButton(Menubutton):
     def __init__(self, master=None, **cnf):
-        apply(Menubutton.__init__, (self, master), cnf)
+        Menubutton.__init__(self, master, **cnf)
         self.pack(side=LEFT)
         self.menu = Menu(self, name='menu')
         self['menu'] = self.menu
index be9d3ac2a64180a8a67e7309ce5265c862db4885..7365fa628e5e9aba6937c6091b56f611bda6e7a6 100644 (file)
@@ -21,7 +21,7 @@ CHOICES = "Aah", "Bee", "Cee", "Dee", "Eff"
 var2  = StringVar()
 var2.set(CHOICES[0])
 
-menu2 = apply(OptionMenu, (root, var2) + tuple(CHOICES))
+menu2 = OptionMenu(root, var2, *CHOICES)
 menu2.pack()
 
 root.mainloop()
index f18f2c11687bc916b5f5ffd2af8dad0ad9aca6af..3e4454f9a05012d6f53c37db06ed1c5aa2cffb88 100644 (file)
@@ -523,8 +523,7 @@ class SortDemo:
         if self.size not in sizes:
             sizes.append(self.size)
             sizes.sort()
-        self.m_size = apply(OptionMenu,
-                            (self.botleftframe, self.v_size) + tuple(sizes))
+        self.m_size = OptionMenu(self.botleftframe, self.v_size, *sizes)
         self.m_size.pack(fill=X)
 
         self.v_speed = StringVar(self.master)
index 69f7f3b1687abc934c7e5bb98d12cee2ca9dc2d3..95f61b85523528f1b66a70791887ac24fbec91e7 100755 (executable)
@@ -16,7 +16,7 @@ user = os.environ['LOGNAME']
 
 class BarButton(Menubutton):
     def __init__(self, master=None, **cnf):
-        apply(Menubutton.__init__, (self, master), cnf)
+        Menubutton.__init__(self, master, **cnf)
         self.pack(side=LEFT)
         self.menu = Menu(self, name='menu')
         self['menu'] = self.menu
@@ -61,7 +61,7 @@ class Kill(Frame):
     def do_1(self, e):
         self.kill(e.widget.get(e.widget.nearest(e.y)))
     def __init__(self, master=None, **cnf):
-        apply(Frame.__init__, (self, master), cnf)
+        Frame.__init__(self, master, **cnf)
         self.pack(expand=1, fill=BOTH)
         self.bar = Frame(self, name='bar', relief=RAISED,
                          borderwidth=2)
index 3f2b5b0695236fcfd79799efbaadafee6f05636d..9f23bac709fe092fddf87f5745dcc5ecadf5ab28 100644 (file)
@@ -13,7 +13,7 @@ class QuitButton(Button):
             kwargs["text"] = "QUIT"
         if not kwargs.has_key("command"):
             kwargs["command"] = master.quit
-        apply(Button.__init__, (self, master) + args, kwargs)
+        Button.__init__(self, master, *args, **kwargs)
 
 class Test(Frame):
     def makeWindow(self, *args):
index f01512c9e420c7635b74bb83351b660ab1f1ccbe..e1c3901d65094b5b2c37e4eb70d41b5c9d61df03 100644 (file)
@@ -235,7 +235,6 @@ determination.
   or \NULL{} on failure.  This is the equivalent of the Python
   expression \samp{apply(\var{callable_object}, \var{args}, \var{kw})}
   or \samp{\var{callable_object}(*\var{args}, **\var{kw})}.
-  \bifuncindex{apply}
   \versionadded{2.2}
 \end{cfuncdesc}
 
@@ -248,7 +247,6 @@ determination.
   success, or \NULL{} on failure.  This is the equivalent of the
   Python expression \samp{apply(\var{callable_object}, \var{args})} or
   \samp{\var{callable_object}(*\var{args})}.
-  \bifuncindex{apply}
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyObject_CallFunction}{PyObject *callable,
@@ -260,7 +258,6 @@ determination.
   result of the call on success, or \NULL{} on failure.  This is the
   equivalent of the Python expression \samp{apply(\var{callable},
   \var{args})} or \samp{\var{callable}(*\var{args})}.
-  \bifuncindex{apply}
 \end{cfuncdesc}
 
 
index c75c172a60fdcd7b360324b2f24c0167a70a00b7..0be3aa9dbc37b0a9f56a9dce62abbfdcdba63844 100644 (file)
@@ -1169,26 +1169,6 @@ bypass these functions without concerns about missing something important.
 
 \setindexsubitem{(non-essential built-in functions)}
 
-\begin{funcdesc}{apply}{function, args\optional{, keywords}}
-  The \var{function} argument must be a callable object (a
-  user-defined or built-in function or method, or a class object) and
-  the \var{args} argument must be a sequence.  The \var{function} is
-  called with \var{args} as the argument list; the number of arguments
-  is the length of the tuple.
-  If the optional \var{keywords} argument is present, it must be a
-  dictionary whose keys are strings.  It specifies keyword arguments
-  to be added to the end of the argument list.
-  Calling \function{apply()} is different from just calling
-  \code{\var{function}(\var{args})}, since in that case there is always
-  exactly one argument.  The use of \function{apply()} is equivalent
-  to \code{\var{function}(*\var{args}, **\var{keywords})}.
-  Use of \function{apply()} is not necessary since the ``extended call
-  syntax,'' as used in the last example, is completely equivalent.
-
-  \deprecated{2.3}{Use the extended call syntax instead, as described
-                   above.}
-\end{funcdesc}
-
 \begin{funcdesc}{buffer}{object\optional{, offset\optional{, size}}}
   The \var{object} argument must be an object that supports the buffer
   call interface (such as strings, arrays, and buffers).  A new buffer
index 5bcf84bbb92523fc645ba441463b79e22d9e5c03..4a75dd27c4ab35ca2c1d917c4bedaf28ab8b5cf0 100644 (file)
@@ -31,82 +31,82 @@ except ImportError:
 
 class DBEnv:
     def __init__(self, *args, **kwargs):
-        self._cobj = apply(db.DBEnv, args, kwargs)
+        self._cobj = db.DBEnv(*args, **kwargs)
 
     def close(self, *args, **kwargs):
-        return apply(self._cobj.close, args, kwargs)
+        return self._cobj.close(*args, **kwargs)
     def open(self, *args, **kwargs):
-        return apply(self._cobj.open, args, kwargs)
+        return self._cobj.open(*args, **kwargs)
     def remove(self, *args, **kwargs):
-        return apply(self._cobj.remove, args, kwargs)
+        return self._cobj.remove(*args, **kwargs)
     def set_shm_key(self, *args, **kwargs):
-        return apply(self._cobj.set_shm_key, args, kwargs)
+        return self._cobj.set_shm_key(*args, **kwargs)
     def set_cachesize(self, *args, **kwargs):
-        return apply(self._cobj.set_cachesize, args, kwargs)
+        return self._cobj.set_cachesize(*args, **kwargs)
     def set_data_dir(self, *args, **kwargs):
-        return apply(self._cobj.set_data_dir, args, kwargs)
+        return self._cobj.set_data_dir(*args, **kwargs)
     def set_flags(self, *args, **kwargs):
-        return apply(self._cobj.set_flags, args, kwargs)
+        return self._cobj.set_flags(*args, **kwargs)
     def set_lg_bsize(self, *args, **kwargs):
-        return apply(self._cobj.set_lg_bsize, args, kwargs)
+        return self._cobj.set_lg_bsize(*args, **kwargs)
     def set_lg_dir(self, *args, **kwargs):
-        return apply(self._cobj.set_lg_dir, args, kwargs)
+        return self._cobj.set_lg_dir(*args, **kwargs)
     def set_lg_max(self, *args, **kwargs):
-        return apply(self._cobj.set_lg_max, args, kwargs)
+        return self._cobj.set_lg_max(*args, **kwargs)
     def set_lk_detect(self, *args, **kwargs):
-        return apply(self._cobj.set_lk_detect, args, kwargs)
+        return self._cobj.set_lk_detect(*args, **kwargs)
     def set_lk_max(self, *args, **kwargs):
-        return apply(self._cobj.set_lk_max, args, kwargs)
+        return self._cobj.set_lk_max(*args, **kwargs)
     def set_lk_max_locks(self, *args, **kwargs):
-        return apply(self._cobj.set_lk_max_locks, args, kwargs)
+        return self._cobj.set_lk_max_locks(*args, **kwargs)
     def set_lk_max_lockers(self, *args, **kwargs):
-        return apply(self._cobj.set_lk_max_lockers, args, kwargs)
+        return self._cobj.set_lk_max_lockers(*args, **kwargs)
     def set_lk_max_objects(self, *args, **kwargs):
-        return apply(self._cobj.set_lk_max_objects, args, kwargs)
+        return self._cobj.set_lk_max_objects(*args, **kwargs)
     def set_mp_mmapsize(self, *args, **kwargs):
-        return apply(self._cobj.set_mp_mmapsize, args, kwargs)
+        return self._cobj.set_mp_mmapsize(*args, **kwargs)
     def set_timeout(self, *args, **kwargs):
-        return apply(self._cobj.set_timeout, args, kwargs)
+        return self._cobj.set_timeout(*args, **kwargs)
     def set_tmp_dir(self, *args, **kwargs):
-        return apply(self._cobj.set_tmp_dir, args, kwargs)
+        return self._cobj.set_tmp_dir(*args, **kwargs)
     def txn_begin(self, *args, **kwargs):
-        return apply(self._cobj.txn_begin, args, kwargs)
+        return self._cobj.txn_begin(*args, **kwargs)
     def txn_checkpoint(self, *args, **kwargs):
-        return apply(self._cobj.txn_checkpoint, args, kwargs)
+        return self._cobj.txn_checkpoint(*args, **kwargs)
     def txn_stat(self, *args, **kwargs):
-        return apply(self._cobj.txn_stat, args, kwargs)
+        return self._cobj.txn_stat(*args, **kwargs)
     def set_tx_max(self, *args, **kwargs):
-        return apply(self._cobj.set_tx_max, args, kwargs)
+        return self._cobj.set_tx_max(*args, **kwargs)
     def set_tx_timestamp(self, *args, **kwargs):
-        return apply(self._cobj.set_tx_timestamp, args, kwargs)
+        return self._cobj.set_tx_timestamp(*args, **kwargs)
     def lock_detect(self, *args, **kwargs):
-        return apply(self._cobj.lock_detect, args, kwargs)
+        return self._cobj.lock_detect(*args, **kwargs)
     def lock_get(self, *args, **kwargs):
-        return apply(self._cobj.lock_get, args, kwargs)
+        return self._cobj.lock_get(*args, **kwargs)
     def lock_id(self, *args, **kwargs):
-        return apply(self._cobj.lock_id, args, kwargs)
+        return self._cobj.lock_id(*args, **kwargs)
     def lock_put(self, *args, **kwargs):
-        return apply(self._cobj.lock_put, args, kwargs)
+        return self._cobj.lock_put(*args, **kwargs)
     def lock_stat(self, *args, **kwargs):
-        return apply(self._cobj.lock_stat, args, kwargs)
+        return self._cobj.lock_stat(*args, **kwargs)
     def log_archive(self, *args, **kwargs):
-        return apply(self._cobj.log_archive, args, kwargs)
+        return self._cobj.log_archive(*args, **kwargs)
     def set_get_returns_none(self, *args, **kwargs):
-        return apply(self._cobj.set_get_returns_none, args, kwargs)
+        return self._cobj.set_get_returns_none(*args, **kwargs)
 
     if db.version() >= (4,1):
         def dbremove(self, *args, **kwargs):
-            return apply(self._cobj.dbremove, args, kwargs)
+            return self._cobj.dbremove(*args, **kwargs)
         def dbrename(self, *args, **kwargs):
-            return apply(self._cobj.dbrename, args, kwargs)
+            return self._cobj.dbrename(*args, **kwargs)
         def set_encrypt(self, *args, **kwargs):
-            return apply(self._cobj.set_encrypt, args, kwargs)
+            return self._cobj.set_encrypt(*args, **kwargs)
 
 
 class DB(DictMixin):
     def __init__(self, dbenv, *args, **kwargs):
         # give it the proper DBEnv C object that its expecting
-        self._cobj = apply(db.DB, (dbenv._cobj,) + args, kwargs)
+        self._cobj = db.DB(dbenv._cobj, *args, **kwargs)
 
     # TODO are there other dict methods that need to be overridden?
     def __len__(self):
@@ -119,92 +119,92 @@ class DB(DictMixin):
         del self._cobj[arg]
 
     def append(self, *args, **kwargs):
-        return apply(self._cobj.append, args, kwargs)
+        return self._cobj.append(*args, **kwargs)
     def associate(self, *args, **kwargs):
-        return apply(self._cobj.associate, args, kwargs)
+        return self._cobj.associate(*args, **kwargs)
     def close(self, *args, **kwargs):
-        return apply(self._cobj.close, args, kwargs)
+        return self._cobj.close(*args, **kwargs)
     def consume(self, *args, **kwargs):
-        return apply(self._cobj.consume, args, kwargs)
+        return self._cobj.consume(*args, **kwargs)
     def consume_wait(self, *args, **kwargs):
-        return apply(self._cobj.consume_wait, args, kwargs)
+        return self._cobj.consume_wait(*args, **kwargs)
     def cursor(self, *args, **kwargs):
-        return apply(self._cobj.cursor, args, kwargs)
+        return self._cobj.cursor(*args, **kwargs)
     def delete(self, *args, **kwargs):
-        return apply(self._cobj.delete, args, kwargs)
+        return self._cobj.delete(*args, **kwargs)
     def fd(self, *args, **kwargs):
-        return apply(self._cobj.fd, args, kwargs)
+        return self._cobj.fd(*args, **kwargs)
     def get(self, *args, **kwargs):
-        return apply(self._cobj.get, args, kwargs)
+        return self._cobj.get(*args, **kwargs)
     def pget(self, *args, **kwargs):
-        return apply(self._cobj.pget, args, kwargs)
+        return self._cobj.pget(*args, **kwargs)
     def get_both(self, *args, **kwargs):
-        return apply(self._cobj.get_both, args, kwargs)
+        return self._cobj.get_both(*args, **kwargs)
     def get_byteswapped(self, *args, **kwargs):
-        return apply(self._cobj.get_byteswapped, args, kwargs)
+        return self._cobj.get_byteswapped(*args, **kwargs)
     def get_size(self, *args, **kwargs):
-        return apply(self._cobj.get_size, args, kwargs)
+        return self._cobj.get_size(*args, **kwargs)
     def get_type(self, *args, **kwargs):
-        return apply(self._cobj.get_type, args, kwargs)
+        return self._cobj.get_type(*args, **kwargs)
     def join(self, *args, **kwargs):
-        return apply(self._cobj.join, args, kwargs)
+        return self._cobj.join(*args, **kwargs)
     def key_range(self, *args, **kwargs):
-        return apply(self._cobj.key_range, args, kwargs)
+        return self._cobj.key_range(*args, **kwargs)
     def has_key(self, *args, **kwargs):
-        return apply(self._cobj.has_key, args, kwargs)
+        return self._cobj.has_key(*args, **kwargs)
     def items(self, *args, **kwargs):
-        return apply(self._cobj.items, args, kwargs)
+        return self._cobj.items(*args, **kwargs)
     def keys(self, *args, **kwargs):
-        return apply(self._cobj.keys, args, kwargs)
+        return self._cobj.keys(*args, **kwargs)
     def open(self, *args, **kwargs):
-        return apply(self._cobj.open, args, kwargs)
+        return self._cobj.open(*args, **kwargs)
     def put(self, *args, **kwargs):
-        return apply(self._cobj.put, args, kwargs)
+        return self._cobj.put(*args, **kwargs)
     def remove(self, *args, **kwargs):
-        return apply(self._cobj.remove, args, kwargs)
+        return self._cobj.remove(*args, **kwargs)
     def rename(self, *args, **kwargs):
-        return apply(self._cobj.rename, args, kwargs)
+        return self._cobj.rename(*args, **kwargs)
     def set_bt_minkey(self, *args, **kwargs):
-        return apply(self._cobj.set_bt_minkey, args, kwargs)
+        return self._cobj.set_bt_minkey(*args, **kwargs)
     def set_bt_compare(self, *args, **kwargs):
-        return apply(self._cobj.set_bt_compare, args, kwargs)
+        return self._cobj.set_bt_compare(*args, **kwargs)
     def set_cachesize(self, *args, **kwargs):
-        return apply(self._cobj.set_cachesize, args, kwargs)
+        return self._cobj.set_cachesize(*args, **kwargs)
     def set_flags(self, *args, **kwargs):
-        return apply(self._cobj.set_flags, args, kwargs)
+        return self._cobj.set_flags(*args, **kwargs)
     def set_h_ffactor(self, *args, **kwargs):
-        return apply(self._cobj.set_h_ffactor, args, kwargs)
+        return self._cobj.set_h_ffactor(*args, **kwargs)
     def set_h_nelem(self, *args, **kwargs):
-        return apply(self._cobj.set_h_nelem, args, kwargs)
+        return self._cobj.set_h_nelem(*args, **kwargs)
     def set_lorder(self, *args, **kwargs):
-        return apply(self._cobj.set_lorder, args, kwargs)
+        return self._cobj.set_lorder(*args, **kwargs)
     def set_pagesize(self, *args, **kwargs):
-        return apply(self._cobj.set_pagesize, args, kwargs)
+        return self._cobj.set_pagesize(*args, **kwargs)
     def set_re_delim(self, *args, **kwargs):
-        return apply(self._cobj.set_re_delim, args, kwargs)
+        return self._cobj.set_re_delim(*args, **kwargs)
     def set_re_len(self, *args, **kwargs):
-        return apply(self._cobj.set_re_len, args, kwargs)
+        return self._cobj.set_re_len(*args, **kwargs)
     def set_re_pad(self, *args, **kwargs):
-        return apply(self._cobj.set_re_pad, args, kwargs)
+        return self._cobj.set_re_pad(*args, **kwargs)
     def set_re_source(self, *args, **kwargs):
-        return apply(self._cobj.set_re_source, args, kwargs)
+        return self._cobj.set_re_source(*args, **kwargs)
     def set_q_extentsize(self, *args, **kwargs):
-        return apply(self._cobj.set_q_extentsize, args, kwargs)
+        return self._cobj.set_q_extentsize(*args, **kwargs)
     def stat(self, *args, **kwargs):
-        return apply(self._cobj.stat, args, kwargs)
+        return self._cobj.stat(*args, **kwargs)
     def sync(self, *args, **kwargs):
-        return apply(self._cobj.sync, args, kwargs)
+        return self._cobj.sync(*args, **kwargs)
     def type(self, *args, **kwargs):
-        return apply(self._cobj.type, args, kwargs)
+        return self._cobj.type(*args, **kwargs)
     def upgrade(self, *args, **kwargs):
-        return apply(self._cobj.upgrade, args, kwargs)
+        return self._cobj.upgrade(*args, **kwargs)
     def values(self, *args, **kwargs):
-        return apply(self._cobj.values, args, kwargs)
+        return self._cobj.values(*args, **kwargs)
     def verify(self, *args, **kwargs):
-        return apply(self._cobj.verify, args, kwargs)
+        return self._cobj.verify(*args, **kwargs)
     def set_get_returns_none(self, *args, **kwargs):
-        return apply(self._cobj.set_get_returns_none, args, kwargs)
+        return self._cobj.set_get_returns_none(*args, **kwargs)
 
     if db.version() >= (4,1):
         def set_encrypt(self, *args, **kwargs):
-            return apply(self._cobj.set_encrypt, args, kwargs)
+            return self._cobj.set_encrypt(*args, **kwargs)
index d341ab791092cb3c50c0efc11e7da8419f5a2ef5..5cd4a53e8181b036c7237e4765eb95e3841b2744 100644 (file)
@@ -169,7 +169,7 @@ class DBShelf(DictMixin):
         # given nothing is passed to the extension module.  That way
         # an exception can be raised if set_get_returns_none is turned
         # off.
-        data = apply(self.db.get, args, kw)
+        data = self.db.get(*args, **kw)
         try:
             return cPickle.loads(data)
         except (TypeError, cPickle.UnpicklingError):
@@ -236,7 +236,7 @@ class DBShelfCursor:
     def get(self, *args):
         count = len(args)  # a method overloading hack
         method = getattr(self, 'get_%d' % count)
-        apply(method, args)
+        method(*args)
 
     def get_1(self, flags):
         rec = self.dbc.get(flags)
index 24c40388708b0492abfa521505912648a794b558..7e8f835f4ad3669cc80156b8f65d929cc2840739 100644 (file)
@@ -444,7 +444,7 @@ class BasicTestCase(unittest.TestCase):
                     print "attempting to use a closed cursor's %s method" % \
                           method
                 # a bug may cause a NULL pointer dereference...
-                apply(getattr(c, method), args)
+                getattr(c, method)(*args)
             except db.DBError, val:
                 assert val[0] == 0
                 if verbose: print val
index 6799fc9c220a80c72123d025ad4f5e824dd9e343..13058832d63f0b382c48ce1315b5b9e0a9c0e174 100644 (file)
@@ -39,7 +39,7 @@ class dbobjTestCase(unittest.TestCase):
             def put(self, key, *args, **kwargs):
                 key = string.upper(key)
                 # call our parent classes put method with an upper case key
-                return apply(dbobj.DB.put, (self, key) + args, kwargs)
+                return dbobj.DB.put(self, key, *args, **kwargs)
         self.env = TestDBEnv()
         self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL)
         self.db = TestDB(self.env)
index 73edd114ee4afbcf445f542b2a1d4fdc9b23c71d..69a1e9deb88d176a8a5fd27ba6ae72f2af70d5fd 100644 (file)
@@ -72,13 +72,13 @@ class JoinTestCase(unittest.TestCase):
         # create and populate primary index
         priDB = db.DB(self.env)
         priDB.open(self.filename, "primary", db.DB_BTREE, db.DB_CREATE)
-        map(lambda t, priDB=priDB: apply(priDB.put, t), ProductIndex)
+        map(lambda t, priDB=priDB: priDB.put(*t), ProductIndex)
 
         # create and populate secondary index
         secDB = db.DB(self.env)
         secDB.set_flags(db.DB_DUP | db.DB_DUPSORT)
         secDB.open(self.filename, "secondary", db.DB_BTREE, db.DB_CREATE)
-        map(lambda t, secDB=secDB: apply(secDB.put, t), ColorIndex)
+        map(lambda t, secDB=secDB: secDB.put(*t), ColorIndex)
 
         sCursor = None
         jCursor = None
index cc91b4f10ce5191cd4bbfa296352e669df0e99cf..504e283b0ae3f818a4d4a8a477ca5bba1f49f369 100644 (file)
@@ -90,7 +90,7 @@ def Node(*args):
             raise
     else:
         raise WalkerError, "Can't find appropriate Node type: %s" % str(args)
-        #return apply(ast.Node, args)
+        #return ast.Node(*args)
 
 class Transformer:
     """Utility object for transforming Python parse trees.
index 6aa5e635d7164370fb0d8d425d92f6ad61c34d8a..b725a14b410594247d16f26ce67c0922eb19da2b 100644 (file)
@@ -162,7 +162,7 @@ def make_archive (base_name, format,
     func = format_info[0]
     for (arg,val) in format_info[1]:
         kwargs[arg] = val
-    filename = apply(func, (base_name, base_dir), kwargs)
+    filename = func(base_name, base_dir, **kwargs)
 
     if root_dir is not None:
         log.debug("changing back to '%s'", save_cwd)
index 4191c76cefe3011aa2a76f2fadfc2b4140656d3e..6ea5d5799817613658f43c403bb3e04da5bd95c4 100644 (file)
@@ -613,8 +613,8 @@ class build_ext (Command):
         # extensions in debug_mode are named 'module_d.pyd' under windows
         so_ext = get_config_var('SO')
         if os.name == 'nt' and self.debug:
-            return apply(os.path.join, ext_path) + '_d' + so_ext
-        return apply(os.path.join, ext_path) + so_ext
+            return os.path.join(*ext_path) + '_d' + so_ext
+        return os.path.join(*ext_path) + so_ext
 
     def get_export_symbols (self, ext):
         """Return the list of symbols that a shared extension has to
index 621bcb4af3cde17304a30aa4975edd3ee47510af..3b7ec62c5998a27ee51e1b97faa5fe962e263253 100644 (file)
@@ -154,7 +154,7 @@ class build_py (Command):
 
         if not self.package_dir:
             if path:
-                return apply(os.path.join, path)
+                return os.path.join(*path)
             else:
                 return ''
         else:
@@ -167,7 +167,7 @@ class build_py (Command):
                     del path[-1]
                 else:
                     tail.insert(0, pdir)
-                    return apply(os.path.join, tail)
+                    return os.path.join(*tail)
             else:
                 # Oops, got all the way through 'path' without finding a
                 # match in package_dir.  If package_dir defines a directory
@@ -181,7 +181,7 @@ class build_py (Command):
                     tail.insert(0, pdir)
 
                 if tail:
-                    return apply(os.path.join, tail)
+                    return os.path.join(*tail)
                 else:
                     return ''
 
@@ -335,7 +335,7 @@ class build_py (Command):
 
     def get_module_outfile (self, build_dir, package, module):
         outfile_path = [build_dir] + list(package) + [module + ".py"]
-        return apply(os.path.join, outfile_path)
+        return os.path.join(*outfile_path)
 
 
     def get_outputs (self, include_bytecode=1):
index 43994db3ffd7708bd3a9a9f9ae9894653ad516be..a4aff58e3d11b94a386f0dd4fabe60e5ea1ed837 100644 (file)
@@ -204,7 +204,7 @@ def remove_tree (directory, verbose=0, dry_run=0):
     _build_cmdtuple(directory, cmdtuples)
     for cmd in cmdtuples:
         try:
-            apply(cmd[0], (cmd[1],))
+            cmd[0](cmd[1])
             # remove dir from cache if it's already there
             abspath = os.path.abspath(cmd[1])
             if _path_created.has_key(abspath):
index 43f9aaaf5bb3d43b50a6e6048fb2a805344e7d0d..4bbdd1f00fa8812a044b52bf04e15faa31dbdf7e 100644 (file)
@@ -69,7 +69,7 @@ class FileList:
         sortable_files.sort()
         self.files = []
         for sort_tuple in sortable_files:
-            self.files.append(apply(os.path.join, sort_tuple))
+            self.files.append(os.path.join(*sort_tuple))
 
 
     # -- Other miscellaneous utility methods ---------------------------
index 387e9bdc930042c0ce8c9cdf77a42da608e6b8b6..889bf136030b6950259b6b4e380ec81fbb7d14f3 100644 (file)
@@ -95,7 +95,7 @@ def convert_path (pathname):
         paths.remove('.')
     if not paths:
         return os.curdir
-    return apply(os.path.join, paths)
+    return os.path.join(*paths)
 
 # convert_path ()
 
@@ -295,7 +295,7 @@ def execute (func, args, msg=None, verbose=0, dry_run=0):
 
     log.info(msg)
     if not dry_run:
-        apply(func, args)
+        func(*args)
 
 
 def strtobool (val):
index ea8b140e165a7629e253abb8a7b3b4a2d2b75a50..4f5311586fe4ed09159a489e72acbcf8aa95e280 100644 (file)
@@ -296,7 +296,7 @@ def MultiCallCreator(widget):
         assert issubclass(widget, Tkinter.Misc)
 
         def __init__(self, *args, **kwargs):
-            apply(widget.__init__, (self,)+args, kwargs)
+            widget.__init__(self, *args, **kwargs)
             # a dictionary which maps a virtual event to a tuple with:
             #  0. the function binded
             #  1. a list of triplets - the sequences it is binded to
index d82d6671b35ba9999c0877baac85bbc7ac4d1173..862f7ca66cdbe713388d0a8ff5270610151940cd 100644 (file)
@@ -965,7 +965,7 @@ class Logger(Filterer):
         if self.manager.disable >= DEBUG:
             return
         if DEBUG >= self.getEffectiveLevel():
-            apply(self._log, (DEBUG, msg, args), kwargs)
+            self._log(DEBUG, msg, args, **kwargs)
 
     def info(self, msg, *args, **kwargs):
         """
@@ -979,7 +979,7 @@ class Logger(Filterer):
         if self.manager.disable >= INFO:
             return
         if INFO >= self.getEffectiveLevel():
-            apply(self._log, (INFO, msg, args), kwargs)
+            self._log(INFO, msg, args, **kwargs)
 
     def warning(self, msg, *args, **kwargs):
         """
@@ -993,7 +993,7 @@ class Logger(Filterer):
         if self.manager.disable >= WARNING:
             return
         if self.isEnabledFor(WARNING):
-            apply(self._log, (WARNING, msg, args), kwargs)
+            self._log(WARNING, msg, args, **kwargs)
 
     warn = warning
 
@@ -1009,13 +1009,13 @@ class Logger(Filterer):
         if self.manager.disable >= ERROR:
             return
         if self.isEnabledFor(ERROR):
-            apply(self._log, (ERROR, msg, args), kwargs)
+            self._log(ERROR, msg, args, **kwargs)
 
     def exception(self, msg, *args):
         """
         Convenience method for logging an ERROR with exception information.
         """
-        apply(self.error, (msg,) + args, {'exc_info': 1})
+        self.error(msg, *args, exc_info=1)
 
     def critical(self, msg, *args, **kwargs):
         """
@@ -1029,7 +1029,7 @@ class Logger(Filterer):
         if self.manager.disable >= CRITICAL:
             return
         if CRITICAL >= self.getEffectiveLevel():
-            apply(self._log, (CRITICAL, msg, args), kwargs)
+            self._log(CRITICAL, msg, args, **kwargs)
 
     fatal = critical
 
@@ -1050,7 +1050,7 @@ class Logger(Filterer):
         if self.manager.disable >= level:
             return
         if self.isEnabledFor(level):
-            apply(self._log, (level, msg, args), kwargs)
+            self._log(level, msg, args, **kwargs)
 
     def findCaller(self):
         """
@@ -1275,7 +1275,7 @@ def critical(msg, *args, **kwargs):
     """
     if len(root.handlers) == 0:
         basicConfig()
-    apply(root.critical, (msg,)+args, kwargs)
+    root.critical(msg, *args, **kwargs)
 
 fatal = critical
 
@@ -1285,14 +1285,14 @@ def error(msg, *args, **kwargs):
     """
     if len(root.handlers) == 0:
         basicConfig()
-    apply(root.error, (msg,)+args, kwargs)
+    root.error(msg, *args, **kwargs)
 
 def exception(msg, *args):
     """
     Log a message with severity 'ERROR' on the root logger,
     with exception information.
     """
-    apply(error, (msg,)+args, {'exc_info': 1})
+    error(msg, *args, exc_info=1)
 
 def warning(msg, *args, **kwargs):
     """
@@ -1300,7 +1300,7 @@ def warning(msg, *args, **kwargs):
     """
     if len(root.handlers) == 0:
         basicConfig()
-    apply(root.warning, (msg,)+args, kwargs)
+    root.warning(msg, *args, **kwargs)
 
 warn = warning
 
@@ -1310,7 +1310,7 @@ def info(msg, *args, **kwargs):
     """
     if len(root.handlers) == 0:
         basicConfig()
-    apply(root.info, (msg,)+args, kwargs)
+    root.info(msg, *args, **kwargs)
 
 def debug(msg, *args, **kwargs):
     """
@@ -1318,7 +1318,7 @@ def debug(msg, *args, **kwargs):
     """
     if len(root.handlers) == 0:
         basicConfig()
-    apply(root.debug, (msg,)+args, kwargs)
+    root.debug(msg, *args, **kwargs)
 
 def log(level, msg, *args, **kwargs):
     """
@@ -1326,7 +1326,7 @@ def log(level, msg, *args, **kwargs):
     """
     if len(root.handlers) == 0:
         basicConfig()
-    apply(root.log, (level, msg)+args, kwargs)
+    root.log(level, msg, *args, **kwargs)
 
 def disable(level):
     """
index 5adfe4dd21d80dccde8b7ff8ac7ae4aef2b4773e..457ec5c382f44bd7a5e257e18c1a8b570bed0ed4 100644 (file)
@@ -148,7 +148,7 @@ def _install_handlers(cp, formatters):
         klass = eval(klass, vars(logging))
         args = cp.get(sectname, "args")
         args = eval(args, vars(logging))
-        h = apply(klass, args)
+        h = klass(*args)
         if "level" in opts:
             level = cp.get(sectname, "level")
             h.setLevel(logging._levelNames[level])
index 87132c57fc793098347343e1a89ade5f853f9e7f..03d38f6cbb3f7149ae287525a88c56d70a12a1cc 100644 (file)
@@ -351,11 +351,11 @@ def alt_generic(what, f, *args):
 
 def generic(what, f, *args):
     if type(what) == types.FunctionType:
-        return apply(what, (f,) + args)
+        return what(f, *args)
     if type(what) == types.ListType:
         record = []
         for thing in what:
-            item = apply(generic, thing[:1] + (f,) + thing[1:])
+            item = generic(thing[:1], f, *thing[1:])
             record.append((thing[1], item))
         return record
     return "BAD GENERIC ARGS: %r" % (what,)
index 9cb03bcd12c784844b5911e9fddce3a46af92685..6827244fdd16ba339ad40d8e3119d4e02f1356de 100644 (file)
@@ -995,7 +995,7 @@ class Popen(object):
                         os.chdir(cwd)
 
                     if preexec_fn:
-                        apply(preexec_fn)
+                        preexec_fn()
 
                     if env is None:
                         os.execvp(executable, args)
diff --git a/Lib/test/crashers/infinite_rec_4.py b/Lib/test/crashers/infinite_rec_4.py
deleted file mode 100644 (file)
index 14f1520..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-# http://python.org/sf/1202533
-
-if __name__ == '__main__':
-    lst = [apply]
-    lst.append(lst)
-    apply(*lst)      # segfault: infinite recursion in C
index 4f10d929e707ef4472a04440467f585de88db9ad..6f11fdd6cba0cd8590f12b0775fc999ed0170971 100644 (file)
@@ -153,32 +153,6 @@ class BuiltinTest(unittest.TestCase):
         S = [10, 20, 30]
         self.assertEqual(any(x > 42 for x in S), False)
 
-    def test_apply(self):
-        def f0(*args):
-            self.assertEqual(args, ())
-        def f1(a1):
-            self.assertEqual(a1, 1)
-        def f2(a1, a2):
-            self.assertEqual(a1, 1)
-            self.assertEqual(a2, 2)
-        def f3(a1, a2, a3):
-            self.assertEqual(a1, 1)
-            self.assertEqual(a2, 2)
-            self.assertEqual(a3, 3)
-        apply(f0, ())
-        apply(f1, (1,))
-        apply(f2, (1, 2))
-        apply(f3, (1, 2, 3))
-
-        # A PyCFunction that takes only positional parameters should allow an
-        # empty keyword dictionary to pass without a complaint, but raise a
-        # TypeError if the dictionary is non-empty.
-        apply(id, (1,), {})
-        self.assertRaises(TypeError, apply, id, (1,), {"foo": 1})
-        self.assertRaises(TypeError, apply)
-        self.assertRaises(TypeError, apply, id, 42)
-        self.assertRaises(TypeError, apply, id, (42,), 42)
-
     def test_callable(self):
         self.assert_(callable(len))
         def f(): pass
index b26d5541af34bca7e3a58927082b050ca8316558..79ec6f53a61d078acb9932709241a7d65741fe09 100644 (file)
@@ -78,7 +78,7 @@ mkwave(OCTAVE)
 class BufferedAudioDev:
     def __init__(self, *args):
         import audiodev
-        self._base = apply(audiodev.AudioDev, args)
+        self._base = audiodev.AudioDev(*args)
         self._buffer = []
         self._filled = 0
         self._addmethods(self._base, self._base.__class__)
index a2dafddfe17269d0d6accc4db7fbb696bb781e7c..10560104a31c2a29dc283eb9f542a048e6655099 100644 (file)
@@ -65,7 +65,7 @@ class ProfileBrowser:
 
     def displaystats(self):
         W.SetCursor('watch')
-        apply(self.stats.sort_stats, self.sortkeys)
+        self.stats.sort_stats(*self.sortkeys)
         saveout = sys.stdout
         try:
             s = sys.stdout = StringIO.StringIO()
index b8d6489487fa78af00661790c3706494b040b31e..14312d5f3fc5999913685eff6a88d33353ee4566 100644 (file)
@@ -26,7 +26,7 @@ def inspect(foo):                       # JJS 1/25/99
 class ConsoleTextWidget(W.EditText):
 
     def __init__(self, *args, **kwargs):
-        apply(W.EditText.__init__, (self,) + args, kwargs)
+        W.EditText.__init__(self, *args, **kwargs)
         self._inputstart = 0
         self._buf = ''
         self.pyinteractive = PyInteractive.PyInteractive()
index 7fbc0f0f0a711c9924da5f08c69b59efe0fc2441..55f0d743a6c1bb490d9cf8640d7a5fb6f1986be1 100644 (file)
@@ -652,7 +652,7 @@ class Debugger(bdb.Bdb):
 class SourceViewer(W.PyEditor):
 
     def __init__(self, *args, **kwargs):
-        apply(W.PyEditor.__init__, (self,) + args, kwargs)
+        W.PyEditor.__init__(self, *args, **kwargs)
         self.bind('<click>', self.clickintercept)
 
     def clickintercept(self, point, modifiers):
@@ -815,7 +815,7 @@ class BreakpointsViewer:
 class TracingMonitor(W.Widget):
 
     def __init__(self, *args, **kwargs):
-        apply(W.Widget.__init__, (self,) + args, kwargs)
+        W.Widget.__init__(self, *args, **kwargs)
         self.state = 0
 
     def toggle(self):
index 4cfc77b8f9c663e2c6c5e7cabe1bee88488632b1..08692696e85907a645d0c7dcd9630af9d47c8c27 100644 (file)
@@ -129,7 +129,7 @@ class Application(FrameWork.Application):
             window = self._windows[wid]
             if hasattr(window, attr):
                 handler = getattr(window, attr)
-                apply(handler, args)
+                handler(*args)
                 return 1
 
     def getfrontwindow(self):
index 93e499f7dccb86f77b64c59db1929c15c33ace2c..606b2376af66e7e980025837b00125ff4606cf0d 100644 (file)
@@ -78,7 +78,7 @@ class Widget:
             if type(args[0]) == FunctionType or type(args[0]) == MethodType:
                 self._possize = args[0]
             else:
-                apply(self.resize, args[0])
+                self.resize(*args[0])
         elif len(args) == 2:
             self._possize = (0, 0) + args
         elif len(args) == 4:
@@ -175,37 +175,37 @@ class Widget:
 
     def forall(self, methodname, *args):
         for w in self._widgets:
-            rv = apply(w.forall, (methodname,) + args)
+            rv = w.forall(methodname, *args)
             if rv:
                 return rv
         if self._bindings.has_key("<" + methodname + ">"):
             callback = self._bindings["<" + methodname + ">"]
-            rv = apply(callback, args)
+            rv = callback(*args)
             if rv:
                 return rv
         if hasattr(self, methodname):
             method = getattr(self, methodname)
-            return apply(method, args)
+            return method(*args)
 
     def forall_butself(self, methodname, *args):
         for w in self._widgets:
-            rv = apply(w.forall, (methodname,) + args)
+            rv = w.forall(methodname, *args)
             if rv:
                 return rv
 
     def forall_frombottom(self, methodname, *args):
         if self._bindings.has_key("<" + methodname + ">"):
             callback = self._bindings["<" + methodname + ">"]
-            rv = apply(callback, args)
+            rv = callback(*args)
             if rv:
                 return rv
         if hasattr(self, methodname):
             method = getattr(self, methodname)
-            rv = apply(method, args)
+            rv = method(*args)
             if rv:
                 return rv
         for w in self._widgets:
-            rv = apply(w.forall_frombottom, (methodname,) + args)
+            rv = w.forall_frombottom(methodname, *args)
             if rv:
                 return rv
 
@@ -670,7 +670,7 @@ def CallbackCall(callback, mustfit, *args):
         maxargs = func.func_code.co_argcount - 1
     else:
         if callable(callback):
-            return apply(callback, args)
+            return callback(*args)
         else:
             raise TypeError, "uncallable callback object"
 
@@ -679,7 +679,7 @@ def CallbackCall(callback, mustfit, *args):
     else:
         minargs = maxargs
     if minargs <= len(args) <= maxargs:
-        return apply(callback, args)
+        return callback(*args)
     elif not mustfit and minargs == 0:
         return callback()
     else:
index bfcdc8b29bf2008a33db4ccdfe86ea2079e21ab7..f52e37e4f76a8c751367a5b0d86327bd2b46634d 100644 (file)
@@ -180,7 +180,7 @@ def copyres(input, output, *args, **kwargs):
         output = Res.FSpOpenResFile(output, 3)
         openedout = 1
     try:
-        apply(buildtools.copyres, (input, output) + args, kwargs)
+        buildtools.copyres(input, output, *args, **kwargs)
     finally:
         if openedin:
             Res.CloseResFile(input)
index 7f635a0d1c0835bf19d5836dd002f0769a31fd13..e6dc4748bb3472a0f21b862b1cd225bbc7a9e7f4 100644 (file)
@@ -374,7 +374,7 @@ def buildPackage(*args, **options):
     o = options
     title, version, desc = o["Title"], o["Version"], o["Description"]
     pm = PackageMaker(title, version, desc)
-    apply(pm.build, list(args), options)
+    pm.build(*args, **options)
 
 
 ######################################################################
@@ -468,7 +468,7 @@ def main():
               "Description" in ok):
         print "Missing mandatory option!"
     else:
-        apply(buildPackage, args, optsDict)
+        buildPackage(*args, **optsDict)
         return
 
     printUsage()
index 94ea70252a52e495d4f46339153881e047daa2e2..76c314da52f75900e434e4bec511ecfa7c6d86aa 100644 (file)
@@ -204,7 +204,7 @@ _bsddb
     XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap
     XXX    self.run()
     XXX File "C:\Code\python\lib\threading.py", line 399, in run
-    XXX    apply(self.__target, self.__args, self.__kwargs)
+    XXX    self.__target(*self.__args, **self.__kwargs)
     XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in
     XXX                  readerThread
     XXX    rec = c.next()
index 4c168eb147c44871eea40a9855db2cff04b5949b..342c2dba1728bb20adf58a1e4ec9e5186d2eff9e 100644 (file)
@@ -133,50 +133,6 @@ PyDoc_STRVAR(any_doc,
 \n\
 Return True if bool(x) is True for any x in the iterable.");
 
-static PyObject *
-builtin_apply(PyObject *self, PyObject *args)
-{
-       PyObject *func, *alist = NULL, *kwdict = NULL;
-       PyObject *t = NULL, *retval = NULL;
-
-       if (!PyArg_UnpackTuple(args, "apply", 1, 3, &func, &alist, &kwdict))
-               return NULL;
-       if (alist != NULL) {
-               if (!PyTuple_Check(alist)) {
-                       if (!PySequence_Check(alist)) {
-                               PyErr_Format(PyExc_TypeError,
-                                    "apply() arg 2 expected sequence, found %s",
-                                            alist->ob_type->tp_name);
-                               return NULL;
-                       }
-                       t = PySequence_Tuple(alist);
-                       if (t == NULL)
-                               return NULL;
-                       alist = t;
-               }
-       }
-       if (kwdict != NULL && !PyDict_Check(kwdict)) {
-               PyErr_Format(PyExc_TypeError,
-                            "apply() arg 3 expected dictionary, found %s",
-                            kwdict->ob_type->tp_name);
-               goto finally;
-       }
-       retval = PyEval_CallObjectWithKeywords(func, alist, kwdict);
-  finally:
-       Py_XDECREF(t);
-       return retval;
-}
-
-PyDoc_STRVAR(apply_doc,
-"apply(object[, args[, kwargs]]) -> value\n\
-\n\
-Call a callable object with positional arguments taken from the tuple args,\n\
-and keyword arguments taken from the optional dictionary kwargs.\n\
-Note that classes are callable, as are instances with a __call__() method.\n\
-\n\
-Deprecated since release 2.3. Instead, use the extended call syntax:\n\
-    function(*args, **keywords).");
-
 
 static PyObject *
 builtin_callable(PyObject *self, PyObject *v)
@@ -2090,7 +2046,6 @@ static PyMethodDef builtin_methods[] = {
        {"abs",         builtin_abs,        METH_O, abs_doc},
        {"all",         builtin_all,        METH_O, all_doc},
        {"any",         builtin_any,        METH_O, any_doc},
-       {"apply",       builtin_apply,      METH_VARARGS, apply_doc},
        {"callable",    builtin_callable,   METH_O, callable_doc},
        {"chr",         builtin_chr,        METH_VARARGS, chr_doc},
        {"cmp",         builtin_cmp,        METH_VARARGS, cmp_doc},
index 836f53261f949543973f8c9b54e4a1237b446fda..3e6a5802312178d77c72dbc399c34e16f792e551 100755 (executable)
@@ -194,7 +194,7 @@ def main():
         if o == '-l':
             addn_link.append(a)
         if o == '-a':
-            apply(modulefinder.AddPackagePath, tuple(a.split("=", 2)))
+            modulefinder.AddPackagePath(*a.split("=", 2))
         if o == '-r':
             f,r = a.split("=", 2)
             replace_paths.append( (f,r) )
index 56f694062b92bbee990389e86f3dc689323c2206..d2ad61ac5439b741cc7d637530a177ef7fa94874 100644 (file)
@@ -81,7 +81,7 @@ def askcolor(color = None, **options):
     """Ask for a color"""
     global _chooser
     if not _chooser:
-        _chooser = apply(Chooser, (), options)
+        _chooser = Chooser(**options)
     return _chooser.show(color, options)
 
 def save():
index 9b4ae1626a85d2d0634c8b23e13349172ad38128..494164a6908ace515734c206ece77c1034c85bc5 100644 (file)
@@ -399,6 +399,6 @@ if __name__ == '__main__':
 
     import sys
     if 1:
-        apply(convertdir,tuple(sys.argv[1:]))
+        convertdir(*sys.argv[1:])
     else:
-        apply(rewritepythondir,tuple(sys.argv[1:]))
+        rewritepythondir(*sys.argv[1:])
index d918a0c724f760e2323901b597b3cb772d024dc9..990159c4cfc70dfec07471546d36fec5927c801c 100755 (executable)
@@ -684,7 +684,7 @@ class Page:
 
     def note(self, level, msg, *args):
         if self.checker:
-            apply(self.checker.note, (level, msg) + args)
+            self.checker.note(level, msg, *args)
         else:
             if self.verbose >= level:
                 if args:
@@ -741,7 +741,7 @@ class MyURLopener(urllib.FancyURLopener):
 
     def __init__(*args):
         self = args[0]
-        apply(urllib.FancyURLopener.__init__, args)
+        urllib.FancyURLopener.__init__(*args)
         self.addheaders = [
             ('User-agent', 'Python-webchecker/%s' % __version__),
             ]