-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Expand file tree
/
Copy pathwrong_arguments.py
More file actions
131 lines (88 loc) · 1.23 KB
/
Copy pathwrong_arguments.py
File metadata and controls
131 lines (88 loc) · 1.23 KB
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/env python
def f0(x):
pass
def f1(x, y = None):
pass
def f2(x, *y):
pass
def f3(x, y = None, *z):
pass
def f4(x, **y):
pass
def f5(x, y = None, **z):
pass
def f6(x, y):
pass
def f7(x, y, z):
pass
# Too few arguments
f0()
f1()
f2()
f3()
f4()
f5()
f6(1)
f7(1,2)
#Too many arguments
f0(1,2)
f1(1,2,3)
f5(1,2,3)
f6(1,2,3)
f6(1,2,3,4)
#OK
#Not too few
f7(*t)
#Not too many
f2(1,2,3,4,5,6)
#Illegal name
f0(y=1)
f1(z=1)
f2(x=0, y=1)
#Ok name
f0(x=0)
f1(x=0, y=1)
f4(q=4)
#This is correct, but a bit weird.
f6(**{'x':1, 'y':2})
l0 = lambda : 0
l1 = lambda x : 2 * x
l1d = lambda x = 0 : 2 *x
#OK
l0()
l1(1)
l1d()
l1d(1)
#Too many
l0(1)
l1(1,2)
l1d(1,2)
#Too few
l1()
t2 = (1,2)
t3 = (1,2,3)
#Ok
f(*t2)
#Too many
f6(*(1,2,3))
f6(*t3)
#Ok
f6(**{'x':1, 'y':2})
#Illegal name
f6(**{'x':1, 'y':2, 'z':3})
#Theoretically -1 arguments required. Don't report
class C(object):
def f():
pass
C().f()
#Too many and wrong name -- check only wrong name is flagged.
f1(x, y, z=1)
#Overriding and call is wrong.
class Eggs1(object):
def spam(self):
pass
class Eggs2(Eggs1):
def spam(self, arg0, arg1):
pass
e = Eggs1() if cond else Eggs2()
e.spam(0)