home / github

Menu
  • GraphQL API
  • Search all tables

issue_comments

Table actions
  • GraphQL API for issue_comments

11 rows where author_association = "MEMBER" and issue = 1090229430 sorted by updated_at descending

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: reactions, created_at (date), updated_at (date)

user 5

  • shoyer 4
  • max-sixty 3
  • Illviljan 2
  • jhamman 1
  • dcherian 1

issue 1

  • bool(ds) should raise a "the truth value of a Dataset is ambiguous" error · 11 ✖

author_association 1

  • MEMBER · 11 ✖
id html_url issue_url node_id user created_at updated_at ▲ author_association body reactions performed_via_github_app issue
1007836513 https://github.com/pydata/xarray/issues/6124#issuecomment-1007836513 https://api.github.com/repos/pydata/xarray/issues/6124 IC_kwDOAMm_X848El1h jhamman 2443309 2022-01-08T00:18:34Z 2022-01-08T00:18:34Z MEMBER

I'm also late to the party but I would say I fall squarely in the Dataset is a dict-like camp. If we remove __bool__, should we also remove __len__? Basically, everything @dopplershift aligns with my perspective here.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  bool(ds) should raise a "the truth value of a Dataset is ambiguous" error 1090229430
1005918218 https://github.com/pydata/xarray/issues/6124#issuecomment-1005918218 https://api.github.com/repos/pydata/xarray/issues/6124 IC_kwDOAMm_X8479RgK shoyer 1217238 2022-01-05T17:16:56Z 2022-01-05T17:16:56Z MEMBER

I made a Twitter poll, let's see what that says 😄

https://twitter.com/xarray_dev/status/1478776987925684224?s=20

{
    "total_count": 1,
    "+1": 1,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  bool(ds) should raise a "the truth value of a Dataset is ambiguous" error 1090229430
1005907803 https://github.com/pydata/xarray/issues/6124#issuecomment-1005907803 https://api.github.com/repos/pydata/xarray/issues/6124 IC_kwDOAMm_X8479O9b shoyer 1217238 2022-01-05T17:05:14Z 2022-01-05T17:05:14Z MEMBER

After discussing this a little more, I am on the fence about whether this change this is a good idea. If we can't come to concensus about expected behavior, then that is probably an indication that we should leave things the same to avoid churn.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  bool(ds) should raise a "the truth value of a Dataset is ambiguous" error 1090229430
1004751649 https://github.com/pydata/xarray/issues/6124#issuecomment-1004751649 https://api.github.com/repos/pydata/xarray/issues/6124 IC_kwDOAMm_X84740sh Illviljan 14371165 2022-01-04T12:04:42Z 2022-01-04T12:04:42Z MEMBER

I do wonder at what point a mapping isn't a mapping anymore?

For example DataFrames aren't considered mappings: python isinstance(df, collections.abc.Mapping) Out[4]: False And if we are to follow pandas example maybe we should just remove the Mapping inheritance? https://github.com/pydata/xarray/blob/60754fdbc4ecd9eb3c0978e82635c6d43e8d485b/xarray/core/dataset.py#L584

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  bool(ds) should raise a "the truth value of a Dataset is ambiguous" error 1090229430
1004669545 https://github.com/pydata/xarray/issues/6124#issuecomment-1004669545 https://api.github.com/repos/pydata/xarray/issues/6124 IC_kwDOAMm_X8474gpp max-sixty 5635139 2022-01-04T09:58:51Z 2022-01-04T09:58:51Z MEMBER

TBC, I am fine merging! I would lightly vote against it, but weigh my vote far below @shoyer 's.

And more broadly let's not wait for everyone to agree on everything!

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  bool(ds) should raise a "the truth value of a Dataset is ambiguous" error 1090229430
1004476940 https://github.com/pydata/xarray/issues/6124#issuecomment-1004476940 https://api.github.com/repos/pydata/xarray/issues/6124 IC_kwDOAMm_X8473xoM dcherian 2448579 2022-01-04T02:09:11Z 2022-01-04T02:09:11Z MEMBER

Sorry! I thought we had consensus but perhaps not?

Shall we revert? That said it's PendingDeprecationWarning so it should only be raised in tests, which seems OK?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  bool(ds) should raise a "the truth value of a Dataset is ambiguous" error 1090229430
1004474062 https://github.com/pydata/xarray/issues/6124#issuecomment-1004474062 https://api.github.com/repos/pydata/xarray/issues/6124 IC_kwDOAMm_X8473w7O shoyer 1217238 2022-01-04T01:59:46Z 2022-01-04T01:59:46Z MEMBER

@dcherian So I guess we decided to go for it? :)

