Skip to content

fix(dataframe): Korrektheit & Politur für sclass.DataFrame (PR1)#51

Merged
lepy merged 1 commit into
masterfrom
feat/dataframe-correctness
Jun 26, 2026
Merged

fix(dataframe): Korrektheit & Politur für sclass.DataFrame (PR1)#51
lepy merged 1 commit into
masterfrom
feat/dataframe-correctness

Conversation

@lepy

@lepy lepy commented Jun 26, 2026

Copy link
Copy Markdown
Owner

Erster von vier PRs zur Verbesserung von sdata/sclass/dataframe.pyKorrektheit & Politur. Strikt rückwärtskompatibel (alle load-bearing Namen/Signaturen erhalten), lokale CI grün, 100 % Coverage.

Behobene Bugs

  • Mutable Default: df: Optional[pd.DataFrame] = pd.DataFrame() → alle ohne df erzeugten Instanzen teilten dasselbe Objekt. Jetzt df=None + eigenes leeres DataFrame pro Instanz.
  • to_dataframe() Tippfehler: bettete unter "!sdata" ein (alle anderen Pfade nutzen "_sdata"), wodurch die Metadaten beim Lesen unsichtbar waren. Jetzt "_sdata" inkl. column_metadata.
  • Nackte except: (6×) → getypte, geloggte Restore-Pfade über den gemeinsamen Helfer _restore_from_attrs() (robust gegen None/leer). Sinnloses try/except Exception: raise entfernt.
  • from_parquet wirft jetzt FileNotFoundError statt nacktem Exception.

Politur

  • column_metadata↔Spalten: Waisen-Keys werden im __init__ per logger.warning gemeldet (nicht-brechend); Docstring ehrlich gemacht (vorher fälschlich ValueError versprochen).
  • engine als konsistentes kwarg in to_dict/from_dict (Default pyarrow).
  • Klare Fehlermeldung ohne Parquet-Backend via _require_parquet() (Hinweis auf pip install sdata[parquet]).
  • Veraltete Docstrings korrigiert (Blob/„lazy"/:return: Dict/Parameter-Name).
  • Convenience-Durchreichen an das innere pandas-DataFrame: __len__, shape, columns, dtypes, head(), describe(), __repr__.

Tests

  • Neu: tests/test_sclass_dataframe_correctness.py (Mutable-Default getrennt, _sdata-Key, getypte Restore-Pfade, Waisen-Warnung, _require_parquet-Fehlerpfad, Convenience).
  • test_to_dataframe_attrs auf _sdata aktualisiert (pinnte zuvor den Bug).

Lokale CI grün (ci/local-ci.sh), dataframe.py und Projekt-Total = 100 % (476 passed, 9 optionale Skips).

Behebt bestätigte Bugs und politurt die selbstbeschreibende DataFrame-Klasse,
strikt rückwärtskompatibel (load-bearing API unverändert), 100 % Coverage.

- Mutable Default behoben: df=None statt geteiltem pd.DataFrame()-Objekt; neue
  Instanzen ohne df teilen kein gemeinsames DataFrame mehr.
- to_dataframe(): Tippfehler-Key "!sdata" -> "_sdata" und column_metadata mit
  eingebettet (konsistent zu to_parquet); so eingebettete Metadaten sind beim
  Lesen wieder sichtbar.
- Nackte except: durch getypte, geloggte Restore-Pfade ersetzt; gemeinsamer
  Helfer _restore_from_attrs() dedupliziert from_parquet/from_parquet_bytes und
  ist robust gegen None/leere attrs. Sinnloses try/except: raise entfernt.
- from_parquet wirft FileNotFoundError statt nacktem Exception.
- column_metadata<->Spalten: Waisen-Keys werden im __init__ per warning gemeldet
  (nicht-brechend); Docstring entsprechend ehrlich gemacht.
- engine als konsistentes kwarg in to_dict/from_dict (Default pyarrow).
- Klare Fehlermeldung ohne Parquet-Backend via _require_parquet() (Hinweis auf
  pip install sdata[parquet]).
- Veraltete Docstrings korrigiert (Blob/lazy/Dict/param-name).
- Convenience-Durchreichen: __len__, shape, columns, dtypes, head(), describe(),
  __repr__ (delegieren an das innere pandas-DataFrame).
- Tests: Bugfix-Regressionen + Convenience in test_sclass_dataframe_correctness.py;
  test_to_dataframe_attrs auf _sdata aktualisiert (pinnte zuvor den Bug).
@lepy lepy merged commit 13b3915 into master Jun 26, 2026
1 of 2 checks passed
@lepy lepy deleted the feat/dataframe-correctness branch June 26, 2026 11:34
@codacy-production

Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 24 high · 5 minor

Alerts:
⚠ 29 issues (≤ 0 issues of at least minor severity)

Results:
29 new issues

Category Results
Documentation 5 minor
Security 24 high

View in Codacy

🟢 Metrics 14 complexity · 0 duplication

Metric Results
Complexity 14
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant