|
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