Skip to content

v1.2.0

Latest

Choose a tag to compare

@praneethnamburi praneethnamburi released this 14 May 08:57
· 1 commit to main since this release

Added

  • Database.__init__ now detects reserved-suffix column collisions. A collision exists when both <base> and <base><suffix> are present as columns, with <suffix> in (_lim, _has, _any) — in that case the kwarg <base><suffix>=v in Database.__call__ is ambiguous between the suffix predicate (range / set / substring) and a literal-column equality. Configurable via the new keyword-only on_reserved_suffix parameter: "warn" (default — emits a ReservedSuffixCollisionWarning), "raise" (raises ValueError), "ignore", or "rename" (auto-rename the colliding column via _lim → _limits, _has → _contains, _any → _options; raises if the rename target already exists). The warning message in "warn" mode points users to both fixes (rename the source manually, or pass on_reserved_suffix='rename'). Resolves the open question deferred from 1.1.0.
  • ReservedSuffixCollisionWarning (subclass of UserWarning) — exported so callers can warnings.filterwarnings(...) against it specifically.

Notes

  • Non-breaking. Existing Database(df) calls keep working; the new check only fires when the DataFrame has both a <base> and a <base><suffix> column. DatabaseContainer does not re-check after its overlapping-column rename — those renames almost never produce new reserved-suffix collisions in practice.
  • Rename mode mutates self._data (via DataFrame.rename(columns=...), which returns a new frame) — the user's original DataFrame is not mutated in place.