id,node_id,number,title,user,state,locked,assignee,milestone,comments,created_at,updated_at,closed_at,author_association,active_lock_reason,draft,pull_request,body,reactions,performed_via_github_app,state_reason,repo,type 1947869312,PR_kwDOAMm_X85dCo6P,8324,Implement cftime vectorization as discussed in PR #8322,57914115,open,0,,,0,2023-10-17T17:01:25Z,2023-10-23T05:11:11Z,,CONTRIBUTOR,,0,pydata/xarray/pulls/8324,"As discussed in #8322, here is the test for implementing the vectorization Only this test seems to fail in `test_coding_times.py` : https://github.com/pydata/xarray/blob/f895dc1a748b41d727c5e330e8d664a8b8780800/xarray/tests/test_coding_times.py#L1061-L1071 I don't really understand why though if you have an idea","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8324/reactions"", ""total_count"": 2, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 2, ""eyes"": 0}",,,13221727,pull 1947508727,PR_kwDOAMm_X85dBaso,8322,Implementation of rust based cftime ,57914115,open,0,,,1,2023-10-17T14:00:45Z,2023-10-17T22:20:31Z,,CONTRIBUTOR,,0,pydata/xarray/pulls/8322,"As discussed in #8302, here is a first attempt to implement `cftime_rs`. There are a lot of tests and I struggle to understand all the processing in `coding/times.py`. However, with this first attempt I've been able to make the `test_cf_datetime` work (ignoring one test) https://github.com/pydata/xarray/blob/8423f2c47306cc3a4a52990818964f278179491f/xarray/tests/test_coding_times.py#L127-L131 Also there are some key differences betwwen `cftime` and `cftime-rs` : - A long int is used to represent the timestamp internally, so `cftime-rs` will not overflow as soon as `numpy`, `python `or `cftime`. It can go from -291,672,107,014 BC to 291,672,107,014 AD approximately and this depends on calendar. - There is no `only_use_python_datetimes` argument. Instead there are 4 distinct functions : - [date2num()](https://cftime-rs.readthedocs.io/en/latest/api_documentation/index.html#cftime_rs.date2num) - [num2date()](https://cftime-rs.readthedocs.io/en/latest/api_documentation/index.html#cftime_rs.num2date) - [num2pydate()](https://cftime-rs.readthedocs.io/en/latest/api_documentation/index.html#cftime_rs.num2pydate) - [pydate2num()](https://cftime-rs.readthedocs.io/en/latest/api_documentation/index.html#cftime_rs.pydate2num) - These functions only take a python list of one dimension and return a list of one dimension. A conversion should be done before. - There is no multiple datetime type (there are hidden) but instead a single object `PyCFDatetime` - There is no conda repository at the moment Finally, and regardless of this PR, I guess there could be a speed improvement by vectorizing operations by replacing this : https://github.com/pydata/xarray/blob/df0ddaf2e68a6b033b4e39990d7006dc346fcc8c/xarray/coding/times.py#L622-L649 by something like this : https://github.com/pydata/xarray/blob/8423f2c47306cc3a4a52990818964f278179491f/xarray/coding/times.py#L631-L670 We can use numpy instead of list comprehensions. It takes a bit more of memory though. ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8322/reactions"", ""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 1, ""eyes"": 0}",,,13221727,pull