Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
5d1155c0
Commit
5d1155c0
authored
Oct 28, 2011
by
Florent Xicluna
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Closes #13258: Use callable() built-in in the standard library.
parent
f99e4b5d
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
48 additions
and
51 deletions
+48
-51
Lib/argparse.py
Lib/argparse.py
+3
-7
Lib/copyreg.py
Lib/copyreg.py
+2
-2
Lib/distutils/dist.py
Lib/distutils/dist.py
+1
-1
Lib/encodings/__init__.py
Lib/encodings/__init__.py
+5
-6
Lib/fileinput.py
Lib/fileinput.py
+5
-4
Lib/hmac.py
Lib/hmac.py
+1
-1
Lib/idlelib/rpc.py
Lib/idlelib/rpc.py
+2
-2
Lib/logging/config.py
Lib/logging/config.py
+2
-2
Lib/multiprocessing/managers.py
Lib/multiprocessing/managers.py
+2
-2
Lib/multiprocessing/pool.py
Lib/multiprocessing/pool.py
+1
-1
Lib/optparse.py
Lib/optparse.py
+1
-1
Lib/pickle.py
Lib/pickle.py
+1
-1
Lib/pydoc.py
Lib/pydoc.py
+2
-2
Lib/re.py
Lib/re.py
+1
-1
Lib/rlcompleter.py
Lib/rlcompleter.py
+1
-1
Lib/shutil.py
Lib/shutil.py
+2
-2
Lib/test/test_nntplib.py
Lib/test/test_nntplib.py
+1
-2
Lib/timeit.py
Lib/timeit.py
+3
-3
Lib/tkinter/__init__.py
Lib/tkinter/__init__.py
+4
-4
Lib/tkinter/tix.py
Lib/tkinter/tix.py
+1
-1
Lib/unittest/loader.py
Lib/unittest/loader.py
+2
-2
Lib/unittest/suite.py
Lib/unittest/suite.py
+1
-1
Lib/warnings.py
Lib/warnings.py
+1
-1
Lib/xmlrpc/server.py
Lib/xmlrpc/server.py
+1
-1
Misc/NEWS
Misc/NEWS
+2
-0
No files found.
Lib/argparse.py
View file @
5d1155c0
...
...
@@ -92,10 +92,6 @@ import textwrap as _textwrap
from
gettext
import
gettext
as
_
,
ngettext
def
_callable
(
obj
):
return
hasattr
(
obj
,
'__call__'
)
or
hasattr
(
obj
,
'__bases__'
)
SUPPRESS
=
'==SUPPRESS=='
OPTIONAL
=
'?'
...
...
@@ -1286,13 +1282,13 @@ class _ActionsContainer(object):
# create the action object, and add it to the parser
action_class
=
self
.
_pop_action_class
(
kwargs
)
if
not
_
callable
(
action_class
):
if
not
callable
(
action_class
):
raise
ValueError
(
'unknown action "%s"'
%
(
action_class
,))
action
=
action_class
(
**
kwargs
)
# raise an error if the action type is not callable
type_func
=
self
.
_registry_get
(
'type'
,
action
.
type
,
action
.
type
)
if
not
_
callable
(
type_func
):
if
not
callable
(
type_func
):
raise
ValueError
(
'%r is not callable'
%
(
type_func
,))
# raise an error if the metavar does not match the type
...
...
@@ -2240,7 +2236,7 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer):
def
_get_value
(
self
,
action
,
arg_string
):
type_func
=
self
.
_registry_get
(
'type'
,
action
.
type
,
action
.
type
)
if
not
_
callable
(
type_func
):
if
not
callable
(
type_func
):
msg
=
_
(
'%r is not callable'
)
raise
ArgumentError
(
action
,
msg
%
type_func
)
...
...
Lib/copyreg.py
View file @
5d1155c0
...
...
@@ -10,7 +10,7 @@ __all__ = ["pickle", "constructor",
dispatch_table
=
{}
def
pickle
(
ob_type
,
pickle_function
,
constructor_ob
=
None
):
if
not
hasattr
(
pickle_function
,
'__call__'
):
if
not
callable
(
pickle_function
):
raise
TypeError
(
"reduction functions must be callable"
)
dispatch_table
[
ob_type
]
=
pickle_function
...
...
@@ -20,7 +20,7 @@ def pickle(ob_type, pickle_function, constructor_ob=None):
constructor
(
constructor_ob
)
def
constructor
(
object
):
if
not
hasattr
(
object
,
'__call__'
):
if
not
callable
(
object
):
raise
TypeError
(
"constructors must be callable"
)
# Example: provide pickling support for complex numbers.
...
...
Lib/distutils/dist.py
View file @
5d1155c0
...
...
@@ -537,7 +537,7 @@ Common commands: (see '--help-commands' for more)
for
(
help_option
,
short
,
desc
,
func
)
in
cmd_class
.
help_options
:
if
hasattr
(
opts
,
parser
.
get_attr_name
(
help_option
)):
help_option_found
=
1
if
hasattr
(
func
,
'__call__'
):
if
callable
(
func
):
func
()
else
:
raise
DistutilsClassError
(
...
...
Lib/encodings/__init__.py
View file @
5d1155c0
...
...
@@ -120,12 +120,11 @@ def search_function(encoding):
if
not
4
<=
len
(
entry
)
<=
7
:
raise
CodecRegistryError
(
'module "%s" (%s) failed to register'
%
(
mod
.
__name__
,
mod
.
__file__
))
if
not
hasattr
(
entry
[
0
],
'__call__'
)
or
\
not
hasattr
(
entry
[
1
],
'__call__'
)
or
\
(
entry
[
2
]
is
not
None
and
not
hasattr
(
entry
[
2
],
'__call__'
))
or
\
(
entry
[
3
]
is
not
None
and
not
hasattr
(
entry
[
3
],
'__call__'
))
or
\
(
len
(
entry
)
>
4
and
entry
[
4
]
is
not
None
and
not
hasattr
(
entry
[
4
],
'__call__'
))
or
\
(
len
(
entry
)
>
5
and
entry
[
5
]
is
not
None
and
not
hasattr
(
entry
[
5
],
'__call__'
)):
if
not
callable
(
entry
[
0
])
or
not
callable
(
entry
[
1
])
or
\
(
entry
[
2
]
is
not
None
and
not
callable
(
entry
[
2
]))
or
\
(
entry
[
3
]
is
not
None
and
not
callable
(
entry
[
3
]))
or
\
(
len
(
entry
)
>
4
and
entry
[
4
]
is
not
None
and
not
callable
(
entry
[
4
]))
or
\
(
len
(
entry
)
>
5
and
entry
[
5
]
is
not
None
and
not
callable
(
entry
[
5
])):
raise
CodecRegistryError
(
'incompatible codecs in module "%s" (%s)'
%
(
mod
.
__name__
,
mod
.
__file__
))
if
len
(
entry
)
<
7
or
entry
[
6
]
is
None
:
...
...
Lib/fileinput.py
View file @
5d1155c0
...
...
@@ -225,10 +225,11 @@ class FileInput:
raise
ValueError
(
"FileInput opening mode must be one of "
"'r', 'rU', 'U' and 'rb'"
)
self
.
_mode
=
mode
if
inplace
and
openhook
:
raise
ValueError
(
"FileInput cannot use an opening hook in inplace mode"
)
elif
openhook
and
not
hasattr
(
openhook
,
'__call__'
):
raise
ValueError
(
"FileInput openhook must be callable"
)
if
openhook
:
if
inplace
:
raise
ValueError
(
"FileInput cannot use an opening hook in inplace mode"
)
if
not
callable
(
openhook
):
raise
ValueError
(
"FileInput openhook must be callable"
)
self
.
_openhook
=
openhook
def
__del__
(
self
):
...
...
Lib/hmac.py
View file @
5d1155c0
...
...
@@ -39,7 +39,7 @@ class HMAC:
import
hashlib
digestmod
=
hashlib
.
md5
if
hasattr
(
digestmod
,
'__call__'
):
if
callable
(
digestmod
):
self
.
digest_cons
=
digestmod
else
:
self
.
digest_cons
=
lambda
d
=
b''
:
digestmod
.
new
(
d
)
...
...
Lib/idlelib/rpc.py
View file @
5d1155c0
...
...
@@ -570,7 +570,7 @@ def _getmethods(obj, methods):
# Adds names to dictionary argument 'methods'
for
name
in
dir
(
obj
):
attr
=
getattr
(
obj
,
name
)
if
hasattr
(
attr
,
'__call__'
):
if
callable
(
attr
):
methods
[
name
]
=
1
if
isinstance
(
obj
,
type
):
for
super
in
obj
.
__bases__
:
...
...
@@ -579,7 +579,7 @@ def _getmethods(obj, methods):
def
_getattributes
(
obj
,
attributes
):
for
name
in
dir
(
obj
):
attr
=
getattr
(
obj
,
name
)
if
not
hasattr
(
attr
,
'__call__'
):
if
not
callable
(
attr
):
attributes
[
name
]
=
1
class
MethodProxy
(
object
):
...
...
Lib/logging/config.py
View file @
5d1155c0
...
...
@@ -471,7 +471,7 @@ class BaseConfigurator(object):
def configure_custom(self, config):
"""Configure an object with a user-supplied factory."""
c = config.pop('
()
')
if not
hasattr(c, '
__call__
'
):
if not
callable(c
):
c = self.resolve(c)
props = config.pop('
.
', None)
# Check for valid identifiers
...
...
@@ -690,7 +690,7 @@ class DictConfigurator(BaseConfigurator):
filters = config.pop('filters', None)
if '()' in config:
c = config.pop('()')
if not
hasattr(c, '__call__') and hasattr(types, 'ClassType') and type(c) != types.ClassType
:
if not
callable(c)
:
c = self.resolve(c)
factory = c
else:
...
...
Lib/multiprocessing/managers.py
View file @
5d1155c0
...
...
@@ -134,7 +134,7 @@ def all_methods(obj):
temp
=
[]
for
name
in
dir
(
obj
):
func
=
getattr
(
obj
,
name
)
if
hasattr
(
func
,
'__call__'
):
if
callable
(
func
):
temp
.
append
(
name
)
return
temp
...
...
@@ -510,7 +510,7 @@ class BaseManager(object):
'''
assert
self
.
_state
.
value
==
State
.
INITIAL
if
initializer
is
not
None
and
not
hasattr
(
initializer
,
'__call__'
):
if
initializer
is
not
None
and
not
callable
(
initializer
):
raise
TypeError
(
'initializer must be a callable'
)
# pipe over which we will retrieve address of server
...
...
Lib/multiprocessing/pool.py
View file @
5d1155c0
...
...
@@ -151,7 +151,7 @@ class Pool(object):
if
processes
<
1
:
raise
ValueError
(
"Number of processes must be at least 1"
)
if
initializer
is
not
None
and
not
hasattr
(
initializer
,
'__call__'
):
if
initializer
is
not
None
and
not
callable
(
initializer
):
raise
TypeError
(
'initializer must be a callable'
)
self
.
_processes
=
processes
...
...
Lib/optparse.py
View file @
5d1155c0
...
...
@@ -705,7 +705,7 @@ class Option:
def
_check_callback
(
self
):
if
self
.
action
==
"callback"
:
if
not
hasattr
(
self
.
callback
,
'__call__'
):
if
not
callable
(
self
.
callback
):
raise
OptionError
(
"callback not callable: %r"
%
self
.
callback
,
self
)
if
(
self
.
callback_args
is
not
None
and
...
...
Lib/pickle.py
View file @
5d1155c0
...
...
@@ -364,7 +364,7 @@ class _Pickler:
raise
PicklingError
(
"args from save_reduce() should be a tuple"
)
# Assert that func is callable
if
not
hasattr
(
func
,
'__call__'
):
if
not
callable
(
func
):
raise
PicklingError
(
"func from save_reduce() should be callable"
)
save
=
self
.
save
...
...
Lib/pydoc.py
View file @
5d1155c0
...
...
@@ -775,7 +775,7 @@ class HTMLDoc(Doc):
push
(
msg
)
for
name
,
kind
,
homecls
,
value
in
ok
:
base
=
self
.
docother
(
getattr
(
object
,
name
),
name
,
mod
)
if
hasattr
(
value
,
'__call__'
)
or
inspect
.
isdatadescriptor
(
value
):
if
callable
(
value
)
or
inspect
.
isdatadescriptor
(
value
):
doc
=
getattr
(
value
,
"__doc__"
,
None
)
else
:
doc
=
None
...
...
@@ -1199,7 +1199,7 @@ location listed above.
hr
.
maybe
()
push
(
msg
)
for
name
,
kind
,
homecls
,
value
in
ok
:
if
hasattr
(
value
,
'__call__'
)
or
inspect
.
isdatadescriptor
(
value
):
if
callable
(
value
)
or
inspect
.
isdatadescriptor
(
value
):
doc
=
getdoc
(
value
)
else
:
doc
=
None
...
...
Lib/re.py
View file @
5d1155c0
...
...
@@ -326,7 +326,7 @@ class Scanner:
if
i
==
j
:
break
action
=
self
.
lexicon
[
m
.
lastindex
-
1
][
1
]
if
hasattr
(
action
,
"__call__"
):
if
callable
(
action
):
self
.
match
=
m
action
=
action
(
self
,
m
.
group
())
if
action
is
not
None
:
...
...
Lib/rlcompleter.py
View file @
5d1155c0
...
...
@@ -87,7 +87,7 @@ class Completer:
return
None
def
_callable_postfix
(
self
,
val
,
word
):
if
hasattr
(
val
,
'__call__'
):
if
callable
(
val
):
word
=
word
+
"("
return
word
...
...
Lib/shutil.py
View file @
5d1155c0
...
...
@@ -523,7 +523,7 @@ def register_archive_format(name, function, extra_args=None, description=''):
"""
if
extra_args
is
None
:
extra_args
=
[]
if
not
isinstance
(
function
,
collections
.
Callable
):
if
not
callable
(
function
):
raise
TypeError
(
'The %s object is not callable'
%
function
)
if
not
isinstance
(
extra_args
,
(
tuple
,
list
)):
raise
TypeError
(
'extra_args needs to be a sequence'
)
...
...
@@ -616,7 +616,7 @@ def _check_unpack_options(extensions, function, extra_args):
raise
RegistryError
(
msg
%
(
extension
,
existing_extensions
[
extension
]))
if
not
isinstance
(
function
,
collections
.
Callable
):
if
not
callable
(
function
):
raise
TypeError
(
'The registered function must be a callable'
)
...
...
Lib/test/test_nntplib.py
View file @
5d1155c0
...
...
@@ -4,7 +4,6 @@ import textwrap
import
unittest
import
functools
import
contextlib
import
collections
from
test
import
support
from
nntplib
import
NNTP
,
GroupInfo
,
_have_ssl
import
nntplib
...
...
@@ -246,7 +245,7 @@ class NetworkedNNTPTestsMixin:
if
not
name
.
startswith
(
'test_'
):
continue
meth
=
getattr
(
cls
,
name
)
if
not
isinstance
(
meth
,
collections
.
Callable
):
if
not
callable
(
meth
):
continue
# Need to use a closure so that meth remains bound to its current
# value
...
...
Lib/timeit.py
View file @
5d1155c0
...
...
@@ -127,7 +127,7 @@ class Timer:
if
isinstance
(
setup
,
str
):
setup
=
reindent
(
setup
,
4
)
src
=
template
%
{
'stmt'
:
stmt
,
'setup'
:
setup
}
elif
hasattr
(
setup
,
'__call__'
):
elif
callable
(
setup
):
src
=
template
%
{
'stmt'
:
stmt
,
'setup'
:
'_setup()'
}
ns
[
'_setup'
]
=
setup
else
:
...
...
@@ -136,13 +136,13 @@ class Timer:
code
=
compile
(
src
,
dummy_src_name
,
"exec"
)
exec
(
code
,
globals
(),
ns
)
self
.
inner
=
ns
[
"inner"
]
elif
hasattr
(
stmt
,
'__call__'
):
elif
callable
(
stmt
):
self
.
src
=
None
if
isinstance
(
setup
,
str
):
_setup
=
setup
def
setup
():
exec
(
_setup
,
globals
(),
ns
)
elif
not
hasattr
(
setup
,
'__call__'
):
elif
not
callable
(
setup
):
raise
ValueError
(
"setup is neither a string nor callable"
)
self
.
inner
=
_template_func
(
setup
,
stmt
)
else
:
...
...
Lib/tkinter/__init__.py
View file @
5d1155c0
...
...
@@ -1039,7 +1039,7 @@ class Misc:
for
k
,
v
in
cnf
.
items
():
if
v
is
not
None
:
if
k
[
-
1
]
==
'_'
:
k
=
k
[:
-
1
]
if
hasattr
(
v
,
'__call__'
):
if
callable
(
v
):
v
=
self
.
_register
(
v
)
elif
isinstance
(
v
,
(
tuple
,
list
)):
nv
=
[]
...
...
@@ -1608,7 +1608,7 @@ class Wm:
"""Bind function FUNC to command NAME for this widget.
Return the function bound to NAME if None is given. NAME could be
e.g. "WM_SAVE_YOURSELF" or "WM_DELETE_WINDOW"."""
if
hasattr
(
func
,
'__call__'
):
if
callable
(
func
):
command
=
self
.
_register
(
func
)
else
:
command
=
func
...
...
@@ -3178,7 +3178,7 @@ class Image:
elif
kw
:
cnf
=
kw
options
=
()
for
k
,
v
in
cnf
.
items
():
if
hasattr
(
v
,
'__call__'
):
if
callable
(
v
):
v
=
self
.
_register
(
v
)
options
=
options
+
(
'-'
+
k
,
v
)
self
.
tk
.
call
((
'image'
,
'create'
,
imgtype
,
name
,)
+
options
)
...
...
@@ -3201,7 +3201,7 @@ class Image:
for
k
,
v
in
_cnfmerge
(
kw
).
items
():
if
v
is
not
None
:
if
k
[
-
1
]
==
'_'
:
k
=
k
[:
-
1
]
if
hasattr
(
v
,
'__call__'
):
if
callable
(
v
):
v
=
self
.
_register
(
v
)
res
=
res
+
(
'-'
+
k
,
v
)
self
.
tk
.
call
((
self
.
name
,
'config'
)
+
res
)
...
...
Lib/tkinter/tix.py
View file @
5d1155c0
...
...
@@ -405,7 +405,7 @@ class TixWidget(tkinter.Widget):
elif
kw
:
cnf
=
kw
options
=
()
for
k
,
v
in
cnf
.
items
():
if
hasattr
(
v
,
'__call__'
):
if
callable
(
v
):
v
=
self
.
_register
(
v
)
options
=
options
+
(
'-'
+
k
,
v
)
return
master
.
tk
.
call
((
'image'
,
'create'
,
imgtype
,)
+
options
)
...
...
Lib/unittest/loader.py
View file @
5d1155c0
...
...
@@ -113,7 +113,7 @@ class TestLoader(object):
return
self
.
suiteClass
([
inst
])
elif
isinstance
(
obj
,
suite
.
TestSuite
):
return
obj
if
hasattr
(
obj
,
'__call__'
):
if
callable
(
obj
):
test
=
obj
()
if
isinstance
(
test
,
suite
.
TestSuite
):
return
test
...
...
@@ -138,7 +138,7 @@ class TestLoader(object):
def
isTestMethod
(
attrname
,
testCaseClass
=
testCaseClass
,
prefix
=
self
.
testMethodPrefix
):
return
attrname
.
startswith
(
prefix
)
and
\
hasattr
(
getattr
(
testCaseClass
,
attrname
),
'__call__'
)
callable
(
getattr
(
testCaseClass
,
attrname
)
)
testFnNames
=
testFnNames
=
list
(
filter
(
isTestMethod
,
dir
(
testCaseClass
)))
if
self
.
sortTestMethodsUsing
:
...
...
Lib/unittest/suite.py
View file @
5d1155c0
...
...
@@ -42,7 +42,7 @@ class BaseTestSuite(object):
def
addTest
(
self
,
test
):
# sanity checks
if
not
hasattr
(
test
,
'__call__'
):
if
not
callable
(
test
):
raise
TypeError
(
"{} is not callable"
.
format
(
repr
(
test
)))
if
isinstance
(
test
,
type
)
and
issubclass
(
test
,
(
case
.
TestCase
,
TestSuite
)):
...
...
Lib/warnings.py
View file @
5d1155c0
...
...
@@ -259,7 +259,7 @@ def warn_explicit(message, category, filename, lineno,
raise
RuntimeError
(
"Unrecognized action (%r) in warnings.filters:
\
n
%s"
%
(
action
,
item
))
if
not
hasattr
(
showwarning
,
"__call__"
):
if
not
callable
(
showwarning
):
raise
TypeError
(
"warnings.showwarning() must be set to a "
"function or method"
)
# Print message and context
...
...
Lib/xmlrpc/server.py
View file @
5d1155c0
...
...
@@ -149,7 +149,7 @@ def list_public_methods(obj):
return
[
member
for
member
in
dir
(
obj
)
if
not
member
.
startswith
(
'_'
)
and
hasattr
(
getattr
(
obj
,
member
),
'__call__'
)]
callable
(
getattr
(
obj
,
member
)
)]
class
SimpleXMLRPCDispatcher
:
"""Mix-in class that dispatches XML-RPC requests.
...
...
Misc/NEWS
View file @
5d1155c0
...
...
@@ -61,6 +61,8 @@ Core and Builtins
Library
-------
- Issue #13258: Use callable() built-in in the standard library.
- Issue #13273: fix a bug that prevented HTMLParser to properly detect some
tags when strict=False.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment