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/pull/4597#issuecomment-733575449,https://api.github.com/repos/pydata/xarray/issues/4597,733575449,MDEyOklzc3VlQ29tbWVudDczMzU3NTQ0OQ==,12237157,2020-11-25T09:16:49Z,2020-11-25T09:16:49Z,CONTRIBUTOR,Thanks for the smooth review process @spencerkclark @keewis ,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,748094631 https://github.com/pydata/xarray/pull/4597#issuecomment-733254440,https://api.github.com/repos/pydata/xarray/issues/4597,733254440,MDEyOklzc3VlQ29tbWVudDczMzI1NDQ0MA==,2448579,2020-11-24T21:53:12Z,2020-11-24T21:53:12Z,MEMBER,LGTM too. Thanks @aaronspring ,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,748094631 https://github.com/pydata/xarray/pull/4597#issuecomment-731630554,https://api.github.com/repos/pydata/xarray/issues/4597,731630554,MDEyOklzc3VlQ29tbWVudDczMTYzMDU1NA==,24736507,2020-11-21T20:12:41Z,2020-11-23T16:02:32Z,NONE,"Hello @aaronspring! Thanks for updating this PR. We checked the lines you've touched for [PEPĀ 8](https://www.python.org/dev/peps/pep-0008) issues, and found: There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers: ##### Comment last updated at 2020-11-23 16:02:32 UTC","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,748094631 https://github.com/pydata/xarray/pull/4597#issuecomment-731725142,https://api.github.com/repos/pydata/xarray/issues/4597,731725142,MDEyOklzc3VlQ29tbWVudDczMTcyNTE0Mg==,12237157,2020-11-22T10:11:53Z,2020-11-22T10:11:53Z,CONTRIBUTOR,"Ah I need to account for the docstring examples with only one or two items, maybe dropping freq then","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,748094631 https://github.com/pydata/xarray/pull/4597#issuecomment-731646114,https://api.github.com/repos/pydata/xarray/issues/4597,731646114,MDEyOklzc3VlQ29tbWVudDczMTY0NjExNA==,6628425,2020-11-21T22:27:34Z,2020-11-21T22:46:08Z,MEMBER,"Thanks @keewis I didn't realize this was also happening in CI. Yeah, the version is definitely the problem: ``` cftime 1.0.4.2 py36hc1659b7_0 conda-forge ``` My vote for now would be to skip these tests on versions less than 1.1.0. Perhaps we could also think about adding a nicer error message if the version is not up-to-date enough. ~~I guess our test coverage of `infer_freq` wasn't good enough to trip this up already.~~ Oops we already have a precedent of skipping the `infer_freq` tests that require this, e.g.: https://github.com/pydata/xarray/blob/a2192158e3fbb94b2d972ff3e1693fffa65e50be/xarray/tests/test_cftimeindex.py#L1180-L1192 ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,748094631 https://github.com/pydata/xarray/pull/4597#issuecomment-731645464,https://api.github.com/repos/pydata/xarray/issues/4597,731645464,MDEyOklzc3VlQ29tbWVudDczMTY0NTQ2NA==,14808389,2020-11-21T22:22:27Z,2020-11-21T22:24:04Z,MEMBER,"@spencerclark, see the [build logs of the `py36-min-all-deps` CI](https://dev.azure.com/xarray/xarray/_build/results?buildId=4263&view=logs&jobId=ba13898e-1dfb-5ace-9966-8b7af3677790&j=78b48a04-306f-5a15-9ac3-dd2fdb28db5e&t=feaf9696-a084-5b4b-a3e1-cb6a97ea3c30), we can't use version `1.1.0` unless we bump the version of `cftime`","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,748094631 https://github.com/pydata/xarray/pull/4597#issuecomment-731645114,https://api.github.com/repos/pydata/xarray/issues/4597,731645114,MDEyOklzc3VlQ29tbWVudDczMTY0NTExNA==,6628425,2020-11-21T22:19:12Z,2020-11-21T22:19:12Z,MEMBER,"`freq` would be consistent with pandas: ``` In [1]: import pandas as pd In [2]: pd.date_range(""2000"", periods=3) Out[2]: DatetimeIndex(['2000-01-01', '2000-01-02', '2000-01-03'], dtype='datetime64[ns]', freq='D') ``` @aaronspring regarding the local test failure -- which version of `cftime` are you using in your environment? The `daysinmonth` attribute did not always exist; it was added in version 1.1.0. ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,748094631 https://github.com/pydata/xarray/pull/4597#issuecomment-731643958,https://api.github.com/repos/pydata/xarray/issues/4597,731643958,MDEyOklzc3VlQ29tbWVudDczMTY0Mzk1OA==,14808389,2020-11-21T22:09:15Z,2020-11-21T22:09:15Z,MEMBER,"the parameter is named `freq` so I think it should be fine to use that, but I don't have a strong opinion on this","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,748094631 https://github.com/pydata/xarray/pull/4597#issuecomment-731643425,https://api.github.com/repos/pydata/xarray/issues/4597,731643425,MDEyOklzc3VlQ29tbWVudDczMTY0MzQyNQ==,12237157,2020-11-21T22:04:11Z,2020-11-21T22:04:11Z,CONTRIBUTOR,also should it be frequency or freq?,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,748094631 https://github.com/pydata/xarray/pull/4597#issuecomment-731638970,https://api.github.com/repos/pydata/xarray/issues/4597,731638970,MDEyOklzc3VlQ29tbWVudDczMTYzODk3MA==,14808389,2020-11-21T21:25:30Z,2020-11-21T21:28:45Z,MEMBER,"> somehow in some envs `xarray` (but not in others) Actually, there's no inconsistency here: `py38-flaky` fails, but it is allowed to fail so we still get a green check mark (#4584 slightly changes that). `py36-min-nep18` does not install `cftime` so it doesn't fail, either. `Doctests` fails because it creates and prints `CFTimeIndex` objects with 1 or 2 values (and I think there's also a test that does something similar). To fix the CI, you might need to fix both the `daysinmonth` and allow `CFTimeIndex` objects with less than 3 values.","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,748094631 https://github.com/pydata/xarray/pull/4597#issuecomment-731637045,https://api.github.com/repos/pydata/xarray/issues/4597,731637045,MDEyOklzc3VlQ29tbWVudDczMTYzNzA0NQ==,12237157,2020-11-21T21:10:44Z,2020-11-21T21:10:44Z,CONTRIBUTOR,"I also get this error locally. somehow in some envs `xarray` (but not in others) tries to use `daysinmonth`. I also know about `days_in_month`, but just changing that in `frequencies.py` https://github.com/pydata/xarray/blob/d9ebcafaddf0bb80052d30f43ca5ea18a5c7229f/xarray/coding/frequencies.py#L261 didnt help it. ``` ____________________________________________________________________________ test_cftimeindex_freq_in_repr[MS-noleap] _____________________________________________________________________________ freq = 'MS', calendar = 'noleap' @requires_cftime @pytest.mark.parametrize(""calendar"", [""noleap"", ""360_day""]) @pytest.mark.parametrize(""freq"", [""1D"", ""MS""]) def test_cftimeindex_freq_in_repr(freq,calendar): index = xr.cftime_range(start=""2000"", periods=3, freq=freq, calendar=calendar) > assert f', freq={freq}' in index.__repr__() /Users/aaron.spring/Coding/xarray/xarray/tests/test_cftimeindex.py:952: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /Users/aaron.spring/Coding/xarray/xarray/coding/cftimeindex.py:342: in __repr__ attrs_str = format_attrs(self) /Users/aaron.spring/Coding/xarray/xarray/coding/cftimeindex.py:263: in format_attrs ""freq"": f""'{index.freq}'"" /Users/aaron.spring/Coding/xarray/xarray/coding/cftimeindex.py:691: in freq return infer_freq(self) /Users/aaron.spring/Coding/xarray/xarray/coding/frequencies.py:97: in infer_freq return inferer.get_freq() /Users/aaron.spring/Coding/xarray/xarray/coding/frequencies.py:132: in get_freq return self._infer_daily_rule() /Users/aaron.spring/Coding/xarray/xarray/coding/frequencies.py:165: in _infer_daily_rule monthly_rule = self._get_monthly_rule() /Users/aaron.spring/Coding/xarray/xarray/coding/frequencies.py:199: in _get_monthly_rule return {""cs"": ""MS"", ""ce"": ""M""}.get(month_anchor_check(self.index)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ dates = <[AttributeError(""'cftime._cftime.DatetimeNoLeap' object has no attribute 'daysinmonth'"",) raised in repr()] CFTimeIndex object at 0x7fca9312b160> def month_anchor_check(dates): """"""Return the monthly offset string. Return ""cs"" if all dates are the first days of the month, ""ce"" if all dates are the last day of the month, None otherwise. Replicated pandas._libs.tslibs.resolution.month_position_check but without business offset handling. """""" calendar_end = True calendar_start = True for date in dates: if calendar_start: calendar_start &= date.day == 1 if calendar_end: > cal = date.day == date.daysinmonth E AttributeError: 'cftime._cftime.DatetimeNoLeap' object has no attribute 'daysinmonth' /Users/aaron.spring/Coding/xarray/xarray/coding/frequencies.py:261: AttributeError ____________________________________________________________________________ test_cftimeindex_freq_in_repr[MS-360_day] ____________________________________________________________________________ freq = 'MS', calendar = '360_day' @requires_cftime @pytest.mark.parametrize(""calendar"", [""noleap"", ""360_day""]) @pytest.mark.parametrize(""freq"", [""1D"", ""MS""]) def test_cftimeindex_freq_in_repr(freq,calendar): index = xr.cftime_range(start=""2000"", periods=3, freq=freq, calendar=calendar) > assert f', freq={freq}' in index.__repr__() /Users/aaron.spring/Coding/xarray/xarray/tests/test_cftimeindex.py:952: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /Users/aaron.spring/Coding/xarray/xarray/coding/cftimeindex.py:342: in __repr__ attrs_str = format_attrs(self) /Users/aaron.spring/Coding/xarray/xarray/coding/cftimeindex.py:263: in format_attrs ""freq"": f""'{index.freq}'"" /Users/aaron.spring/Coding/xarray/xarray/coding/cftimeindex.py:691: in freq return infer_freq(self) /Users/aaron.spring/Coding/xarray/xarray/coding/frequencies.py:97: in infer_freq return inferer.get_freq() /Users/aaron.spring/Coding/xarray/xarray/coding/frequencies.py:132: in get_freq return self._infer_daily_rule() /Users/aaron.spring/Coding/xarray/xarray/coding/frequencies.py:165: in _infer_daily_rule monthly_rule = self._get_monthly_rule() /Users/aaron.spring/Coding/xarray/xarray/coding/frequencies.py:199: in _get_monthly_rule return {""cs"": ""MS"", ""ce"": ""M""}.get(month_anchor_check(self.index)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ dates = <[AttributeError(""'cftime._cftime.Datetime360Day' object has no attribute 'daysinmonth'"",) raised in repr()] CFTimeIndex object at 0x7fca930cfe10> def month_anchor_check(dates): """"""Return the monthly offset string. Return ""cs"" if all dates are the first days of the month, ""ce"" if all dates are the last day of the month, None otherwise. Replicated pandas._libs.tslibs.resolution.month_position_check but without business offset handling. """""" calendar_end = True calendar_start = True for date in dates: if calendar_start: calendar_start &= date.day == 1 if calendar_end: > cal = date.day == date.daysinmonth E AttributeError: 'cftime._cftime.Datetime360Day' object has no attribute 'daysinmonth' /Users/aaron.spring/Coding/xarray/xarray/coding/frequencies.py:261: AttributeError ===================================================================================== short test summary info ===================================================================================== FAILED xarray/tests/test_cftimeindex.py::test_cftimeindex_freq_in_repr[1D-noleap] - AttributeError: 'cftime._cftime.DatetimeNoLeap' object has no attribute 'daysinmonth' FAILED xarray/tests/test_cftimeindex.py::test_cftimeindex_freq_in_repr[1D-360_day] - AttributeError: 'cftime._cftime.Datetime360Day' object has no attribute 'daysinmonth' FAILED xarray/tests/test_cftimeindex.py::test_cftimeindex_freq_in_repr[MS-noleap] - AttributeError: 'cftime._cftime.DatetimeNoLeap' object has no attribute 'daysinmonth' FAILED xarray/tests/test_cftimeindex.py::test_cftimeindex_freq_in_repr[MS-360_day] - AttributeError: 'cftime._cftime.Datetime360Day' object has no attribute 'daysinmonth' ======================================================================================== 4 failed in 2.58s =========================================================================== ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,748094631