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 512253428,MDExOlB1bGxSZXF1ZXN0MzMyMzAxNjM1,3446,__dask_tokenize__,2448579,closed,0,,,2,2019-10-25T01:18:50Z,2019-10-31T16:53:28Z,2019-10-31T15:52:12Z,MEMBER,,0,pydata/xarray/pulls/3446," - [x] Closes #3378 - [x] Tests added - [x] Passes `black . && mypy . && flake8` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API @crusaderky here's your testing checklist. I wasn't entirely sure what you meant by the last two but I took a stab at it. feel free to push to this branch so that we can finish quickly - [X] running tokenize() twice on the same object returns the same result - [X] changing the content of a data_var (or the variable, for DataArray) changes the output - [X] changing the content of a coord changes the output - [X] changing attrs, name, or dimension names change the output - [X] whether a variable is a data_var or a coord changes the output - [X] dask arrays aren't computed - [X] non-numpy, non-dask NEP18 data is not converted to numpy - [X] works with xarray's fancy wrappers around NetCDF and the like ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3446/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 503578688,MDU6SXNzdWU1MDM1Nzg2ODg=,3378,implement normalize_token,2448579,closed,0,,,2,2019-10-07T17:07:29Z,2019-10-31T15:52:12Z,2019-10-31T15:52:12Z,MEMBER,,,,See https://github.com/pydata/xarray/pull/3276#discussion_r332113438,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3378/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue