1
0
mirror of https://github.com/scrapy/scrapy.git synced 2025-03-01 15:28:29 +00:00

PEP8 on pydispatch/robustapply.py

This commit is contained in:
joehillen 2012-12-12 08:53:32 -08:00
parent 8778af5c5b
commit c505b33672

View File

@ -8,7 +8,7 @@ those which are acceptable.
import inspect import inspect
def function( receiver ): def function(receiver):
"""Get function-like callable object for given receiver """Get function-like callable object for given receiver
returns (function_or_method, codeObject, fromMethod) returns (function_or_method, codeObject, fromMethod)
@ -19,33 +19,37 @@ def function( receiver ):
if inspect.isclass(receiver) and hasattr(receiver, '__call__'): if inspect.isclass(receiver) and hasattr(receiver, '__call__'):
# receiver is a class instance; assume it is callable. # receiver is a class instance; assume it is callable.
# Reassign receiver to the actual method that will be called. # Reassign receiver to the actual method that will be called.
if hasattr( receiver.__call__, 'im_func') or hasattr( receiver.__call__, 'im_code'): if hasattr(receiver.__call__, 'im_func') or \
hasattr(receiver.__call__, 'im_code'):
receiver = receiver.__call__ receiver = receiver.__call__
if hasattr( receiver, 'im_func' ): if hasattr( receiver, 'im_func' ):
# an instance-method... # an instance-method...
return receiver, receiver.im_func.func_code, 1 return receiver, receiver.im_func.func_code, 1
elif not hasattr( receiver, 'func_code'): elif not hasattr(receiver, 'func_code'):
raise ValueError('unknown reciever type %s %s'%(receiver, type(receiver))) raise ValueError('unknown reciever type %s %s'%(receiver, type(receiver)))
return receiver, receiver.func_code, 0 return receiver, receiver.func_code, 0
def robustApply(receiver, *arguments, **named): def robustApply(receiver, *arguments, **named):
"""Call receiver with arguments and an appropriate subset of named """Call receiver with arguments and an appropriate subset of named
""" """
receiver, codeObject, startIndex = function( receiver ) receiver, codeObject, startIndex = function(receiver)
acceptable = codeObject.co_varnames[startIndex+len(arguments):codeObject.co_argcount] acceptable = codeObject.co_varnames[startIndex+len(arguments):codeObject.co_argcount]
for name in codeObject.co_varnames[startIndex:startIndex+len(arguments)]: for name in codeObject.co_varnames[startIndex:startIndex+len(arguments)]:
if named.has_key( name ): if named.has_key(name):
raise TypeError( raise TypeError(
"""Argument %r specified both positionally and as a keyword for calling %r"""% ( """Argument %r specified both positionally and as a keyword for calling %r"""% (
name, receiver, name, receiver,
) )
) )
if not (codeObject.co_flags & 8): if not (codeObject.co_flags & 8):
# fc does not have a **kwds type parameter, therefore # fc does not have a **kwds type parameter, therefore
# remove unacceptable arguments. # remove unacceptable arguments.
for arg in named.keys(): for arg in named.keys():
if arg not in acceptable: if arg not in acceptable:
del named[arg] del named[arg]
return receiver(*arguments, **named) return receiver(*arguments, **named)