Skip to content

feat(dataframe): Spalten-Ergonomie für sclass.DataFrame (PR2)#52

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

feat(dataframe): Spalten-Ergonomie für sclass.DataFrame (PR2)#52
lepy merged 1 commit into
masterfrom
feat/dataframe-columns

Conversation

@lepy

@lepy lepy commented Jun 26, 2026

Copy link
Copy Markdown
Owner

Zweiter von vier PRs zur Verbesserung von sdata/sclass/dataframe.pySpalten-Ergonomie. Strikt additiv (load-bearing API unverändert), lokale CI grün, 100 % Coverage.

Neu

  • set_column(name, *, unit/label/description/ontology/required/dtype) — annotiert eine Spalte schreibdurchgängig auf column_metadata; nur gesetzte Felder ändern sich, vorhandene Annotationen bleiben erhalten (über Metadata.set_attr). Warnt (nicht-brechend), wenn name keine df-Spalte ist.
  • get_column(name) -> Attribute (oder None).
  • col-Accessor (ColumnAccessor, gespiegelt von AttrAccessor in interactive.py): df.col.weight / df.col["weight"] liefern das Spalten-Attribute (Tab-Completion via __dir__); Felder direkt mutierbar (df.col.weight.unit = "kg"). Zuweisung df.col.x = ... wirft bewusst AttributeError und verweist auf set_column.
  • column_units — Mapping {Spalte: Einheit} in df-Spaltenreihenfolge.

Sync/Prune

  • _sync_column_metadata() im df-Setter: ergänzt neue Spalten und entfernt Attribute zu nicht mehr vorhandenen Spalten (prune=True bei Neuzuweisung); vorhandene unit/label überlebende Spalten bleiben erhalten.
  • Bei der Konstruktion gelieferte column_metadata bleibt unverändert (prune=False, nur Waisen-Warnung aus PR1) — kein Verlust expliziter Nutzereingaben.

Tests

  • Neu: tests/test_sclass_dataframe_columns.py (set/get, Accessor get/set/dir/repr/Fehlerpfade, In-place-Mutation, Sync/Prune bei Neuzuweisung, units-View).

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

Erstklassige, schreibdurchgängige Spalten-API plus konsistentes Synchronisieren
der column_metadata mit den df-Spalten. Strikt additiv, 100 % Coverage.

- set_column(name, *, unit/label/description/ontology/required/dtype): annotiert
  eine Spalte; nur gesetzte Felder ändern sich, vorhandene Annotationen bleiben
  (über Metadata.set_attr). Warnt, wenn die Spalte nicht im df existiert.
- get_column(name) -> Attribute (oder None).
- col-Accessor (ColumnAccessor, gespiegelt von AttrAccessor in interactive.py):
  df.col.weight / df.col["weight"] liefern das Spalten-Attribute (Autocomplete via
  __dir__); Felder direkt mutierbar (df.col.weight.unit = "kg"). Zuweisung
  df.col.x = ... wirft bewusst AttributeError und verweist auf set_column.
- column_units: Mapping {Spalte: Einheit} in df-Spaltenreihenfolge.
- _sync_column_metadata() im df-Setter: ergänzt neue Spalten und prunt Attribute
  zu entfernten Spalten (prune=True bei Neuzuweisung); bei der Konstruktion
  gelieferte column_metadata bleibt erhalten (prune=False, nur Waisen-Warnung).
- Tests: tests/test_sclass_dataframe_columns.py (set/get, Accessor get/set/dir/
  repr/Fehlerpfade, In-place-Mutation, Sync/Prune, units-View).
@lepy lepy merged commit 3fc35bb into master Jun 26, 2026
1 of 2 checks passed
@lepy lepy deleted the feat/dataframe-columns branch June 26, 2026 11:43
@codacy-production

Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 17 high · 13 minor

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

Results:
30 new issues

Category Results
Documentation 11 minor
Security 17 high
CodeStyle 2 minor

View in Codacy

🟢 Metrics 33 complexity · 0 duplication

Metric Results
Complexity 33
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