@max-sixty We can still inherit from Mapping and just explicitly raise TypeError inside Dataset.__bool__ rather than using the default implementation. This is certainly a slight violation from the Mapping protocol, but xarray.Dataset is already a little inconsistent (e.g., we override __eq__ inconsistently with the default mapping behavior). Overall I think it's probably a worthwhile the more user-friendly choice?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  bool(ds) should raise a "the truth value of a Dataset is ambiguous" error 1090229430
1003482768 https://github.com/pydata/xarray/issues/6124#issuecomment-1003482768 https://api.github.com/repos/pydata/xarray/issues/6124 IC_kwDOAMm_X847z-6Q max-sixty 5635139 2022-01-01T01:50:07Z 2022-01-01T01:50:37Z MEMBER

Would this mean that Dataset doesn't inherit from Mapping (in the end-state, after deprecation)? Or that we inherit from Mapping but override bool to raise an error?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  bool(ds) should raise a "the truth value of a Dataset is ambiguous" error 1090229430
1002746595 https://github.com/pydata/xarray/issues/6124#issuecomment-1002746595 https://api.github.com/repos/pydata/xarray/issues/6124 IC_kwDOAMm_X847xLLj shoyer 1217238 2021-12-29T19:30:29Z 2021-12-29T19:30:29Z MEMBER

The original intention here was definitely to honor the Mapping protocol exactly, but I agree that bool() is hard to use correctly on Dataset objects. I would support deprecating this.

{
    "total_count": 1,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 1,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  bool(ds) should raise a "the truth value of a Dataset is ambiguous" error 1090229430
1002534942 https://github.com/pydata/xarray/issues/6124#issuecomment-1002534942 https://api.github.com/repos/pydata/xarray/issues/6124 IC_kwDOAMm_X847wXge max-sixty 5635139 2021-12-29T10:53:53Z 2021-12-29T10:53:53Z MEMBER

I definitely empathize with the tradeoff here. That you found xarray's test's were making this error is fairly damning.

But the biggest impediment to changing this behavior is that Dataset follows the Mapping protocol, which has this behavior. One nice feature of xarray is that we follow python's protocols where possible, and that includes truthiness for dict-like / Mapping objects. Notably pd.DataFrame objects only partially implement the protocol, including .values.

If there's a synthesis of keeping the truthiness while reducing the chance of these mistakes, that would be very welcome.

I'm not sure this is an improvement, but in the example converting to a DataArray gets away from the truthiness issue: (result.min(...) >= 1.5).to_array().all()

(I wrote this before seeing @Illviljan 's response, which is very similar)

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  bool(ds) should raise a "the truth value of a Dataset is ambiguous" error 1090229430
1002441911 https://github.com/pydata/xarray/issues/6124#issuecomment-1002441911 https://api.github.com/repos/pydata/xarray/issues/6124 IC_kwDOAMm_X847wAy3 Illviljan 14371165 2021-12-29T07:49:07Z 2021-12-29T07:49:07Z MEMBER

A Dataset is more similar to a dict or pd.DataFrame.

DataFrame has a similar error, same cooks I suppose: ```python bool(pd.DataFrame()) *** ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

bool(pd.DataFrame([[0, 2], [0, 4]], columns=['A', 'B'])) *** ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). ```

dict works the same way as a dataset, if something exist in it is True: ```python bool({}) False

bool({'a': False}) True `` I see "if not empty do x"-checks all the time with dicts in python code, Is it that strange to follow the behavior ofdict`?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  bool(ds) should raise a "the truth value of a Dataset is ambiguous" error 1090229430

Advanced export

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

CSV options:

CREATE TABLE [issue_comments] (
   [html_url] TEXT,
   [issue_url] TEXT,
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [created_at] TEXT,
   [updated_at] TEXT,
   [author_association] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [performed_via_github_app] TEXT,
   [issue] INTEGER REFERENCES [issues]([id])
);
CREATE INDEX [idx_issue_comments_issue]
    ON [issue_comments] ([issue]);
CREATE INDEX [idx_issue_comments_user]
    ON [issue_comments] ([user]);
Powered by Datasette · Queries took 12.791ms · About: xarray-datasette