html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue
https://github.com/pydata/xarray/issues/2127#issuecomment-388907899,https://api.github.com/repos/pydata/xarray/issues/2127,388907899,MDEyOklzc3VlQ29tbWVudDM4ODkwNzg5OQ==,6628425,2018-05-14T17:59:56Z,2018-05-14T17:59:56Z,MEMBER,"Awesome, thanks for tracking that down in NumPy so quickly! I updated #2128 accordingly.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,322591813
https://github.com/pydata/xarray/issues/2127#issuecomment-388847354,https://api.github.com/repos/pydata/xarray/issues/2127,388847354,MDEyOklzc3VlQ29tbWVudDM4ODg0NzM1NA==,6628425,2018-05-14T14:56:46Z,2018-05-14T14:56:46Z,MEMBER,"Huh...my test is still triggering some failures due to this issue in #2128. Oddly on my laptop the original bug doesn't appear to exist if I use python version 3.6.5 and numpy version 1.14.3 (the versions on Travis where I'm getting a failure):
```
$ python
Python 3.6.5 | packaged by conda-forge | (default, Apr 6 2018, 13:44:09)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type ""help"", ""copyright"", ""credits"" or ""license"" for more information.
>>> import numpy as np
>>> np.__version__
'1.14.3'
>>> import datetime
>>> np.array([datetime.timedelta(7)], dtype='timedelta64[D]')
array([7], dtype='timedelta64[D]')
```
and not surprisingly the test passes:
```
$ pytest -vv test_coding_times.py -k test_infer_cftime_datetime_units
========================================================= test session starts ==========================================================
platform darwin -- Python 3.6.5, pytest-3.5.1, py-1.5.3, pluggy-0.6.0 -- //anaconda/envs/xarray-docs/bin/python
cachedir: ../../.pytest_cache
rootdir: /Users/spencerclark/xarray-dev/xarray, inifile: setup.cfg
collected 269 items / 268 deselected
test_coding_times.py::test_infer_cftime_datetime_units PASSED [100%]
```
So it appears to be platform dependent. Trying this out on a linux machine with these versions I can reproduce the issue (which seems to persist even for individual timedeltas, explaining the test failure):
```
$ python
Python 3.6.5 | packaged by conda-forge | (default, Apr 6 2018, 13:39:56)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)] on linux
Type ""help"", ""copyright"", ""credits"" or ""license"" for more information.
>>> import numpy as np
>>> np.__version__
'1.14.3'
>>> import datetime
>>> np.array([datetime.timedelta(7)], dtype='timedelta64[D]')
Traceback (most recent call last):
File """", line 1, in
TypeError: Cannot cast datetime.timedelta object from metadata [Y] to [D] according to the rule 'same_kind'
>>> np.timedelta64(datetime.timedelta(7), 'D')
Traceback (most recent call last):
File """", line 1, in
TypeError: Cannot cast datetime.timedelta object from metadata [Y] to [D] according to the rule 'same_kind'
>>> np.timedelta64(datetime.timedelta(1), 'D')
numpy.timedelta64(1,'D')
```
It's not ideal, but should we try to go with pandas to do the type conversion? It seems to work on the linux platform:
```
>>> import pandas as pd
>>> pd.to_timedelta([datetime.timedelta(7)])
TimedeltaIndex(['7 days'], dtype='timedelta64[ns]', freq=None)
>>> pd.to_timedelta([datetime.timedelta(7)]).values
array([604800000000000], dtype='timedelta64[ns]')
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,322591813
https://github.com/pydata/xarray/issues/2127#issuecomment-388817354,https://api.github.com/repos/pydata/xarray/issues/2127,388817354,MDEyOklzc3VlQ29tbWVudDM4ODgxNzM1NA==,6628425,2018-05-14T13:31:56Z,2018-05-14T13:31:56Z,MEMBER,"> Any multiple of 7 days (one week) seems to trigger it
Interesting, thanks for investigating things further and confirming that it likely is a NumPy bug. I put up a fix following your suggestion in #2128 and also included a test.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,322591813
https://github.com/pydata/xarray/issues/2127#issuecomment-388662640,https://api.github.com/repos/pydata/xarray/issues/2127,388662640,MDEyOklzc3VlQ29tbWVudDM4ODY2MjY0MA==,6628425,2018-05-13T23:07:15Z,2018-05-13T23:07:15Z,MEMBER,"It's confusing to me, because I don't see where NumPy is getting years or months metadata from the `datetime.timedelta` objects formed by `np.diff(dates)`:
```
In [12]: np.diff(dates)
Out[12]:
array([datetime.timedelta(31), datetime.timedelta(28),
datetime.timedelta(31), datetime.timedelta(30),
datetime.timedelta(31), datetime.timedelta(30),
datetime.timedelta(31), datetime.timedelta(31),
datetime.timedelta(30), datetime.timedelta(31),
datetime.timedelta(30), datetime.timedelta(31),
datetime.timedelta(31), datetime.timedelta(28),
datetime.timedelta(31), datetime.timedelta(30),
datetime.timedelta(31), datetime.timedelta(30),
datetime.timedelta(31), datetime.timedelta(31),
datetime.timedelta(30), datetime.timedelta(31),
datetime.timedelta(30)], dtype=object)
```
Unlike `np.timedelta64` objects, `datetime.timedelta` objects cannot be composed of units which have a varying length depending on the year [(the coarsest internal resolution is days)](https://docs.python.org/2/library/datetime.html#datetime.timedelta). The problem seems to occur only after calling `np.unique`; maybe the solution is to do the type conversion before calling `np.unique`?
```
In [19]: np.unique(np.diff(dates).astype('timedelta64[ns]'))
Out[19]: array([2419200000000000, 2592000000000000, 2678400000000000], dtype='timedelta64[ns]')
``` ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,322591813
https://github.com/pydata/xarray/issues/2127#issuecomment-388661408,https://api.github.com/repos/pydata/xarray/issues/2127,388661408,MDEyOklzc3VlQ29tbWVudDM4ODY2MTQwOA==,6628425,2018-05-13T22:42:57Z,2018-05-13T22:42:57Z,MEMBER,"With the specified `dates` in line 5 of my example, one can reproduce the error (see line 9 in the problem description). Line 10 shows that casting the result of `np.unique(np.diff(dates))` as an array seems to make this type conversion work.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,322591813