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
523893854,MDExOlB1bGxSZXF1ZXN0MzQxNzkwMzY2,3544,Open dataset cf options conflict solving,5948670,open,0,,,0,2019-11-16T20:43:39Z,2022-06-09T14:50:17Z,,CONTRIBUTOR,,0,pydata/xarray/pulls/3544,"It took some time*, but here is a suggestion to solve option conflicts in xarray.open_dataset().

If any of the options `mask_and_scale`, `decode_times`, `concat_characters`, or `decode_coords` is manually set and contradicts the manually set choice of `decode_cf` a `ValueError` will be raised.
This commit requires to change some option default values of open_dataset() parameters from `True` to `None`. I hope this is acceptable. 

 - [x] Closes #3020 
 - [x] Tests added
 - [x] Passes `black . && flake8` (`mypy`passes in principle, but backends/api.py:21 has an unrelated error)
 - [x] Fully documented, 
 - [ ] including `whats-new.rst` for all changes and `api.rst` for new API

What do you think? Do I have to add something to `whats-new.rst` and `api.rst`?

PS: (*) This is my first PR of this kind and I wanted to build it in a proper testing environment, but I had to set this up first.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3544/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
351846466,MDU6SXNzdWUzNTE4NDY0NjY=,2374,Suggestion: Add option for default_fillvals to open_dataset,5948670,open,0,,,2,2018-08-18T19:47:53Z,2021-07-17T19:59:43Z,,CONTRIBUTOR,,,,"Hi,

May I suggest having a default_fillvals option to xarray.open_dataset (and xarray.open_dataarray)?

My problem:

I have netcdf data containing flagged data, that is flagged with the netcdf default fill value of 9.96...e+36. But xarray (0.10.8) only masks arrays that have an explicit fill_value set:

```python
import netCDF4, xarray, numpy

nc = netCDF4.Dataset('test.nc', 'w', format='NETCDF4')
nc.createDimension('x', 3)

var1 = nc.createVariable('var1', 'f8', ('x',))
var2 = nc.createVariable('var2', 'f8', ('x',), fill_value=netCDF4.default_fillvals['f8'])

var1[:] = numpy.array([0., 1., netCDF4.default_fillvals['f8']])
var2[:] = numpy.array([0., 1., netCDF4.default_fillvals['f8']])
print('netCDF4 var1', nc.variables['var1'][:])
print('netCDF4 var2', nc.variables['var2'][:])
nc.close()

ds = xarray.open_dataset('test.nc')
print('xarray var1', ds.var1[:])
print('xarray var2', ds.var2[:])
```

The problem is, that ds.var1 and ds.var2 are interpreted differently, although netCDF4 shows both as masked:
```
netCDF4 var1 [0.0 1.0 --]
netCDF4 var2 [0.0 1.0 --]
xarray var1 <xarray.DataArray 'var1' (x: 3)>
array([0.00000e+00, 1.00000e+00, 9.96921e+36])
Dimensions without coordinates: x
xarray var2 <xarray.DataArray 'var2' (x: 3)>
array([ 0.,  1., nan])
Dimensions without coordinates: x
```

I agree, that it is a good default, to mask data, only if the fill_value attribute is set. But I think it would be useful to be able to pass default_fill values to open_dataset to enable reading data, that uses the implicit default values.

What do you think?","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/2374/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue
554785150,MDU6SXNzdWU1NTQ3ODUxNTA=,3722,How to plot boolean vector with current xarray,5948670,closed,0,,,3,2020-01-24T15:00:44Z,2020-04-03T23:19:23Z,2020-04-03T23:19:23Z,CONTRIBUTOR,,,,"Dear all,

I'm trying to plot a vector with bool data. It used to work with xarray version 0.10.7 in an old setup, but it isn't working anymore. Am I doing something wrong or is there something new to consider? 

I'm not hundred percent sure, if this problem is due to changes in xarray, numpy or something else

#### Code example
```python
import xarray
xarray.DataArray([True, False]).plot()
```

#### Expected Output
A plot with a line from 1 to 0.


