File tree Expand file tree Collapse file tree 4 files changed +24
-6
lines changed Expand file tree Collapse file tree 4 files changed +24
-6
lines changed Original file line number Diff line number Diff line change @@ -90,8 +90,6 @@ def test_dict_repr(self):
90
90
self .assertTrue (r == "dict_values(['ABC', 10])" or
91
91
r == "dict_values([10, 'ABC'])" )
92
92
93
- # TODO: RUSTPYTHON
94
- @unittest .expectedFailure
95
93
def test_keys_set_operations (self ):
96
94
d1 = {'a' : 1 , 'b' : 2 }
97
95
d2 = {'b' : 3 , 'c' : 2 }
@@ -148,8 +146,6 @@ def test_keys_set_operations(self):
148
146
self .assertTrue (de .keys ().isdisjoint (de .keys ()))
149
147
self .assertTrue (de .keys ().isdisjoint ([1 ]))
150
148
151
- # TODO: RUSTPYTHON
152
- @unittest .expectedFailure
153
149
def test_items_set_operations (self ):
154
150
d1 = {'a' : 1 , 'b' : 2 }
155
151
d2 = {'a' : 2 , 'b' : 2 }
Original file line number Diff line number Diff line change 47
47
assert 10 not in d .keys ()
48
48
assert (1 , 10 ) not in d .keys ()
49
49
assert "abc" not in d .keys ()
50
- assert ((3 ,4 ),5 ) not in d .keys ()
50
+ assert ((3 ,4 ),5 ) not in d .keys ()
51
+
52
+ d1 = {"a" : 1 , "b" : 2 }
53
+ d2 = {"c" : 3 , "d" : 4 }
54
+ assert d1 .items ().isdisjoint (d2 .items ())
55
+ assert d1 .keys ().isdisjoint (d2 .keys ())
56
+ d2 = {"b" : 3 , "d" : 4 }
57
+ assert d1 .items ().isdisjoint (d2 .items ())
58
+ assert not d1 .keys ().isdisjoint (d2 .keys ())
59
+ d2 = {"c" : 2 , "d" : 4 }
60
+ assert d1 .items ().isdisjoint (d2 .items ())
61
+ assert d1 .keys ().isdisjoint (d2 .keys ())
62
+ d2 = {"b" : 2 , "d" : 4 }
63
+ assert not d1 .items ().isdisjoint (d2 .items ())
64
+ assert not d1 .keys ().isdisjoint (d2 .keys ())
Original file line number Diff line number Diff line change @@ -987,6 +987,14 @@ trait ViewSetOps: DictView {
987
987
}
988
988
} )
989
989
}
990
+
991
+ #[ pymethod]
992
+ fn isdisjoint ( zelf : PyRef < Self > , other : ArgIterable , vm : & VirtualMachine ) -> PyResult < bool > {
993
+ // TODO: to_set is an expensive operation. After merging #3316 rewrite implementation using PySequence_Contains.
994
+ let zelf = Self :: to_set ( zelf, vm) ?;
995
+ let result = zelf. isdisjoint ( other, vm) ?;
996
+ Ok ( result)
997
+ }
990
998
}
991
999
992
1000
impl ViewSetOps for PyDictKeys { }
Original file line number Diff line number Diff line change @@ -195,7 +195,7 @@ impl PySetInner {
195
195
self . compare ( & other_set, PyComparisonOp :: Le , vm)
196
196
}
197
197
198
- fn isdisjoint ( & self , other : ArgIterable , vm : & VirtualMachine ) -> PyResult < bool > {
198
+ pub ( super ) fn isdisjoint ( & self , other : ArgIterable , vm : & VirtualMachine ) -> PyResult < bool > {
199
199
for item in other. iter ( vm) ? {
200
200
if self . contains ( & * item?, vm) ? {
201
201
return Ok ( false ) ;
You can’t perform that action at this time.
0 commit comments