|
18 | 18 | import operator
|
19 | 19 | from importlib import import_module
|
20 | 20 |
|
21 |
| -from .compatibility import PY3 |
22 | 21 | from .functoolz import (is_partial_args, is_arity, has_varargs,
|
23 | 22 | has_keywords, num_required_args)
|
24 | 23 |
|
25 |
| -if PY3: # pragma: py2 no cover |
26 |
| - import builtins |
27 |
| -else: # pragma: py3 no cover |
28 |
| - import __builtin__ as builtins |
| 24 | +import builtins |
29 | 25 |
|
30 | 26 | # We mock builtin callables using lists of tuples with lambda functions.
|
31 | 27 | #
|
|
235 | 231 | lambda source, globals: None,
|
236 | 232 | lambda source, globals, locals: None]
|
237 | 233 |
|
238 |
| -if PY3: # pragma: py2 no cover |
239 |
| - module_info[builtins].update( |
240 |
| - breakpoint=[ |
241 |
| - lambda *args, **kws: None], |
242 |
| - bytes=[ |
243 |
| - lambda: None, |
244 |
| - lambda int: None, |
245 |
| - lambda string, encoding='utf8', errors='strict': None], |
246 |
| - compile=[ |
247 |
| - (0, lambda source, filename, mode, flags=0, |
248 |
| - dont_inherit=False, optimize=-1: None)], |
249 |
| - max=[ |
250 |
| - (1, lambda iterable: None, ('default', 'key',)), |
251 |
| - (1, lambda arg1, arg2, *args: None, ('key',))], |
252 |
| - min=[ |
253 |
| - (1, lambda iterable: None, ('default', 'key',)), |
254 |
| - (1, lambda arg1, arg2, *args: None, ('key',))], |
255 |
| - open=[ |
256 |
| - (0, lambda file, mode='r', buffering=-1, encoding=None, |
257 |
| - errors=None, newline=None, closefd=True, opener=None: None)], |
258 |
| - sorted=[ |
259 |
| - (1, lambda iterable: None, ('key', 'reverse'))], |
260 |
| - str=[ |
261 |
| - lambda object='', encoding='utf', errors='strict': None], |
262 |
| - ) |
263 |
| - module_info[builtins]['print'] = [ |
264 |
| - (0, lambda *args: None, ('sep', 'end', 'file', 'flush',))] |
265 |
| - |
266 |
| -else: # pragma: py3 no cover |
267 |
| - module_info[builtins].update( |
268 |
| - bytes=[ |
269 |
| - lambda object='': None], |
270 |
| - compile=[ |
271 |
| - (0, lambda source, filename, mode, flags=0, |
272 |
| - dont_inherit=False: None)], |
273 |
| - max=[ |
274 |
| - (1, lambda iterable, *args: None, ('key',))], |
275 |
| - min=[ |
276 |
| - (1, lambda iterable, *args: None, ('key',))], |
277 |
| - open=[ |
278 |
| - (0, lambda file, mode='r', buffering=-1: None)], |
279 |
| - sorted=[ |
280 |
| - lambda iterable, cmp=None, key=None, reverse=False: None], |
281 |
| - str=[ |
282 |
| - lambda object='': None], |
283 |
| - ) |
284 |
| - module_info[builtins]['print'] = [ |
285 |
| - (0, lambda *args: None, ('sep', 'end', 'file',))] |
| 234 | +module_info[builtins].update( |
| 235 | + breakpoint=[ |
| 236 | + lambda *args, **kws: None], |
| 237 | + bytes=[ |
| 238 | + lambda: None, |
| 239 | + lambda int: None, |
| 240 | + lambda string, encoding='utf8', errors='strict': None], |
| 241 | + compile=[ |
| 242 | + (0, lambda source, filename, mode, flags=0, |
| 243 | + dont_inherit=False, optimize=-1: None)], |
| 244 | + max=[ |
| 245 | + (1, lambda iterable: None, ('default', 'key',)), |
| 246 | + (1, lambda arg1, arg2, *args: None, ('key',))], |
| 247 | + min=[ |
| 248 | + (1, lambda iterable: None, ('default', 'key',)), |
| 249 | + (1, lambda arg1, arg2, *args: None, ('key',))], |
| 250 | + open=[ |
| 251 | + (0, lambda file, mode='r', buffering=-1, encoding=None, |
| 252 | + errors=None, newline=None, closefd=True, opener=None: None)], |
| 253 | + sorted=[ |
| 254 | + (1, lambda iterable: None, ('key', 'reverse'))], |
| 255 | + str=[ |
| 256 | + lambda object='', encoding='utf', errors='strict': None], |
| 257 | +) |
| 258 | +module_info[builtins]['print'] = [ |
| 259 | + (0, lambda *args: None, ('sep', 'end', 'file', 'flush',))] |
| 260 | + |
286 | 261 |
|
287 | 262 | module_info[functools] = dict(
|
288 | 263 | cmp_to_key=[
|
|
346 | 321 | (0, lambda *iterables: None, ('fillvalue',))],
|
347 | 322 | )
|
348 | 323 |
|
349 |
| -if PY3: # pragma: py2 no cover |
350 |
| - module_info[itertools].update( |
351 |
| - product=[ |
352 |
| - (0, lambda *iterables: None, ('repeat',))], |
353 |
| - ) |
354 |
| -else: # pragma: py3 no cover |
355 |
| - module_info[itertools].update( |
356 |
| - product=[ |
357 |
| - lambda *iterables: None], |
358 |
| - ) |
| 324 | +module_info[itertools].update( |
| 325 | + product=[ |
| 326 | + (0, lambda *iterables: None, ('repeat',))], |
| 327 | +) |
| 328 | + |
359 | 329 |
|
360 | 330 | module_info[operator] = dict(
|
361 | 331 | __abs__=[
|
|
622 | 592 | classval=None: None)],
|
623 | 593 | )
|
624 | 594 |
|
625 |
| -if PY3: # pragma: py2 no cover |
626 |
| - def num_pos_args(sigspec): |
627 |
| - """ Return the number of positional arguments. ``f(x, y=1)`` has 1""" |
628 |
| - return sum(1 for x in sigspec.parameters.values() |
629 |
| - if x.kind == x.POSITIONAL_OR_KEYWORD |
630 |
| - and x.default is x.empty) |
631 |
| - |
632 |
| - def get_exclude_keywords(num_pos_only, sigspec): |
633 |
| - """ Return the names of position-only arguments if func has **kwargs""" |
634 |
| - if num_pos_only == 0: |
635 |
| - return () |
636 |
| - has_kwargs = any(x.kind == x.VAR_KEYWORD |
637 |
| - for x in sigspec.parameters.values()) |
638 |
| - if not has_kwargs: |
639 |
| - return () |
640 |
| - pos_args = list(sigspec.parameters.values())[:num_pos_only] |
641 |
| - return tuple(x.name for x in pos_args) |
642 |
| - |
643 |
| - def signature_or_spec(func): |
644 |
| - try: |
645 |
| - return inspect.signature(func) |
646 |
| - except (ValueError, TypeError): |
647 |
| - return None |
648 |
| - |
649 |
| -else: # pragma: py3 no cover |
650 |
| - def num_pos_args(sigspec): |
651 |
| - """ Return the number of positional arguments. ``f(x, y=1)`` has 1""" |
652 |
| - if sigspec.defaults: |
653 |
| - return len(sigspec.args) - len(sigspec.defaults) |
654 |
| - return len(sigspec.args) |
655 |
| - |
656 |
| - def get_exclude_keywords(num_pos_only, sigspec): |
657 |
| - """ Return the names of position-only arguments if func has **kwargs""" |
658 |
| - if num_pos_only == 0: |
659 |
| - return () |
660 |
| - has_kwargs = sigspec.keywords is not None |
661 |
| - if not has_kwargs: |
662 |
| - return () |
663 |
| - return tuple(sigspec.args[:num_pos_only]) |
664 |
| - |
665 |
| - def signature_or_spec(func): |
666 |
| - try: |
667 |
| - return inspect.getargspec(func) |
668 |
| - except TypeError: |
669 |
| - return None |
| 595 | + |
| 596 | +def num_pos_args(sigspec): |
| 597 | + """ Return the number of positional arguments. ``f(x, y=1)`` has 1""" |
| 598 | + return sum(1 for x in sigspec.parameters.values() |
| 599 | + if x.kind == x.POSITIONAL_OR_KEYWORD |
| 600 | + and x.default is x.empty) |
| 601 | + |
| 602 | + |
| 603 | +def get_exclude_keywords(num_pos_only, sigspec): |
| 604 | + """ Return the names of position-only arguments if func has **kwargs""" |
| 605 | + if num_pos_only == 0: |
| 606 | + return () |
| 607 | + has_kwargs = any(x.kind == x.VAR_KEYWORD |
| 608 | + for x in sigspec.parameters.values()) |
| 609 | + if not has_kwargs: |
| 610 | + return () |
| 611 | + pos_args = list(sigspec.parameters.values())[:num_pos_only] |
| 612 | + return tuple(x.name for x in pos_args) |
| 613 | + |
| 614 | + |
| 615 | +def signature_or_spec(func): |
| 616 | + try: |
| 617 | + return inspect.signature(func) |
| 618 | + except (ValueError, TypeError): |
| 619 | + return None |
670 | 620 |
|
671 | 621 |
|
672 | 622 | def expand_sig(sig):
|
@@ -792,7 +742,7 @@ def _has_varargs(func):
|
792 | 742 | checks = [check_varargs(sig) for sig in sigs]
|
793 | 743 | if all(checks):
|
794 | 744 | return True
|
795 |
| - elif any(checks): # pragma: py2 no cover |
| 745 | + elif any(checks): |
796 | 746 | return None
|
797 | 747 | return False
|
798 | 748 |
|
|
0 commit comments