[protocol] Clarify the exact meaning of the buffer's dtype (Dtype tuple in get_buffers())

Offen
#273 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

@pitrou arbeitet bereits daran.

Seit 03.10.2023.

  • #272 von @pitrou — offen

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
25/100
Issue-Typ
Dokumentation
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
api, data

Rechercherichtung

Beginnen Sie damit, den im Issue zitierten Wortlaut des Protokolls zu lesen, und vergleichen Sie ihn mit tests/test_column_object.py, insbesondere mit test_dtype und test_get_buffers in dataframe-interchange-tests. Klären Sie, ob der dem Buffer zugeordnete dtype mit Column.dtype übereinstimmen sollte oder abweichen darf, und aktualisieren Sie anschließend die Spezifikation und die entsprechenden Testerwartungen, sobald die Bedeutung geklärt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

interchange-protocol

If my assumption is incorrect

Just as a sanity check I checked and pandas/vaex/cuDF/modin all return the type described in Column.dtype for the get_buffers() values. A. TODO I realize for dataframe-interchange-tests is generalise test_dtype and use it in test_get_buffers.

Note that this is actually not correct, depending on how you interpret it. Yes, the buffers' dtype returns a similar type of DType tuple, but it should not necessarily return the same dtype tuple as its Column.dtype does, as the buffer can have a different dtype than the column.

It seems that we all interpreted this wrongly and all implementations got this wrong (or the text about "the data buffer's associated dtype" is wrong), see https://github.com/apache/arrow/issues/37598, https://github.com/pandas-dev/pandas/issues/54781, https://github.com/pola-rs/polars/pull/10787 (and the same for StaticFrame mentioned above, from a quick look).

Originally posted by @jorisvandenbossche in https://github.com/data-apis/dataframe-api/issues/87#issuecomment-1744791104

Vorherrschende Sprache
Python
Sterne
106
Forks
22
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus data-apis/dataframe-api

Alle Issues in data-apis/dataframe-api

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.