id,node_id,number,state,locked,title,user,body,created_at,updated_at,closed_at,merged_at,merge_commit_sha,assignee,milestone,draft,head,base,author_association,auto_merge,repo,url,merged_by 282140537,MDExOlB1bGxSZXF1ZXN0MjgyMTQwNTM3,2989,closed,0,Add strftime() to datetime accessor with cftimeindex and dask support,6145107," - [x] Closes #2090 - [x] Tests added - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API - [x] Add further examples to User Guide Docs Building on #2144, I added dask support and returning the appropriate object type. The two initial commits show alternate approach to handling cftime values. Either adding strftime to `cftimeindex` and accessing that way (commit 5de4db1) or just rolling the loop within the datetime accessor and not touching `cftimeindex` at all ( 51239c9). can revert commit 5de4db1 if its preferred to not touch `cftimeindex` for any reason. Can clean up docstrings and minor formatting after some input on the implementation details. Is there a vectorized or better method for the cftime values? List comprehension was the best I could come up with, borrowing from similar logic elsewhere in the code. ",2019-05-24T19:52:42Z,2019-06-01T07:51:43Z,2019-06-01T07:51:17Z,2019-06-01T07:51:17Z,74e5ff64171e84a2da3984f512d2134a233240e2,,,0,9b8bc0147d48625fdd54177532f4dbb26c397c18,0811141e8f985a1f3b95ead92c3850cc74e160a5,CONTRIBUTOR,,13221727,https://github.com/pydata/xarray/pull/2989, 1306588555,PR_kwDOAMm_X85N4PWL,7741,closed,0,Add lshift and rshift operators,6145107,"This seems a little too easy, but the PR just adds lshift and rshit to `generate_ops.py` and `ops.py` then generated the 2 stub files with `generate_ops.py`. - [x] Closes #7727 - [x] Tests added for: - xr.Variable - DataArray - dask - groupby - [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst` - There will be new `<<` `>>` syntax for dataarrays and datasets. - [x] New functions/methods are listed in `api.rst` - Existing basic math operators aren't really listed, that I can find. - Could add example code in the ""Data arrays also implement many numpy.ndarray methods:"" section of computation.rst ? I'll wait for initial review before spending time on whats-new and api docs. This enables bit shifting on arrays (when the type supports it). ```python import xarray as xr x = xr.DataArray(5) print(x << 1) # # array(10) x = xr.DataArray([0,1,2,3,4,5]) print(x << 1) # # array([ 0, 2, 4, 6, 8, 10]) # Dimensions without coordinates: dim_0 x = xr.DataArray([0,1,2,3,4,5]) print(x >> 1) # # array([0, 0, 1, 1, 2, 2]) # Dimensions without coordinates: dim_0 x = xr.DataArray([0,1,2,3,4,5.]) print(x >> 1) Traceback (most recent call last): File """", line 1, in File ""/workspaces/xarray/xarray/core/_typed_ops.py"", line 255, in __rshift__ return self._binary_op(other, operator.rshift) File ""/workspaces/xarray/xarray/core/dataarray.py"", line 4566, in _binary_op f(self.variable, other_variable) File ""/workspaces/xarray/xarray/core/_typed_ops.py"", line 461, in __rshift__ return self._binary_op(other, operator.rshift) File ""/workspaces/xarray/xarray/core/variable.py"", line 2662, in _binary_op f(self_data, other_data) if not reflexive else f(other_data, self_data) TypeError: ufunc 'right_shift' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' ```",2023-04-08T21:45:46Z,2023-04-28T14:22:07Z,2023-04-28T14:22:07Z,2023-04-28T14:22:07Z,a220022e7ef8d3df68619643954352fa39394ea8,,,0,3efcbe5fbffaf43667fa070cbc4ae9f834923c00,7c53a94f53c4c01155c432c8b287f3d0b318a7c7,CONTRIBUTOR,,13221727,https://github.com/pydata/xarray/pull/7741,