Skip to content

Commit ee251a3

Browse files
committed
ENH: Improve type hinting for DataFrame snapshot methods
1 parent d50c420 commit ee251a3

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

pandas/core/frame_versioning.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# pandas/core/frame_versioning.py
21
from __future__ import annotations
32

43
from dataclasses import dataclass
54
from datetime import datetime
65
import uuid
7-
from typing import Dict, Optional
6+
from typing import Dict, Optional, TYPE_CHECKING
87

9-
import pandas as pd
8+
if TYPE_CHECKING:
9+
import pandas as pd # only used for type hints
1010

1111

1212
def _generate_snapshot_id(name: Optional[str] = None) -> str:
@@ -31,17 +31,17 @@ class DataFrameSnapshotStore:
3131

3232
def __init__(self) -> None:
3333
# snapshot_id -> DataFrame
34-
self._snapshots: Dict[str, pd.DataFrame] = {}
34+
self._snapshots: Dict[str, "pd.DataFrame"] = {}
3535
self._meta: Dict[str, SnapshotMeta] = {}
3636

37-
def snapshot(self, df: pd.DataFrame, name: Optional[str] = None) -> str:
37+
def snapshot(self, df: "pd.DataFrame", name: Optional[str] = None) -> str:
3838
sid = _generate_snapshot_id(name)
3939
# deep copy for safety
4040
self._snapshots[sid] = df.copy(deep=True)
4141
self._meta[sid] = SnapshotMeta(name=sid, created_at=datetime.utcnow())
4242
return sid
4343

44-
def restore(self, name: str) -> pd.DataFrame:
44+
def restore(self, name: str) -> "pd.DataFrame":
4545
if name not in self._snapshots:
4646
raise KeyError(f"Snapshot not found: {name}")
4747
# return a deep copy so modifications don't change stored snapshot
@@ -66,4 +66,5 @@ def info(self, name: Optional[str] = None) -> dict:
6666
raise KeyError(f"Snapshot not found: {name}")
6767
meta = self._meta[name]
6868
return {"name": meta.name, "created_at": meta.created_at.isoformat()}
69-
return {"count": len(self._snapshots), "snapshots": [m.name for m in self._meta.values()]}
69+
return {"count": len(self._snapshots),
70+
"snapshots": [m.name for m in self._meta.values()]}

0 commit comments

Comments
 (0)