From d91085598f5185b267ea51a3f615da9527af2ed2 Mon Sep 17 00:00:00 2001 From: Neal Norwitz Date: Fri, 17 Mar 2006 08:00:19 +0000 Subject: Remove apply() --- Demo/classes/bitvec.py | 12 +- Demo/metaclasses/Eiffel.py | 6 +- Demo/metaclasses/Meta.py | 4 +- Demo/metaclasses/Simple.py | 2 +- Demo/metaclasses/Synch.py | 4 +- Demo/metaclasses/Trace.py | 6 +- Demo/pdist/RCSProxy.py | 2 +- Demo/pdist/client.py | 5 +- Demo/pdist/server.py | 4 +- Demo/threads/Coroutine.py | 2 +- Demo/threads/Generator.py | 2 +- Demo/threads/find.py | 5 +- Demo/tix/tixwidgets.py | 3 +- Demo/tkinter/guido/AttrDialog.py | 3 +- Demo/tkinter/guido/ManPage.py | 4 +- Demo/tkinter/guido/ShellWindow.py | 2 +- Demo/tkinter/guido/kill.py | 2 +- Demo/tkinter/guido/optionmenu.py | 2 +- Demo/tkinter/guido/sortvisu.py | 3 +- Demo/tkinter/guido/svkill.py | 4 +- Demo/tkinter/matt/window-creation-w-location.py | 2 +- Doc/api/abstract.tex | 3 - Doc/lib/libfuncs.tex | 20 --- Lib/bsddb/dbobj.py | 158 ++++++++++++------------ Lib/bsddb/dbshelve.py | 4 +- Lib/bsddb/test/test_basics.py | 2 +- Lib/bsddb/test/test_dbobj.py | 2 +- Lib/bsddb/test/test_join.py | 4 +- Lib/compiler/transformer.py | 2 +- Lib/distutils/archive_util.py | 2 +- Lib/distutils/command/build_ext.py | 4 +- Lib/distutils/command/build_py.py | 8 +- Lib/distutils/dir_util.py | 2 +- Lib/distutils/filelist.py | 2 +- Lib/distutils/util.py | 4 +- Lib/idlelib/MultiCall.py | 2 +- Lib/logging/__init__.py | 28 ++--- Lib/logging/config.py | 2 +- Lib/plat-mac/gensuitemodule.py | 4 +- Lib/subprocess.py | 2 +- Lib/test/crashers/infinite_rec_4.py | 7 -- Lib/test/test_builtin.py | 26 ---- Mac/Demo/sound/morse.py | 2 +- Mac/Tools/IDE/ProfileBrowser.py | 2 +- Mac/Tools/IDE/PyConsole.py | 2 +- Mac/Tools/IDE/PyDebugger.py | 4 +- Mac/Tools/IDE/Wapplication.py | 2 +- Mac/Tools/IDE/Wbase.py | 20 +-- Mac/Tools/macfreeze/macgen_bin.py | 2 +- Mac/scripts/buildpkg.py | 4 +- PCbuild/readme.txt | 2 +- Python/bltinmodule.c | 45 ------- Tools/freeze/freeze.py | 2 +- Tools/pynche/pyColorChooser.py | 2 +- Tools/unicode/gencodec.py | 4 +- Tools/webchecker/webchecker.py | 4 +- 56 files changed, 179 insertions(+), 285 deletions(-) delete mode 100644 Lib/test/crashers/infinite_rec_4.py diff --git a/Demo/classes/bitvec.py b/Demo/classes/bitvec.py index 2894a56..934d33a 100755 --- a/Demo/classes/bitvec.py +++ b/Demo/classes/bitvec.py @@ -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): diff --git a/Demo/metaclasses/Eiffel.py b/Demo/metaclasses/Eiffel.py index 24fac14..8c39746 100644 --- a/Demo/metaclasses/Eiffel.py +++ b/Demo/metaclasses/Eiffel.py @@ -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): diff --git a/Demo/metaclasses/Meta.py b/Demo/metaclasses/Meta.py index 580f582..9529e0f 100644 --- a/Demo/metaclasses/Meta.py +++ b/Demo/metaclasses/Meta.py @@ -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 diff --git a/Demo/metaclasses/Simple.py b/Demo/metaclasses/Simple.py index 03ed259..e3e54f7 100644 --- a/Demo/metaclasses/Simple.py +++ b/Demo/metaclasses/Simple.py @@ -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', (), {}) diff --git a/Demo/metaclasses/Synch.py b/Demo/metaclasses/Synch.py index 80e52d9..cd13e86 100644 --- a/Demo/metaclasses/Synch.py +++ b/Demo/metaclasses/Synch.py @@ -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() diff --git a/Demo/metaclasses/Trace.py b/Demo/metaclasses/Trace.py index 69b9fab..97fda56 100644 --- a/Demo/metaclasses/Trace.py +++ b/Demo/metaclasses/Trace.py @@ -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__, diff --git a/Demo/pdist/RCSProxy.py b/Demo/pdist/RCSProxy.py index 87c65cc..ff3f0ce 100755 --- a/Demo/pdist/RCSProxy.py +++ b/Demo/pdist/RCSProxy.py @@ -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: diff --git a/Demo/pdist/client.py b/Demo/pdist/client.py index 3e97d84..664c41b 100755 --- a/Demo/pdist/client.py +++ b/Demo/pdist/client.py @@ -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] diff --git a/Demo/pdist/server.py b/Demo/pdist/server.py index 01b3249..79afa8b 100755 --- a/Demo/pdist/server.py +++ b/Demo/pdist/server.py @@ -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): diff --git a/Demo/threads/Coroutine.py b/Demo/threads/Coroutine.py index 4cc65f7..10fa303 100644 --- a/Demo/threads/Coroutine.py +++ b/Demo/threads/Coroutine.py @@ -115,7 +115,7 @@ class Coroutine: if not self.killed: try: try: - apply(me.f, args) + me.f(*args) except Killed: pass finally: diff --git a/Demo/threads/Generator.py b/Demo/threads/Generator.py index a2713af..63bed9b 100644 --- a/Demo/threads/Generator.py +++ b/Demo/threads/Generator.py @@ -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: diff --git a/Demo/threads/find.py b/Demo/threads/find.py index 7d5edc1..14148b8 100644 --- a/Demo/threads/find.py +++ b/Demo/threads/find.py @@ -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] diff --git a/Demo/tix/tixwidgets.py b/Demo/tix/tixwidgets.py index de2e22e..bf7102a 100644 --- a/Demo/tix/tixwidgets.py +++ b/Demo/tix/tixwidgets.py @@ -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 diff --git a/Demo/tkinter/guido/AttrDialog.py b/Demo/tkinter/guido/AttrDialog.py index 86333ad..9fa699e 100755 --- a/Demo/tkinter/guido/AttrDialog.py +++ b/Demo/tkinter/guido/AttrDialog.py @@ -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() diff --git a/Demo/tkinter/guido/ManPage.py b/Demo/tkinter/guido/ManPage.py index 7d6fe00..911961e 100755 --- a/Demo/tkinter/guido/ManPage.py +++ b/Demo/tkinter/guido/ManPage.py @@ -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 diff --git a/Demo/tkinter/guido/ShellWindow.py b/Demo/tkinter/guido/ShellWindow.py index 609101b..6cdce0b 100755 --- a/Demo/tkinter/guido/ShellWindow.py +++ b/Demo/tkinter/guido/ShellWindow.py @@ -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('', self.inputhandler) self.bind('', self.sigint) diff --git a/Demo/tkinter/guido/kill.py b/Demo/tkinter/guido/kill.py index e7df261..dd0dbf4 100755 --- a/Demo/tkinter/guido/kill.py +++ b/Demo/tkinter/guido/kill.py @@ -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 diff --git a/Demo/tkinter/guido/optionmenu.py b/Demo/tkinter/guido/optionmenu.py index be9d3ac..7365fa6 100644 --- a/Demo/tkinter/guido/optionmenu.py +++ b/Demo/tkinter/guido/optionmenu.py @@ -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() diff --git a/Demo/tkinter/guido/sortvisu.py b/Demo/tkinter/guido/sortvisu.py index f18f2c1..3e4454f 100644 --- a/Demo/tkinter/guido/sortvisu.py +++ b/Demo/tkinter/guido/sortvisu.py @@ -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) diff --git a/Demo/tkinter/guido/svkill.py b/Demo/tkinter/guido/svkill.py index 69f7f3b..95f61b8 100755 --- a/Demo/tkinter/guido/svkill.py +++ b/Demo/tkinter/guido/svkill.py @@ -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) diff --git a/Demo/tkinter/matt/window-creation-w-location.py b/Demo/tkinter/matt/window-creation-w-location.py index 3f2b5b0..9f23bac 100644 --- a/Demo/tkinter/matt/window-creation-w-location.py +++ b/Demo/tkinter/matt/window-creation-w-location.py @@ -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): diff --git a/Doc/api/abstract.tex b/Doc/api/abstract.tex index f01512c..e1c3901 100644 --- a/Doc/api/abstract.tex +++ b/Doc/api/abstract.tex @@ -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} diff --git a/Doc/lib/libfuncs.tex b/Doc/lib/libfuncs.tex index c75c172..0be3aa9 100644 --- a/Doc/lib/libfuncs.tex +++ b/Doc/lib/libfuncs.tex @@ -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 diff --git a/Lib/bsddb/dbobj.py b/Lib/bsddb/dbobj.py index 5bcf84b..4a75dd2 100644 --- a/Lib/bsddb/dbobj.py +++ b/Lib/bsddb/dbobj.py @@ -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) diff --git a/Lib/bsddb/dbshelve.py b/Lib/bsddb/dbshelve.py index d341ab7..5cd4a53 100644 --- a/Lib/bsddb/dbshelve.py +++ b/Lib/bsddb/dbshelve.py @@ -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) diff --git a/Lib/bsddb/test/test_basics.py b/Lib/bsddb/test/test_basics.py index 24c4038..7e8f835 100644 --- a/Lib/bsddb/test/test_basics.py +++ b/Lib/bsddb/test/test_basics.py @@ -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 diff --git a/Lib/bsddb/test/test_dbobj.py b/Lib/bsddb/test/test_dbobj.py index 6799fc9..1305883 100644 --- a/Lib/bsddb/test/test_dbobj.py +++ b/Lib/bsddb/test/test_dbobj.py @@ -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) diff --git a/Lib/bsddb/test/test_join.py b/Lib/bsddb/test/test_join.py index 73edd11..69a1e9d 100644 --- a/Lib/bsddb/test/test_join.py +++ b/Lib/bsddb/test/test_join.py @@ -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 diff --git a/Lib/compiler/transformer.py b/Lib/compiler/transformer.py index cc91b4f..504e283 100644 --- a/Lib/compiler/transformer.py +++ b/Lib/compiler/transformer.py @@ -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. diff --git a/Lib/distutils/archive_util.py b/Lib/distutils/archive_util.py index 6aa5e63..b725a14 100644 --- a/Lib/distutils/archive_util.py +++ b/Lib/distutils/archive_util.py @@ -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) diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py index 4191c76..6ea5d57 100644 --- a/Lib/distutils/command/build_ext.py +++ b/Lib/distutils/command/build_ext.py @@ -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 diff --git a/Lib/distutils/command/build_py.py b/Lib/distutils/command/build_py.py index 621bcb4..3b7ec62 100644 --- a/Lib/distutils/command/build_py.py +++ b/Lib/distutils/command/build_py.py @@ -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): diff --git a/Lib/distutils/dir_util.py b/Lib/distutils/dir_util.py index 43994db..a4aff58 100644 --- a/Lib/distutils/dir_util.py +++ b/Lib/distutils/dir_util.py @@ -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): diff --git a/Lib/distutils/filelist.py b/Lib/distutils/filelist.py index 43f9aaa..4bbdd1f 100644 --- a/Lib/distutils/filelist.py +++ b/Lib/distutils/filelist.py @@ -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 --------------------------- diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py index 387e9bd..889bf13 100644 --- a/Lib/distutils/util.py +++ b/Lib/distutils/util.py @@ -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): diff --git a/Lib/idlelib/MultiCall.py b/Lib/idlelib/MultiCall.py index ea8b140..4f53115 100644 --- a/Lib/idlelib/MultiCall.py +++ b/Lib/idlelib/MultiCall.py @@ -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 diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index d82d667..862f7ca 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -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): """ diff --git a/Lib/logging/config.py b/Lib/logging/config.py index 5adfe4d..457ec5c 100644 --- a/Lib/logging/config.py +++ b/Lib/logging/config.py @@ -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]) diff --git a/Lib/plat-mac/gensuitemodule.py b/Lib/plat-mac/gensuitemodule.py index 87132c5..03d38f6 100644 --- a/Lib/plat-mac/gensuitemodule.py +++ b/Lib/plat-mac/gensuitemodule.py @@ -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,) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 9cb03bc..6827244 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -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 index 14f1520..0000000 --- a/Lib/test/crashers/infinite_rec_4.py +++ /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 diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 4f10d92..6f11fdd 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -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 diff --git a/Mac/Demo/sound/morse.py b/Mac/Demo/sound/morse.py index b26d554..79ec6f5 100644 --- a/Mac/Demo/sound/morse.py +++ b/Mac/Demo/sound/morse.py @@ -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__) diff --git a/Mac/Tools/IDE/ProfileBrowser.py b/Mac/Tools/IDE/ProfileBrowser.py index a2dafdd..1056010 100644 --- a/Mac/Tools/IDE/ProfileBrowser.py +++ b/Mac/Tools/IDE/ProfileBrowser.py @@ -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() diff --git a/Mac/Tools/IDE/PyConsole.py b/Mac/Tools/IDE/PyConsole.py index b8d6489..14312d5 100644 --- a/Mac/Tools/IDE/PyConsole.py +++ b/Mac/Tools/IDE/PyConsole.py @@ -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() diff --git a/Mac/Tools/IDE/PyDebugger.py b/Mac/Tools/IDE/PyDebugger.py index 7fbc0f0..55f0d74 100644 --- a/Mac/Tools/IDE/PyDebugger.py +++ b/Mac/Tools/IDE/PyDebugger.py @@ -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('', 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): diff --git a/Mac/Tools/IDE/Wapplication.py b/Mac/Tools/IDE/Wapplication.py index 4cfc77b..0869269 100644 --- a/Mac/Tools/IDE/Wapplication.py +++ b/Mac/Tools/IDE/Wapplication.py @@ -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): diff --git a/Mac/Tools/IDE/Wbase.py b/Mac/Tools/IDE/Wbase.py index 93e499f..606b237 100644 --- a/Mac/Tools/IDE/Wbase.py +++ b/Mac/Tools/IDE/Wbase.py @@ -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: diff --git a/Mac/Tools/macfreeze/macgen_bin.py b/Mac/Tools/macfreeze/macgen_bin.py index bfcdc8b..f52e37e 100644 --- a/Mac/Tools/macfreeze/macgen_bin.py +++ b/Mac/Tools/macfreeze/macgen_bin.py @@ -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) diff --git a/Mac/scripts/buildpkg.py b/Mac/scripts/buildpkg.py index 7f635a0..e6dc474 100644 --- a/Mac/scripts/buildpkg.py +++ b/Mac/scripts/buildpkg.py @@ -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() diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt index 94ea702..76c314d 100644 --- a/PCbuild/readme.txt +++ b/PCbuild/readme.txt @@ -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() diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 4c168eb..342c2db 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -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}, diff --git a/Tools/freeze/freeze.py b/Tools/freeze/freeze.py index 836f532..3e6a580 100755 --- a/Tools/freeze/freeze.py +++ b/Tools/freeze/freeze.py @@ -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) ) diff --git a/Tools/pynche/pyColorChooser.py b/Tools/pynche/pyColorChooser.py index 56f6940..d2ad61a 100644 --- a/Tools/pynche/pyColorChooser.py +++ b/Tools/pynche/pyColorChooser.py @@ -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(): diff --git a/Tools/unicode/gencodec.py b/Tools/unicode/gencodec.py index 9b4ae16..494164a 100644 --- a/Tools/unicode/gencodec.py +++ b/Tools/unicode/gencodec.py @@ -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:]) diff --git a/Tools/webchecker/webchecker.py b/Tools/webchecker/webchecker.py index d918a0c..990159c 100755 --- a/Tools/webchecker/webchecker.py +++ b/Tools/webchecker/webchecker.py @@ -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__), ] -- cgit v0.12