Skip to content

Commit b53d29a

Browse files
thomas-serre-sonarsourcesonartech
authored andcommitted
SONARPY-3408 Make Dataset stub more complete (#543)
GitOrigin-RevId: 9f483aca09e822393817451ba06a917128708ade
1 parent 40b47fc commit b53d29a

21 files changed

+280
-69
lines changed

python-checks/src/test/resources/checks/argumentNumber.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,3 +231,7 @@ def some_method(self, param): ...
231231
unbound_method(1, 2, 3) # FN SONARPY-2285
232232
bound_method() # FN SONARPY-2285
233233
bound_method(1, 2) # FN SONARPY-2285
234+
235+
def torch():
236+
import torch
237+
torch.cat(torch.Tensor(), axis=-1)

python-checks/src/test/resources/checks/confusingTypeChecking/itemOperations.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,13 @@ def custom_mock(extended_mock: MockExtention):
5454
del extended_mock[42]
5555
extended_mock[42] = 42
5656
a = extended_mock[42]
57+
58+
from torch.utils.data import Dataset, IterableDataset, TensorDataset, StackDataset, ConcatDataset, ChainDataset, Subset
59+
def torch_datasets(d1:Dataset, d2:IterableDataset, d3:TensorDataset, d4:StackDataset, d5:ConcatDataset, d6:ChainDataset, d7:Subset):
60+
d1[42]
61+
d2[42]
62+
d3[42]
63+
d4[42]
64+
d5[42]
65+
d6[42]
66+
d7[42]

python-checks/src/test/resources/checks/confusingTypeChecking/iterationOnNonIterable.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,7 @@ def custom_mock(extended_mock: MockExtention):
6161
a, *rest = extended_mock
6262
iter(extended_mock)
6363
for elem in extended_mock: ... # OK
64+
65+
from torch.utils.data import Dataset, IterableDataset, TensorDataset, StackDataset, ConcatDataset, ChainDataset, Subset
66+
def torch_iterable_dataset(d:IterableDataset):
67+
for elem in d: ... # OK

python-checks/src/test/resources/checks/specialMethodReturnTypeCheck.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ def __len__(self):
317317
return NotImplemented # Compliant
318318

319319
def pytorch_dataset():
320-
from torch.utils.data import Dataset, IterableDataset, TensorDataset, StackDataset, ConcatDataset, ChainDataset
320+
from torch.utils.data import Dataset, IterableDataset, TensorDataset, StackDataset, ConcatDataset, ChainDataset, Subset
321321

322322
class LenMethodDataSetClass01(Dataset):
323323
def __init__(self, data):
@@ -353,13 +353,13 @@ def __len__(self):
353353
class LenMethodDataSetClass07(ConcatDataset):
354354
def __len__(self):
355355
return self.data.shape # Noncompliant
356+
return self.data.not_shape # Compliant
356357

357-
class LenMethodDataSetClass08(ConcatDataset):
358+
class LenMethodDataSetClass08(Subset):
358359
def __len__(self):
359360
return self.data.shape # Noncompliant
360361
return self.data.not_shape # Compliant
361362

362-
363363
class RaisesException01:
364364
def __hash__(self): # Compliant
365365
raise TypeError("unhashable type: RaisesException01")

python-frontend/src/main/resources/org/sonar/python/types/custom_protobuf/torch.protobuf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1247,7 +1247,7 @@ torch.load"
12471247
outD
12481248
Union[torch.Tensor,None]
12491249
torch.Tensor" torch.Tensor
1250-
None �
1250+
None �
12511251
cat torch.cat"
12521252
torch.Tensor" torch.Tensor*[
12531253
tensorsN
@@ -1258,7 +1258,7 @@ torch.load"
12581258
outD
12591259
Union[torch.Tensor,None]
12601260
torch.Tensor" torch.Tensor
1261-
None �
1261+
None 0:�
12621262
stack torch.stack"
12631263
torch.Tensor" torch.Tensor*[
12641264
tensorsN

python-frontend/src/main/resources/org/sonar/python/types/custom_protobuf/torch.utils.data.dataset.protobuf

Lines changed: 75 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
torch.utils.data.dataset�
2+
torch.utils.data.dataset�
33
Dataset torch.utils.data.dataset.Dataset"builtins.object*�
44
__init__)torch.utils.data.dataset.Dataset.__init__"
55
None*N
@@ -8,7 +8,15 @@
88
args
99
Any*
1010
kwargs
11-
Any�
11+
Any*�
12+
__getitem__,torch.utils.data.dataset.Dataset.__getitem__"
13+
Any*FD
14+
torch.utils.data.dataset.Dataset" torch.utils.data.dataset.Dataset* 
15+
Any*�
16+
__add__(torch.utils.data.dataset.Dataset.__add__"P
17+
&torch.utils.data.dataset.ConcatDataset"&torch.utils.data.dataset.ConcatDataset*FD
18+
torch.utils.data.dataset.Dataset" torch.utils.data.dataset.Dataset*FD
19+
torch.utils.data.dataset.Dataset" torch.utils.data.dataset.Dataset�
1220
IterableDataset(torch.utils.data.dataset.IterableDataset" torch.utils.data.dataset.Dataset*�
1321
__init__1torch.utils.data.dataset.IterableDataset.__init__"
1422
None*^
@@ -17,7 +25,11 @@
1725
args
1826
Any*
1927
kwargs
20-
Any�
28+
Any*�
29+
__add__0torch.utils.data.dataset.IterableDataset.__add__"N
30+
%torch.utils.data.dataset.ChainDataset"%torch.utils.data.dataset.ChainDataset*VT
31+
(torch.utils.data.dataset.IterableDataset"(torch.utils.data.dataset.IterableDataset*FD
32+
torch.utils.data.dataset.Dataset" torch.utils.data.dataset.Dataset�
2133
TensorDataset&torch.utils.data.dataset.TensorDataset" torch.utils.data.dataset.Dataset*�
2234
__init__/torch.utils.data.dataset.TensorDataset.__init__"
2335
None*Z
@@ -26,7 +38,14 @@
2638
args
2739
Any*
2840
kwargs
29-
Any�
41+
Any*�
42+
__getitem__2torch.utils.data.dataset.TensorDataset.__getitem__"
43+
Any*RP
44+
&torch.utils.data.dataset.TensorDataset"&torch.utils.data.dataset.TensorDataset* 
45+
Any*�
46+
__len__.torch.utils.data.dataset.TensorDataset.__len__"
47+
builtins.int" builtins.int*RP
48+
&torch.utils.data.dataset.TensorDataset"&torch.utils.data.dataset.TensorDataset�
3049
StackDataset%torch.utils.data.dataset.StackDataset" torch.utils.data.dataset.Dataset*�
3150
__init__.torch.utils.data.dataset.StackDataset.__init__"
3251
None*X
@@ -35,7 +54,21 @@
3554
args
3655
Any*
3756
kwargs
38-
Any�
57+
Any*�
58+
__getitem__1torch.utils.data.dataset.StackDataset.__getitem__"
59+
Any*PN
60+
%torch.utils.data.dataset.StackDataset"%torch.utils.data.dataset.StackDataset* 
61+
Any*�
62+
__getitems__2torch.utils.data.dataset.StackDataset.__getitems__"
63+
Any*X
64+
selfN
65+
%torch.utils.data.dataset.StackDataset"%torch.utils.data.dataset.StackDataset*9
66+
indices,
67+
builtins.list[Any]
68+
Any"builtins.list*�
69+
__len__-torch.utils.data.dataset.StackDataset.__len__"
70+
builtins.int" builtins.int*PN
71+
%torch.utils.data.dataset.StackDataset"%torch.utils.data.dataset.StackDataset�
3972
ConcatDataset&torch.utils.data.dataset.ConcatDataset" torch.utils.data.dataset.Dataset*�
4073
__init__/torch.utils.data.dataset.ConcatDataset.__init__"
4174
None*Z
@@ -44,7 +77,14 @@
4477
args
4578
Any*
4679
kwargs
47-
Any�
80+
Any*�
81+
__len__.torch.utils.data.dataset.ConcatDataset.__len__"
82+
builtins.int" builtins.int*RP
83+
&torch.utils.data.dataset.ConcatDataset"&torch.utils.data.dataset.ConcatDataset*�
84+
__getitem__2torch.utils.data.dataset.ConcatDataset.__getitem__"
85+
Any*RP
86+
&torch.utils.data.dataset.ConcatDataset"&torch.utils.data.dataset.ConcatDataset* 
87+
Any�
4888
ChainDataset%torch.utils.data.dataset.ChainDataset" torch.utils.data.dataset.Dataset*�
4989
__init__.torch.utils.data.dataset.ChainDataset.__init__"
5090
None*X
@@ -53,7 +93,36 @@
5393
args
5494
Any*
5595
kwargs
96+
Any*�
97+
__iter__.torch.utils.data.dataset.ChainDataset.__iter__"D
98+
torch.utils.data.dataset.Dataset" torch.utils.data.dataset.Dataset*PN
99+
%torch.utils.data.dataset.ChainDataset"%torch.utils.data.dataset.ChainDataset*�
100+
__len__-torch.utils.data.dataset.ChainDataset.__len__"
101+
builtins.int" builtins.int*PN
102+
%torch.utils.data.dataset.ChainDataset"%torch.utils.data.dataset.ChainDataset�
103+
Subsettorch.utils.data.dataset.Subset" torch.utils.data.dataset.Dataset*�
104+
__init__(torch.utils.data.dataset.Subset.__init__"
105+
None*L
106+
selfB
107+
torch.utils.data.dataset.Subset"torch.utils.data.dataset.Subset*
108+
args
109+
Any*
110+
kwargs
56111
Any*�
112+
__getitem__+torch.utils.data.dataset.Subset.__getitem__"
113+
Any*DB
114+
torch.utils.data.dataset.Subset"torch.utils.data.dataset.Subset* 
115+
Any*�
116+
__getitems__,torch.utils.data.dataset.Subset.__getitems__"
117+
Any*L
118+
selfB
119+
torch.utils.data.dataset.Subset"torch.utils.data.dataset.Subset*9
120+
indices,
121+
builtins.list[Any]
122+
Any"builtins.list*�
123+
__len__'torch.utils.data.dataset.Subset.__len__"
124+
builtins.int" builtins.int*DB
125+
torch.utils.data.dataset.Subset"torch.utils.data.dataset.Subset*�
57126
__annotations__(torch.utils.data.dataset.__annotations__W
58127
builtins.dict[builtins.str,Any]
59128
builtins.str" builtins.str

python-frontend/src/main/resources/org/sonar/python/types/custom_protobuf/torch.utils.data.protobuf

Lines changed: 76 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
torch.utils.data�
2+
torch.utils.data�
33
Dataset torch.utils.data.dataset.Dataset"builtins.object*�
44
__init__)torch.utils.data.dataset.Dataset.__init__"
55
None*N
@@ -8,7 +8,15 @@
88
args
99
Any*
1010
kwargs
11-
Any�
11+
Any*�
12+
__getitem__,torch.utils.data.dataset.Dataset.__getitem__"
13+
Any*FD
14+
torch.utils.data.dataset.Dataset" torch.utils.data.dataset.Dataset* 
15+
Any*�
16+
__add__(torch.utils.data.dataset.Dataset.__add__"P
17+
&torch.utils.data.dataset.ConcatDataset"&torch.utils.data.dataset.ConcatDataset*FD
18+
torch.utils.data.dataset.Dataset" torch.utils.data.dataset.Dataset*FD
19+
torch.utils.data.dataset.Dataset" torch.utils.data.dataset.Dataset�
1220
IterableDataset(torch.utils.data.dataset.IterableDataset" torch.utils.data.dataset.Dataset*�
1321
__init__1torch.utils.data.dataset.IterableDataset.__init__"
1422
None*^
@@ -17,7 +25,11 @@
1725
args
1826
Any*
1927
kwargs
20-
Any�
28+
Any*�
29+
__add__0torch.utils.data.dataset.IterableDataset.__add__"N
30+
%torch.utils.data.dataset.ChainDataset"%torch.utils.data.dataset.ChainDataset*VT
31+
(torch.utils.data.dataset.IterableDataset"(torch.utils.data.dataset.IterableDataset*FD
32+
torch.utils.data.dataset.Dataset" torch.utils.data.dataset.Dataset�
2133
TensorDataset&torch.utils.data.dataset.TensorDataset" torch.utils.data.dataset.Dataset*�
2234
__init__/torch.utils.data.dataset.TensorDataset.__init__"
2335
None*Z
@@ -26,7 +38,14 @@
2638
args
2739
Any*
2840
kwargs
29-
Any�
41+
Any*�
42+
__getitem__2torch.utils.data.dataset.TensorDataset.__getitem__"
43+
Any*RP
44+
&torch.utils.data.dataset.TensorDataset"&torch.utils.data.dataset.TensorDataset* 
45+
Any*�
46+
__len__.torch.utils.data.dataset.TensorDataset.__len__"
47+
builtins.int" builtins.int*RP
48+
&torch.utils.data.dataset.TensorDataset"&torch.utils.data.dataset.TensorDataset�
3049
StackDataset%torch.utils.data.dataset.StackDataset" torch.utils.data.dataset.Dataset*�
3150
__init__.torch.utils.data.dataset.StackDataset.__init__"
3251
None*X
@@ -35,7 +54,21 @@
3554
args
3655
Any*
3756
kwargs
38-
Any�
57+
Any*�
58+
__getitem__1torch.utils.data.dataset.StackDataset.__getitem__"
59+
Any*PN
60+
%torch.utils.data.dataset.StackDataset"%torch.utils.data.dataset.StackDataset* 
61+
Any*�
62+
__getitems__2torch.utils.data.dataset.StackDataset.__getitems__"
63+
Any*X
64+
selfN
65+
%torch.utils.data.dataset.StackDataset"%torch.utils.data.dataset.StackDataset*9
66+
indices,
67+
builtins.list[Any]
68+
Any"builtins.list*�
69+
__len__-torch.utils.data.dataset.StackDataset.__len__"
70+
builtins.int" builtins.int*PN
71+
%torch.utils.data.dataset.StackDataset"%torch.utils.data.dataset.StackDataset�
3972
ConcatDataset&torch.utils.data.dataset.ConcatDataset" torch.utils.data.dataset.Dataset*�
4073
__init__/torch.utils.data.dataset.ConcatDataset.__init__"
4174
None*Z
@@ -44,7 +77,14 @@
4477
args
4578
Any*
4679
kwargs
47-
Any�
80+
Any*�
81+
__len__.torch.utils.data.dataset.ConcatDataset.__len__"
82+
builtins.int" builtins.int*RP
83+
&torch.utils.data.dataset.ConcatDataset"&torch.utils.data.dataset.ConcatDataset*�
84+
__getitem__2torch.utils.data.dataset.ConcatDataset.__getitem__"
85+
Any*RP
86+
&torch.utils.data.dataset.ConcatDataset"&torch.utils.data.dataset.ConcatDataset* 
87+
Any�
4888
ChainDataset%torch.utils.data.dataset.ChainDataset" torch.utils.data.dataset.Dataset*�
4989
__init__.torch.utils.data.dataset.ChainDataset.__init__"
5090
None*X
@@ -53,7 +93,36 @@
5393
args
5494
Any*
5595
kwargs
56-
Any*q
96+
Any*�
97+
__iter__.torch.utils.data.dataset.ChainDataset.__iter__"D
98+
torch.utils.data.dataset.Dataset" torch.utils.data.dataset.Dataset*PN
99+
%torch.utils.data.dataset.ChainDataset"%torch.utils.data.dataset.ChainDataset*�
100+
__len__-torch.utils.data.dataset.ChainDataset.__len__"
101+
builtins.int" builtins.int*PN
102+
%torch.utils.data.dataset.ChainDataset"%torch.utils.data.dataset.ChainDataset�
103+
Subsettorch.utils.data.dataset.Subset" torch.utils.data.dataset.Dataset*�
104+
__init__(torch.utils.data.dataset.Subset.__init__"
105+
None*L
106+
selfB
107+
torch.utils.data.dataset.Subset"torch.utils.data.dataset.Subset*
108+
args
109+
Any*
110+
kwargs
111+
Any*�
112+
__getitem__+torch.utils.data.dataset.Subset.__getitem__"
113+
Any*DB
114+
torch.utils.data.dataset.Subset"torch.utils.data.dataset.Subset* 
115+
Any*�
116+
__getitems__,torch.utils.data.dataset.Subset.__getitems__"
117+
Any*L
118+
selfB
119+
torch.utils.data.dataset.Subset"torch.utils.data.dataset.Subset*9
120+
indices,
121+
builtins.list[Any]
122+
Any"builtins.list*�
123+
__len__'torch.utils.data.dataset.Subset.__len__"
124+
builtins.int" builtins.int*DB
125+
torch.utils.data.dataset.Subset"torch.utils.data.dataset.Subset*q
57126
__path__torch.utils.data.__path__J
58127
builtins.list[builtins.str]
59128
builtins.str" builtins.str"builtins.list*�

python-frontend/src/main/resources/org/sonar/python/types/third_party_protobuf/Xlib.ext.record.protobuf

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,17 @@ GetVersionXlib.ext.record.GetVersion"Xlib.protocol.rq.ReplyRequestj38j39j3
3939
RegisterClientsXlib.ext.record.RegisterClients"Xlib.protocol.rq.Requestj38j39j310j311j312j313l
4040
UnregisterClients!Xlib.ext.record.UnregisterClients"Xlib.protocol.rq.Requestj38j39j310j311j312j313c
4141

42-
GetContextXlib.ext.record.GetContext"Xlib.protocol.rq.ReplyRequestj38j39j310j311j312j313�
43-
EnableContextXlib.ext.record.EnableContext"Xlib.protocol.rq.ReplyRequest*�
42+
GetContextXlib.ext.record.GetContext"Xlib.protocol.rq.ReplyRequestj38j39j310j311j312j313�
43+
EnableContextXlib.ext.record.EnableContext"Xlib.protocol.rq.ReplyRequest*�
4444
__init__&Xlib.ext.record.EnableContext.__init__"
4545
None*H
4646
self>
4747
Xlib.ext.record.EnableContext"Xlib.ext.record.EnableContext*Y
4848
callbackK
4949
CallableType[builtins.function]&
50-
builtins.function"builtins.function*
51-
display
52-
Any*+
50+
builtins.function"builtins.function*K
51+
display>
52+
Xlib.protocol.display.Display"Xlib.protocol.display.Display*+
5353
defer
5454
builtins.bool"builtins.bool *v
5555
argsl

0 commit comments

Comments
 (0)