sha,message,author_date,committer_date,raw_author,raw_committer,repo,author,committer dc2dd89b999b16e08ba51e9cf623896b01be7297,"Change isinstance checks to duck Dask Array checks #4208 (#4221) * Change isinstance checks to duck Dask Array checks #4208 * Use is_dask_collection in is_duck_dask_array * Use is_dask_collection in is_duck_dask_array * Revert to isinstance checks according to review discussion * Move is_duck_dask_array to pycompat.py and use tokenize for comparisons * isort * Implement `is_duck_array` to replace `is_array_like` * Rename `is_array_like` to `is_duck_array` * `is_duck_array` checks for `__array_function__` and `__array_ufunc__` in addition to previous checks * Replace checks for `is_duck_dask_array` and `__array_function__` with `is_duck_array` * Skip numpy duck array tests when NEP18 is not active * Use utils.is_duck_array in xarray/core/formatting.py * Replace locally defined `is_duck_array` in _diff_mapping_repr * Replace `""__array_function__""` and `is_duck_dask_array` check in `short_data_repr` * Revert back to isinstance check for iris cube * Add is_duck_array_or_ndarray function to utils * Use is_duck_array_or_ndarray for duck array checks without NEP18 * Remove is_duck_dask_array_or_ndarray, replace checks with is_duck_array * Add explicit check for NumPy array to is_duck_array * Replace is_duck_array_or_ndarray checks with is_duck_array * Remove is_duck_array check for deep copy Co-authored-by: keewis * Use is_duck_array check in load * Move duck dask array tokenize tests from test_units.py to test_dask.py * Use _importorskip to require pint >=0.15 instead of pytest.mark.skipif Co-authored-by: Deepak Cherian Co-authored-by: keewis ",2020-09-02T18:28:11Z,2020-09-02T18:28:11Z,6098058c2fcbf78e34308ad42051ac13d030dce0,cd792325681cbad9f663f2879d8b69f1edbb678f,13221727,19578931,19864447