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/4821#issuecomment-860244940,https://api.github.com/repos/pydata/xarray/issues/4821,860244940,MDEyOklzc3VlQ29tbWVudDg2MDI0NDk0MA==,5635139,2021-06-13T17:28:13Z,2021-06-13T17:28:13Z,MEMBER,"Yes, we want to replace that test with your test — either in the same test function or a new test function. Though it maybe it should still be a `KeyError`, I think probably it should be. But feel free to submit the PR and it's easiest to review there. Thanks!","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,787847449 https://github.com/pydata/xarray/issues/4821#issuecomment-859690070,https://api.github.com/repos/pydata/xarray/issues/4821,859690070,MDEyOklzc3VlQ29tbWVudDg1OTY5MDA3MA==,5635139,2021-06-11T16:14:15Z,2021-06-11T16:14:15Z,MEMBER,"> If you allow explicitly tuple, doesn't it mean I need to edit this part Yes! > (I find it a little bit weird to give dimensions in list, no ? I thought that generally tuples were more adapted to provide dims) Yes, I feel similarly. For one `xr.Dataset(dict(var=(('a','b'), np.random.rand(3))))` is an error, rather than a one-dimensioned dataset with a single dim called `('a','b')`. But OTOH I can very much empathize with accepting any Hashable for dim names most functions, which includes tuples. So I am fine formalizing this (apart from the constructor). > Can you tell me which test-case I can implement to fulfill all the requirements needed ? I can't think of test cases that I can implement except the one suggested first, and that one passes with the first modification How about a test that checks the example above suggests a list, rather than raising a vanilla `KeyError`? Cheers @thomashirtz ","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,787847449 https://github.com/pydata/xarray/issues/4821#issuecomment-855287336,https://api.github.com/repos/pydata/xarray/issues/4821,855287336,MDEyOklzc3VlQ29tbWVudDg1NTI4NzMzNg==,5635139,2021-06-05T19:49:24Z,2021-06-05T19:51:19Z,MEMBER,"Great, agree @dcherian . So maybe we: - Check whether the dim exists (there could be a dim with tuple), which is already done in 1371 below - If it doesn't exist, then check whether it's a string before passing it to `_get_virtual_variable` below. If it's a tuple, that message can suggest passing it as a list. - Or we do the check _in_ `_get_virtual_variable`? ```python 1366 def _construct_dataarray(self, name: Hashable) -> ""DataArray"": 1367 """"""Construct a DataArray by indexing this dataset"""""" 1368 from .dataarray import DataArray 1369 1370 try: 1371 variable = self._variables[name] 1372 except KeyError: -> 1373 _, name, variable = _get_virtual_variable( 1374 self._variables, name, self._level_coords, self.dims 1375 ) ``` @thomashirtz changing the labels back! Thanks in advance!","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,787847449 https://github.com/pydata/xarray/issues/4821#issuecomment-855276547,https://api.github.com/repos/pydata/xarray/issues/4821,855276547,MDEyOklzc3VlQ29tbWVudDg1NTI3NjU0Nw==,5635139,2021-06-05T18:16:38Z,2021-06-05T18:16:38Z,MEMBER,"Any thoughts from others on what we should do, of the three options above? CC @pydata/xarray ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,787847449 https://github.com/pydata/xarray/issues/4821#issuecomment-766166088,https://api.github.com/repos/pydata/xarray/issues/4821,766166088,MDEyOklzc3VlQ29tbWVudDc2NjE2NjA4OA==,5635139,2021-01-23T19:26:54Z,2021-01-23T19:26:54Z,MEMBER,"I would propose we either: - Explicitly allow tuples as dimension and variable names. This is probably the most mypy-compatible, since we use `Hashable` in lots of places - Force dimension names to be strings, but allow variable names to be `Hashable`. This might be the most practical. - Disallow tuples for dimension names, but otherwise allow `Hashable`. Then tuples work the same as lists when supplied as arguments.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,787847449