mirror of
https://github.com/scrapy/scrapy.git
synced 2025-03-01 18:27:23 +00:00
PEP8 on pydispatch/robustapply.py
This commit is contained in:
parent
8778af5c5b
commit
c505b33672
@ -8,44 +8,48 @@ 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)
|
||||||
|
|
||||||
If fromMethod is true, then the callable already
|
If fromMethod is true, then the callable already
|
||||||
has its first argument bound
|
has its first argument bound
|
||||||
"""
|
"""
|
||||||
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 \
|
||||||
receiver = receiver.__call__
|
hasattr(receiver.__call__, 'im_code'):
|
||||||
if hasattr( receiver, 'im_func' ):
|
receiver = receiver.__call__
|
||||||
# an instance-method...
|
|
||||||
return receiver, receiver.im_func.func_code, 1
|
if hasattr( receiver, 'im_func' ):
|
||||||
elif not hasattr( receiver, 'func_code'):
|
# an instance-method...
|
||||||
raise ValueError('unknown reciever type %s %s'%(receiver, type(receiver)))
|
return receiver, receiver.im_func.func_code, 1
|
||||||
return receiver, receiver.func_code, 0
|
elif not hasattr(receiver, 'func_code'):
|
||||||
|
raise ValueError('unknown reciever type %s %s'%(receiver, type(receiver)))
|
||||||
|
|
||||||
|
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):
|
|
||||||
# fc does not have a **kwds type parameter, therefore
|
|
||||||
# remove unacceptable arguments.
|
|
||||||
for arg in named.keys():
|
|
||||||
if arg not in acceptable:
|
|
||||||
del named[arg]
|
|
||||||
return receiver(*arguments, **named)
|
|
||||||
|
|
||||||
|
if not (codeObject.co_flags & 8):
|
||||||
|
# fc does not have a **kwds type parameter, therefore
|
||||||
|
# remove unacceptable arguments.
|
||||||
|
for arg in named.keys():
|
||||||
|
if arg not in acceptable:
|
||||||
|
del named[arg]
|
||||||
|
|
||||||
|
return receiver(*arguments, **named)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user