@@ -186,8 +186,10 @@ def add_special_arithmetic_methods(cls, arith_method=None,
186186 arith_method : function (optional)
187187 factory for special arithmetic methods, with op string:
188188 f(op, name, str_rep, default_axis=None, fill_zeros=None, **eval_kwargs)
189- comp_method : function, optional,
189+ comp_method : function ( optional)
190190 factory for rich comparison - signature: f(op, name, str_rep)
191+ bool_method : function (optional)
192+ factory for boolean methods - signature: f(op, name, str_rep)
191193 use_numexpr : bool, default True
192194 whether to accelerate with numexpr, defaults to True
193195 force : bool, default False
@@ -234,9 +236,16 @@ def f(self, other):
234236 __isub__ = _wrap_inplace_method (new_methods ["__sub__" ]),
235237 __imul__ = _wrap_inplace_method (new_methods ["__mul__" ]),
236238 __itruediv__ = _wrap_inplace_method (new_methods ["__truediv__" ]),
237- __ipow__ = _wrap_inplace_method (new_methods ["__pow__" ]), ))
239+ __ifloordiv__ = _wrap_inplace_method (new_methods ["__floordiv__" ]),
240+ __imod__ = _wrap_inplace_method (new_methods ["__mod__" ]),
241+ __ipow__ = _wrap_inplace_method (new_methods ["__pow__" ])))
238242 if not compat .PY3 :
239- new_methods ["__idiv__" ] = new_methods ["__div__" ]
243+ new_methods ["__idiv__" ] = _wrap_inplace_method (new_methods ["__div__" ])
244+ if bool_method :
245+ new_methods .update (
246+ dict (__iand__ = _wrap_inplace_method (new_methods ["__and__" ]),
247+ __ior__ = _wrap_inplace_method (new_methods ["__or__" ]),
248+ __ixor__ = _wrap_inplace_method (new_methods ["__xor__" ])))
240249
241250 add_methods (cls , new_methods = new_methods , force = force , select = select ,
242251 exclude = exclude )
0 commit comments