Skip to content

Commit b2f8e64

Browse files
underscore prefix for _adaptors.py; abstracting df_type in default_title
1 parent 3b074ba commit b2f8e64

File tree

4 files changed

+23
-9
lines changed

4 files changed

+23
-9
lines changed

pins/adaptors.py renamed to pins/_adaptors.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,13 @@ def data_preview(self) -> str:
6868
return json.dumps({})
6969

7070
def default_title(self, name: str) -> str:
71-
return f"{name}: a pinned {self._obj_name} object"
71+
# TODO(compat): title says CSV rather than data.frame
72+
# see https://github.com/machow/pins-python/issues/5
73+
return f"{name}: a pinned {self._obj_name}"
7274

7375
@property
7476
def _obj_name(self) -> str:
75-
return type(self._d).__qualname__
77+
return f"{type(self._d).__qualname__} object"
7678

7779

7880
class _DFAdaptor(_Adaptor):
@@ -81,6 +83,11 @@ class _DFAdaptor(_Adaptor):
8183
def __init__(self, data: _DataFrame) -> None:
8284
super().__init__(data)
8385

86+
@property
87+
def df_type(self) -> str:
88+
# Consider over-riding this for specialized dataframes
89+
return "DataFrame"
90+
8491
@property
8592
@abstractmethod
8693
def columns(self) -> list[Any]: ...
@@ -107,11 +114,13 @@ def data_preview(self) -> str:
107114

108115
return json.dumps({"data": data_no_nulls, "columns": columns})
109116

117+
@property
118+
def _obj_name(self) -> str:
119+
return f"{type(self._d).__qualname__} object"
120+
110121
def default_title(self, name: str) -> str:
111-
# TODO(compat): title says CSV rather than data.frame
112-
# see https://github.com/machow/pins-python/issues/5
113-
shape_str = " x ".join(map(str, self.shape))
114-
return f"{name}: a pinned {shape_str} DataFrame"
122+
row, col = self.shape
123+
return f"{name}: a pinned {row} x {col} {self.df_type}"
115124

116125

117126
class _PandasAdaptor(_DFAdaptor):

pins/boards.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from importlib_resources import files
1313

14-
from .adaptors import _create_adaptor
14+
from ._adaptors import _create_adaptor
1515
from .cache import PinsCache
1616
from .config import get_allow_rsc_short_name
1717
from .drivers import default_title, load_data, load_file, save_data

pins/drivers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from pathlib import Path
22
from typing import Any, Sequence
33

4-
from pins.adaptors import _create_adaptor
4+
from pins._adaptors import _create_adaptor
55

66
from .config import PINS_ENV_INSECURE_READ, get_allow_pickle_read
77
from .errors import PinsInsecureReadError

pins/tests/test_adaptors.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import pytest
66
from pandas.testing import assert_frame_equal
77

8-
from pins.adaptors import (
8+
from pins._adaptors import (
99
_AbstractPandasFrame,
1010
_Adaptor,
1111
_create_adaptor,
@@ -78,6 +78,11 @@ def test_default_title(self):
7878

7979

8080
class TestPandasAdaptor:
81+
def test_df_type(self):
82+
df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
83+
adaptor = _PandasAdaptor(df)
84+
assert adaptor.df_type == "DataFrame"
85+
8186
def test_columns(self):
8287
df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
8388
adaptor = _PandasAdaptor(df)

0 commit comments

Comments
 (0)