ATM we allow ~obj
with any dtype, but the pyarrow dtypes only allow it with boolean dtype. We should be consistent here, either allowing it for all dtypes or for only-bool dtypes. On a call with @mroeschke and @jorisvandenbossche a couple weeks ago we were leaning towards only-bool, though I forget the exact reasoning. Either of you remember?
Comment From: mroeschke
I guess we're currently consistent with numpy and Python with for ints which is the bit-wise inversion
In [7]: ~2
Out[7]: -3
In [8]: ~np.array([2])
Out[8]: array([-3])
In [9]: ~pd.Series([2])
Out[9]:
0 -3
dtype: int64
I'm guessing it wasn't "obvious" that this is what it was doing compared to bools.