File tree Expand file tree Collapse file tree 3 files changed +35
-5
lines changed Expand file tree Collapse file tree 3 files changed +35
-5
lines changed Original file line number Diff line number Diff line change @@ -659,8 +659,6 @@ def test_dictview_set_operations_on_keys(self):
659
659
self .assertEqual (k1 ^ k2 , {3 })
660
660
self .assertEqual (k1 ^ k3 , {1 ,2 ,4 })
661
661
662
- # TODO: RUSTPYTHON
663
- @unittest .expectedFailure
664
662
def test_dictview_set_operations_on_items (self ):
665
663
k1 = {1 :1 , 2 :2 }.items ()
666
664
k2 = {1 :1 , 2 :2 , 3 :3 }.items ()
Original file line number Diff line number Diff line change @@ -926,6 +926,30 @@ impl PyDictItems {
926
926
let inner = zelf. symmetric_difference ( other, vm) ?;
927
927
Ok ( PySet { inner } )
928
928
}
929
+
930
+ #[ pymethod( name = "__rand__" ) ]
931
+ #[ pymethod( magic) ]
932
+ fn and ( zelf : PyRef < Self > , other : ArgIterable , vm : & VirtualMachine ) -> PyResult < PySet > {
933
+ let zelf = Self :: to_set ( zelf, vm) ?;
934
+ let inner = zelf. intersection ( other, vm) ?;
935
+ Ok ( PySet { inner } )
936
+ }
937
+
938
+ #[ pymethod( name = "__ror__" ) ]
939
+ #[ pymethod( magic) ]
940
+ fn or ( zelf : PyRef < Self > , other : ArgIterable , vm : & VirtualMachine ) -> PyResult < PySet > {
941
+ let zelf = Self :: to_set ( zelf, vm) ?;
942
+ let inner = zelf. union ( other, vm) ?;
943
+ Ok ( PySet { inner } )
944
+ }
945
+
946
+ #[ pymethod( name = "__rsub__" ) ]
947
+ #[ pymethod( magic) ]
948
+ fn sub ( zelf : PyRef < Self > , other : ArgIterable , vm : & VirtualMachine ) -> PyResult < PySet > {
949
+ let zelf = Self :: to_set ( zelf, vm) ?;
950
+ let inner = zelf. difference ( other, vm) ?;
951
+ Ok ( PySet { inner } )
952
+ }
929
953
}
930
954
931
955
pub ( crate ) fn init ( context : & PyContext ) {
Original file line number Diff line number Diff line change @@ -126,7 +126,7 @@ impl PySetInner {
126
126
Ok ( true )
127
127
}
128
128
129
- fn union ( & self , other : ArgIterable , vm : & VirtualMachine ) -> PyResult < PySetInner > {
129
+ pub ( super ) fn union ( & self , other : ArgIterable , vm : & VirtualMachine ) -> PyResult < PySetInner > {
130
130
let set = self . clone ( ) ;
131
131
for item in other. iter ( vm) ? {
132
132
set. add ( item?, vm) ?;
@@ -135,7 +135,11 @@ impl PySetInner {
135
135
Ok ( set)
136
136
}
137
137
138
- fn intersection ( & self , other : ArgIterable , vm : & VirtualMachine ) -> PyResult < PySetInner > {
138
+ pub ( super ) fn intersection (
139
+ & self ,
140
+ other : ArgIterable ,
141
+ vm : & VirtualMachine ,
142
+ ) -> PyResult < PySetInner > {
139
143
let set = PySetInner :: default ( ) ;
140
144
for item in other. iter ( vm) ? {
141
145
let obj = item?;
@@ -146,7 +150,11 @@ impl PySetInner {
146
150
Ok ( set)
147
151
}
148
152
149
- fn difference ( & self , other : ArgIterable , vm : & VirtualMachine ) -> PyResult < PySetInner > {
153
+ pub ( super ) fn difference (
154
+ & self ,
155
+ other : ArgIterable ,
156
+ vm : & VirtualMachine ,
157
+ ) -> PyResult < PySetInner > {
150
158
let set = self . copy ( ) ;
151
159
for item in other. iter ( vm) ? {
152
160
set. content . delete_if_exists ( vm, & item?) ?;
You can’t perform that action at this time.
0 commit comments