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
52799752,MDExOlB1bGxSZXF1ZXN0MjY1NDY5NzQ=,301,Add attribute style access for variables and attributes,1217238,closed,0,,836999,0,2014-12-24T06:41:22Z,2014-12-24T07:07:25Z,2014-12-24T07:07:24Z,MEMBER,,0,pydata/xarray/pulls/301,"Fixes #286
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/301/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
52683871,MDExOlB1bGxSZXF1ZXN0MjY0Nzc5MjQ=,299,Update docs,1217238,closed,0,,836999,0,2014-12-22T20:09:54Z,2014-12-22T21:00:58Z,2014-12-22T21:00:56Z,MEMBER,,0,pydata/xarray/pulls/299,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/299/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
52627673,MDExOlB1bGxSZXF1ZXN0MjY0NDM0MTM=,297,Better decoding of netCDF times,1217238,closed,0,,836999,0,2014-12-22T08:03:02Z,2014-12-22T20:09:43Z,2014-12-22T20:09:41Z,MEMBER,,0,pydata/xarray/pulls/297,"This version avoids using the netCDF4 library unless strictly
necessary (e.g., for non-standard calendars).
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/297/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
52627885,MDExOlB1bGxSZXF1ZXN0MjY0NDM1MzY=,298,Fix DataArray.__init__ docstring,1217238,closed,0,,836999,0,2014-12-22T08:07:10Z,2014-12-22T08:25:15Z,2014-12-22T08:25:15Z,MEMBER,,0,pydata/xarray/pulls/298,"xref: #277
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/298/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
52548571,MDExOlB1bGxSZXF1ZXN0MjY0MTA4MDA=,296,BUG: fix string <-> char conversion for non-contiguous arrays,1217238,closed,0,,836999,0,2014-12-20T02:23:57Z,2014-12-20T02:44:03Z,2014-12-20T02:44:01Z,MEMBER,,0,pydata/xarray/pulls/296,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/296/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
33833155,MDU6SXNzdWUzMzgzMzE1NQ==,136,More consistent datetime conversion,1217238,closed,0,,836999,0,2014-05-19T20:16:32Z,2014-12-19T20:54:51Z,2014-12-19T05:27:50Z,MEMBER,,,,"Todo:
- [x] Decide on rules for datetime conversion
- [x] Implement them
- [ ] Document them

Currently:
- All `np.datetime64` arrays or objects are converted to ns precision
- We leave other datetime or datetime-like objects intact in numpy arrays of dtype=object.

Arguably, we should convert everything to `'datetime64[ns]'`, if possible. This is the approach we now take for decoding NetCDF time variables (#126).

Reference discussion: #134. From @akleeman:

> In #125 I went the route of forcing datetimes to be datetime64[ns]. This is probably part of a broader conversation, but doing so might save some future headaches. Of course ... it would also restrict us to nanosecond precision. Basically I feel like we should either force datetimes to be datetime64[ns] or make sure that operations on datetime objects preserve their type.
> 
> Probably worth getting this in and picking that conversation back up if needed. In which case could you add tests which make sure variables with datetime objects are still datetime objects after concatenation? If those start getting cast to datetime[ns] it'll start get confusing for users.
> 
> Also worth considering: how should datetime64[us] datetimes be handled? Currently they get cast to [ns] which, since datetimes do not, could get confusing.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/136/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
43442970,MDExOlB1bGxSZXF1ZXN0MjE1NjU3Mjg=,236,WIP: convert to/from cdms2 variables,1217238,closed,0,,836999,5,2014-09-22T08:48:52Z,2014-12-19T09:11:42Z,2014-12-19T09:11:39Z,MEMBER,,0,pydata/xarray/pulls/236,"Fixes #133

@DamienIrving am I missing anything obvious here?
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/236/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
52454780,MDExOlB1bGxSZXF1ZXN0MjYzNTUwMTQ=,295,Cleanup & bug fix,1217238,closed,0,,836999,0,2014-12-19T07:17:35Z,2014-12-19T07:21:33Z,2014-12-19T07:21:31Z,MEMBER,,0,pydata/xarray/pulls/295,"Fixes #279.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/295/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
49478188,MDU6SXNzdWU0OTQ3ODE4OA==,279,BUG: reindex method creates new dims/coords,4194485,closed,0,,836999,0,2014-11-20T01:29:21Z,2014-12-19T07:21:31Z,2014-12-19T07:21:31Z,NONE,,,,"If you reindex an xray dataset or dataarray with a coordinate with a different name, an extra dimension and coordinate is added to the xray object (with the name of the reindexing coordinate). Here's a simple example:

```
x1 = xray.DataArray(np.random.randn(5, 6, 7), dims=[""lon"", ""lat"", ""time""])
time2 = xray.DataArray([1, 3], dims=""time2"")
x2 = x1.reindex(time=time2)
```

x2 now has coordinates ""time"" and ""time2"".

I'm using xray version 0.3.1-4-gee1369f.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/279/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
52444993,MDExOlB1bGxSZXF1ZXN0MjYzNDk2NDA=,294,Coerce arrays of datetime.datetime objects into datetime64,1217238,closed,0,,836999,0,2014-12-19T03:39:35Z,2014-12-19T05:27:51Z,2014-12-19T05:27:50Z,MEMBER,,0,pydata/xarray/pulls/294,"Fixes #136

Also includes some speedups for Variable construction
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/294/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
51780993,MDExOlB1bGxSZXF1ZXN0MjU5NTgxNjg=,292,Allow for pd.TimedeltaIndex and serialize it to netCDF,1217238,closed,0,,836999,0,2014-12-12T08:19:32Z,2014-12-12T09:41:03Z,2014-12-12T09:41:01Z,MEMBER,,0,pydata/xarray/pulls/292,"Fixes #55
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/292/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
51526283,MDExOlB1bGxSZXF1ZXN0MjU4MDI4Nzc=,291,Support using dictionaries for labeled indexing,1217238,closed,0,,836999,0,2014-12-10T07:14:47Z,2014-12-11T22:28:26Z,2014-12-11T22:28:19Z,MEMBER,,0,pydata/xarray/pulls/291,"Fixes #187

As of this change, you can use dictionaries for indexing along a dimension, e.g., in the form `array.loc[dict(x='2000-01-01')]` or `array[dict(x=0)]`.

In particular, you can use this for _assignment_, not just for selecting values (e.g., `array[dict(x=0)] = 0`). It was previously difficult to do assignment with labeled dimensions in xray.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/291/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
51518241,MDExOlB1bGxSZXF1ZXN0MjU3OTg4NjE=,289,Faster path for Dataset/DataArray indexing,1217238,closed,0,,836999,0,2014-12-10T04:48:31Z,2014-12-10T04:53:17Z,2014-12-10T04:53:15Z,MEMBER,,0,pydata/xarray/pulls/289,"My benchmark shows this commit makes things about 35% faster
for positional indexing.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/289/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
51212447,MDExOlB1bGxSZXF1ZXN0MjU2MzAwMzY=,288,Add optional dependency on cyordereddict,1217238,closed,0,,836999,0,2014-12-07T09:15:35Z,2014-12-07T09:53:51Z,2014-12-07T09:53:49Z,MEMBER,,0,pydata/xarray/pulls/288,"This makes indexing a dataset (`ds['foo']`) about 30% faster in cases where `cyordereddict` is available.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/288/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
51205753,MDExOlB1bGxSZXF1ZXN0MjU2Mjc1NTc=,287,Fixes for Dataset.to_dataframe(),1217238,closed,0,,836999,0,2014-12-07T03:24:55Z,2014-12-07T06:22:51Z,2014-12-07T06:22:47Z,MEMBER,,0,pydata/xarray/pulls/287,"Fixes #278
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/287/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
50613204,MDExOlB1bGxSZXF1ZXN0MjUzMTk1Njc=,282,Serialize non-index coordinates to netCDF files,1217238,closed,0,,836999,0,2014-12-02T05:11:23Z,2014-12-07T02:44:14Z,2014-12-07T02:44:11Z,MEMBER,,0,pydata/xarray/pulls/282,"Fixes #231 

This PR ensures non-index coordinates can be roundtripped to netCDF and back by using the CF convention of the 'coordinates' attribute on a ""data variable"".

In cases where there are no data variables available, we fall back to the (extended, non-CF) convention of saving 'coordinates' as a global attribute.

I also added the `xray.decode_cf` function to the API. This function can decode either datasets or datastores into decoded datasets, which is handy, for example, if a dataset is serialized according to CF conventions but already in memory (e.g., saved in JSON).

@akleeman: I could use some guidance from you on want to do about `test_roundtrip_coordinates` on `TestCFEncodedDataStore`. I am tentatively skipping it, but it would be nice to get it working. To do so will require some tweaks to the API for the `Datastore.load` method.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/282/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
51059629,MDExOlB1bGxSZXF1ZXN0MjU1NDc1ODY=,285,Fix to_netcdf with 0d sting variables,1217238,closed,0,,836999,0,2014-12-05T03:29:54Z,2014-12-05T03:57:18Z,2014-12-05T03:57:16Z,MEMBER,,0,pydata/xarray/pulls/285,"Fixes #284
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/285/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
47220369,MDExOlB1bGxSZXF1ZXN0MjM1NzUyMjM=,271,Add backends integration test for roundtripping datetime arrays,1217238,closed,0,,836999,0,2014-10-30T00:19:58Z,2014-10-30T02:32:23Z,2014-10-30T02:32:21Z,MEMBER,,0,pydata/xarray/pulls/271,"Not sure how we missed this before.

Also includes a fix for writing datetime arrays with missing values.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/271/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
47195566,MDExOlB1bGxSZXF1ZXN0MjM1NTk1NjE=,270,Fix guess_time_units if NaT is present,1217238,closed,0,,836999,0,2014-10-29T19:54:05Z,2014-10-29T20:09:18Z,2014-10-29T20:07:02Z,MEMBER,,0,pydata/xarray/pulls/270,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/270/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
46994302,MDExOlB1bGxSZXF1ZXN0MjM0MzY5NzM=,269,Fixes for dtype casting,1217238,closed,0,,836999,0,2014-10-28T06:37:55Z,2014-10-28T06:47:50Z,2014-10-28T06:47:38Z,MEMBER,,0,pydata/xarray/pulls/269,"Fixes #264 
Fixes #259 (casting of masked arrays)
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/269/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull