File: test_delegators.py

package info (click to toggle)
domdf-python-tools 3.10.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,784 kB
  • sloc: python: 10,838; makefile: 7
file content (108 lines) | stat: -rw-r--r-- 2,603 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# stdlib
import inspect
from typing import Any, get_type_hints

# this package
from domdf_python_tools.delegators import delegate_kwargs, delegates


def f(a: int = 1, b: float = 1.1, c: int = 2, d: list = [], e: tuple = (), f: str = '', g: bytes = b'') -> int:
	pass


def test_delegate_kwargs():

	@delegate_kwargs(f)
	def g(b: int, a: int = 7, **kwargs: Any):
		pass

	@delegate_kwargs(f)
	def h(a: int, b: int):
		pass

	sig = inspect.signature(g)
	assert list(sig.parameters.keys()) == ['b', 'a', 'c', 'd', 'e', 'f', 'g']
	assert sig.parameters['a'].default == 7
	assert sig.parameters['b'].default is inspect.Parameter.empty
	assert sig.parameters['c'].default == 2
	assert sig.parameters['d'].default == []
	assert sig.parameters['e'].default == ()
	assert sig.parameters['f'].default == ''
	assert sig.parameters['g'].default == b''
	assert sig.return_annotation is inspect.Parameter.empty  # TODO
	assert get_type_hints(g) == {
			'b': int,
			'a': int,
			'c': int,
			'd': list,
			'e': tuple,
			'f': str,
			'g': bytes,
			"return": int,
			}

	assert list(inspect.signature(h).parameters.keys()) == ['a', 'b']


def test_delegates():

	@delegates(f)
	def g(*args, **kwargs):
		pass

	@delegates(f)
	def h(a: int, b: int):
		pass

	sig = inspect.signature(g)
	assert list(sig.parameters.keys()) == ['a', 'b', 'c', 'd', 'e', 'f', 'g']
	assert sig.parameters['a'].default == 1
	assert sig.parameters['b'].default == 1.1
	assert sig.parameters['c'].default == 2
	assert sig.parameters['d'].default == []
	assert sig.parameters['e'].default == ()
	assert sig.parameters['f'].default == ''
	assert sig.parameters['g'].default == b''
	assert sig.return_annotation == int
	assert get_type_hints(g) == {
			'a': int,
			'b': float,
			'c': int,
			'd': list,
			'e': tuple,
			'f': str,
			'g': bytes,
			"return": int,
			}

	assert list(inspect.signature(h).parameters.keys()) == ['a', 'b']


def test_delegates_method():

	class F:

		@delegates(f)
		def g(self, *args, **kwargs) -> str:
			pass

	sig = inspect.signature(F.g)
	assert list(sig.parameters.keys()) == ["self", 'a', 'b', 'c', 'd', 'e', 'f', 'g']
	assert sig.parameters['a'].default == 1
	assert sig.parameters['b'].default == 1.1
	assert sig.parameters['c'].default == 2
	assert sig.parameters['d'].default == []
	assert sig.parameters['e'].default == ()
	assert sig.parameters['f'].default == ''
	assert sig.parameters['g'].default == b''
	assert sig.return_annotation == str
	assert get_type_hints(F.g) == {
			'a': int,
			'b': float,
			'c': int,
			'd': list,
			'e': tuple,
			'f': str,
			'g': bytes,
			"return": str,
			}