#### Problem Description
However, I get this error:
```
TypeError                                 Traceback (most recent call last)
<ipython-input-22-d911786d1072> in <module>
----> 1 xarray.DataArray([True, False]).plot()

~/python_venvs/python3/py3_18.04/lib/python3.6/site-packages/xarray/plot/plot.py in __call__(self, **kwargs)
    463 
    464     def __call__(self, **kwargs):
--> 465         return plot(self._da, **kwargs)
    466 
    467     @functools.wraps(hist)

~/python_venvs/python3/py3_18.04/lib/python3.6/site-packages/xarray/plot/plot.py in plot(darray, row, col, col_wrap, ax, hue, rtol, subplot_kws, **kwargs)
    200     kwargs[""ax""] = ax
    201 
--> 202     return plotfunc(darray, **kwargs)
    203 
    204 

~/python_venvs/python3/py3_18.04/lib/python3.6/site-packages/xarray/plot/plot.py in line(darray, row, col, figsize, aspect, size, ax, hue, x, y, xincrease, yincrease, xscale, yscale, xticks, yticks, xlim, ylim, add_legend, _labels, *args, **kwargs)
    321         yplt_val = yplt.values
    322 
--> 323     _ensure_plottable(xplt_val, yplt_val)
    324 
    325     primitive = ax.plot(xplt_val, yplt_val, *args, **kwargs)

~/python_venvs/python3/py3_18.04/lib/python3.6/site-packages/xarray/plot/utils.py in _ensure_plottable(*args)
    510         ):
    511             raise TypeError(
--> 512                 ""Plotting requires coordinates to be numeric ""
    513                 ""or dates of type np.datetime64, ""
    514                 ""datetime.datetime, cftime.datetime or ""

TypeError: Plotting requires coordinates to be numeric or dates of type np.datetime64, datetime.datetime, cftime.datetime or pd.Interval.
```


#### Output of ``xr.show_versions()`` in the setup that is not working
<details>
INSTALLED VERSIONS
------------------
commit: None
python: 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0]
python-bits: 64
OS: Linux
OS-release: 4.15.0-74-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8
libhdf5: 1.10.2
libnetcdf: 4.4.1.1

xarray: 0.14.1
pandas: 0.25.3
numpy: 1.18.1
scipy: 1.2.0
netCDF4: 1.4.2
pydap: None
h5netcdf: None
h5py: None
Nio: None
zarr: None
cftime: 1.0.3.4
nc_time_axis: None
PseudoNetCDF: None
rasterio: None
cfgrib: None
iris: None
bottleneck: None
dask: 2.9.2
distributed: None
matplotlib: 3.1.2
cartopy: 0.17.0
seaborn: 0.9.0
numbagg: None
setuptools: 40.6.3
pip: 20.0.1
conda: None
pytest: None
IPython: 7.2.0
sphinx: None
</details>

#### Output of ``xr.show_versions()`` in the setup that was working
<details>
INSTALLED VERSIONS
------------------
commit: None
python: 3.5.2.final.0
python-bits: 64
OS: Linux
OS-release: 4.4.0-169-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8

xarray: 0.10.7
pandas: 0.22.0
numpy: 1.14.2
scipy: 1.0.0
netCDF4: 1.3.1
h5netcdf: None
h5py: 2.6.0
Nio: None
zarr: None
bottleneck: None
cyordereddict: None
dask: 1.1.3
distributed: None
matplotlib: 2.2.0
cartopy: 0.16.0
seaborn: 0.8.1
setuptools: 26.1.1
pip: 19.3.1
conda: None
pytest: None
IPython: 6.2.1
</details>
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3722/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
564033048,MDExOlB1bGxSZXF1ZXN0Mzc0MzM1Mzc0,3766,Allow plotting bool data,5948670,closed,0,,,0,2020-02-12T14:22:11Z,2020-04-03T23:19:23Z,2020-04-03T23:19:23Z,CONTRIBUTOR,,0,pydata/xarray/pulls/3766,"as @dcherian said:

> matplotlib can plot `bool` values so we should add that to the check in `_ensure_plottable`.

<!-- Feel free to remove check-list items aren't relevant to your change -->

 - [x] Closes #3722 

","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3766/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
455605431,MDU6SXNzdWU0NTU2MDU0MzE=,3020,Can we clarify decode_cf option of open_dataset?,5948670,open,0,,,2,2019-06-13T08:32:12Z,2019-11-16T20:45:19Z,,CONTRIBUTOR,,,,"Dea all,

I encountered a small unforeseen bug using the decode_cf of open_dataset. By only reading the doc string, I was not aware of the complete meaning of this parameter. Especially, that it overwrites other options.

Example:
`ds = xarray.open_dataset(file_name, mask_and_scale=True, decode_cf=False)`

The result is an unmasked and not sclaed dataset. decode_cf simply overwrites other options. See the code: https://github.com/pydata/xarray/blob/stable/xarray/backends/api.py#L308-L312

A simple solution would be to explain, that decode_cf sets mask_and_scale, decode_times, concat_characters, and decode_coords to False. But probably it would be more convenient to detect option conflicts like in my example and raise a ValueError.

What do you think? Do you prefer any of these options? I could write the little PR.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3020/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue