home / github

Menu
  • Search all tables
  • GraphQL API

issues

Table actions
  • GraphQL API for issues

3 rows where user = 1700203 sorted by updated_at descending

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: title, closed_at, created_at (date), updated_at (date), closed_at (date)

type 2

  • pull 2
  • issue 1

state 1

  • closed 3

repo 1

  • xarray 3
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
434502234 MDExOlB1bGxSZXF1ZXN0MjcxNDgyMjgw 2905 Use explicit type check in `as_compatible_data` instead of blanket access to `values` attribute blsqr 1700203 closed 0     8 2019-04-17T21:52:37Z 2021-02-18T17:22:16Z 2021-02-18T15:04:14Z CONTRIBUTOR   0 pydata/xarray/pulls/2905

This change was prompted by the fact that getattr(data, 'values', data) affected any kind of data with a values attribute, which is not the desired behaviour for core.variable.as_compatible_data.

This also extends tests to assert that custom objects with such an attribute are not attempted to be converted.

I'm happy to write additional tests, if you could briefly sketch further requirements.

  • [x] Implemented the changes
  • [x] Closes #2097
  • [x] Tests added
    • [ ] Sufficient?
  • [x] Fully documented, including whats-new.rst for all changes and api.rst for new API
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/2905/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
610687463 MDExOlB1bGxSZXF1ZXN0NDEyMDgxMDE4 4018 Add NetCDF3 dtype coercion for unsigned integer types blsqr 1700203 closed 0     7 2020-05-01T10:38:45Z 2020-07-13T15:37:51Z 2020-05-20T17:08:24Z CONTRIBUTOR   0 pydata/xarray/pulls/4018

This PR addresses #4014.

  • [x] Closes #4014
  • [x] Tests added or adjusted
  • [x] Adjusted a test case where int64 coercion played a role
  • [x] Explicit test for failing coercion (seems to be missing currently -- should this be added?)
  • [x] Passes isort -rc . && black . && mypy . && flake8
  • [x] Fully documented
  • [x] Adjusted whats-new.rst for all changes ~~and api.rst for new API~~
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/4018/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
608923222 MDU6SXNzdWU2MDg5MjMyMjI= 4014 Add NetCDF3 dtype coercion for unsigned integer types blsqr 1700203 closed 0     2 2020-04-29T09:52:08Z 2020-05-20T17:08:24Z 2020-05-20T17:08:24Z CONTRIBUTOR      

xr.Dataset.to_netcdf does not seem to support writing data with unsigned integer dtypes, uint32, uint64 etc.. This seems to be the case for both scipy-based output formats, NETCDF3_CLASSIC and NETCDF3_64BIT.

It seems like dtype coercions for int64 and bool are done automatically for NetCDF3 in the xarray.netcdf3 module. Shouldn't data of signed dtypes then also be coerced, i.e. to their signed equivalent?

MCVE Code Sample

```python import numpy as np import xarray as xr

da = xr.DataArray(np.array([1,2,3], dtype='uint64'))

The following all fail:

da.to_netcdf("foo") # default format: scipy NETCDF3_CLASSIC da.to_netcdf("bar", format='NETCDF3_64BIT') da.astype('uint32').to_netcdf("baz") da.astype('uint16').to_netcdf("spam")

This works:

da.astype('int64').to_netcdf("working64") # is coerced da.astype('int32').to_netcdf("working32") # works natively ```

Importantly, this is with the netcdf4 python package not being installed, in which case that package would be used for writing rather than scipy's netcdf.

Expected Output

NetCDF3 file is written with an appropriately coerced data format, e.g. as done with int64.

Alternatively, writing data fails for all dtypes that would natively be unsupported, including int64 and bool.

Problem Description

Given that the infrastructure for coercion is already in place, it seems more consistent to me to apply coercion to all cases where it would lead to to_netcdf method calls succeeding rather than failing, not only to int64 and bool.

Ideally, coercion would happen towards another unsigned integer type. However, writing uint32 seems not to be possible, so it's not a 64bit/32bit issue. While the NetCDF Format Specification declares as only unsigned integer type NON_NEG, which I presume to be equivalent to uint32, writing unsigned integers seems not possible via scipy's NetCDF3 writer. Thus, the only viable coercion, as far as I see, would be to signed equivalents.

I see no new cast safety implications here, because the existing coerce_nc3_dtype function already checks if the original and cast arrays compare equivalently.

Versions

Output of <tt>xr.show_versions()</tt> INSTALLED VERSIONS ------------------ commit: None python: 3.7.6 (default, Dec 30 2019, 19:38:26) [Clang 11.0.0 (clang-1100.0.33.16)] python-bits: 64 OS: Darwin OS-release: 19.3.0 machine: x86_64 processor: i386 byteorder: little LC_ALL: en_US.UTF-8 LANG: en_US.UTF-8 LOCALE: en_US.UTF-8 libhdf5: 1.10.4 libnetcdf: None xarray: 0.15.1 pandas: 1.0.1 numpy: 1.18.3 scipy: 1.4.1 netCDF4: None pydap: None h5netcdf: None h5py: 2.10.0 Nio: None zarr: None cftime: 1.0.4.2 nc_time_axis: None PseudoNetCDF: None rasterio: None cfgrib: None iris: None bottleneck: None dask: 2.10.1 distributed: 2.10.0 matplotlib: 3.1.3 cartopy: None seaborn: None numbagg: None setuptools: 45.1.0 pip: 20.0.2 conda: None pytest: 5.3.5 IPython: 7.12.0 sphinx: 2.4.1
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/4014/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed xarray 13221727 issue

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issues] (
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [number] INTEGER,
   [title] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [state] TEXT,
   [locked] INTEGER,
   [assignee] INTEGER REFERENCES [users]([id]),
   [milestone] INTEGER REFERENCES [milestones]([id]),
   [comments] INTEGER,
   [created_at] TEXT,
   [updated_at] TEXT,
   [closed_at] TEXT,
   [author_association] TEXT,
   [active_lock_reason] TEXT,
   [draft] INTEGER,
   [pull_request] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [performed_via_github_app] TEXT,
   [state_reason] TEXT,
   [repo] INTEGER REFERENCES [repos]([id]),
   [type] TEXT
);
CREATE INDEX [idx_issues_repo]
    ON [issues] ([repo]);
CREATE INDEX [idx_issues_milestone]
    ON [issues] ([milestone]);
CREATE INDEX [idx_issues_assignee]
    ON [issues] ([assignee]);
CREATE INDEX [idx_issues_user]
    ON [issues] ([user]);
Powered by Datasette · Queries took 723.452ms · About: xarray-datasette