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 536639533,MDExOlB1bGxSZXF1ZXN0MzUyMTM2MTEx,3611,Pint support for top-level functions,14808389,closed,0,,,7,2019-12-11T22:04:13Z,2020-03-09T11:35:27Z,2020-03-09T07:40:46Z,MEMBER,,0,pydata/xarray/pulls/3611,"This PR tries to get the pint integration tests (see #3594) to pass. To make sure this does not become a giant PR, it is limited to the top-level functions and the work on the tests for `DataArray` and `Dataset` will be done in other PRs. I added pint master to the `upstream-dev` CI since that way CI finally helps finding bugs. Should I have edited `py36-min-nep18` instead? - [x] Passes `black . && mypy . && flake8` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Also, I finally ran into a situation where I have to use `assert_allclose` instead of `assert_equal_with_units`. However, `assert_allclose` does not check for identical units, I think? Would it make sense to copy the code of `assert_allclose` and add the strict unit checking or would it be better to just use `assert_allclose` and something like `assert extract_units(expected) == extract_units(actual)`? Failing tests list from #3594: - `align`: ~needs more investigation~ ~partially blocked by `where`, `IndexVariable` and a bug in `assert_equal_with_units` and / or the tests, also a behaviour decision on align~ works (but units in `IndexVariable` still fail) - `combine_by_coords`: ~needs more investigation~ ~partially blocked by `IndexVariable` and a test bug (due to #3483)~ works (but units in `IndexVariable` still fail) - `combine_nested`: ~needs more investigation~ ~blocked by `reindex`~ works (but units in `IndexVariable` still fail) - `concat`: ~needs more investigation~ works (but units in `IndexVariable` still fail) - `merge`: ~needs more investigation~ works (but units in `IndexVariable` still fail) - `full_like`: ~`pint` currently does not implement `copyto`~ blocked by hgrecco/pint#882 - `where`: ~needs more investigation~ ~unit is stripped because `pint` does not implement `astype` and test bug in `test_where_dataset`~ works - `dot`: ~`pint` currently does not implement `einsum`~ works","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3611/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull