Skip to content

Commit 972a161

Browse files
committed
refactor: change allow_insecure_read to allow_pickle_read
1 parent 97630e8 commit 972a161

File tree

5 files changed

+32
-30
lines changed

5 files changed

+32
-30
lines changed

pins/boards.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def __init__(
5050
fs: IFileSystem,
5151
versioned=True,
5252
meta_factory=MetaFactory(),
53-
allow_insecure_read: "bool | None" = None,
53+
allow_pickle_read: "bool | None" = None,
5454
):
5555
self.board = str(board)
5656
self.fs = fs
@@ -60,7 +60,7 @@ def __init__(
6060
raise NotImplementedError()
6161

6262
self.versioned = versioned
63-
self.allow_insecure_read = allow_insecure_read
63+
self.allow_pickle_read = allow_pickle_read
6464

6565
def pin_exists(self, name: str) -> bool:
6666
"""Determine if a pin exists.
@@ -206,7 +206,7 @@ def pin_read(self, name, version: Optional[str] = None, hash: Optional[str] = No
206206
meta,
207207
self.fs,
208208
self.construct_path([pin_name, meta.version.version]),
209-
allow_insecure_read=self.allow_insecure_read,
209+
allow_pickle_read=self.allow_pickle_read,
210210
)
211211

212212
def pin_write(
@@ -609,7 +609,7 @@ def pin_download(self, name, version=None, hash=None) -> Sequence[str]:
609609

610610
if isinstance(meta, MetaRaw):
611611
return load_data(
612-
meta, self.fs, None, allow_insecure_read=self.allow_insecure_read
612+
meta, self.fs, None, allow_pickle_read=self.allow_pickle_read
613613
)
614614

615615
raise NotImplementedError("TODO: allow download beyond MetaRaw.")

pins/config.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
PINS_NAME = "pins-py"
55
PINS_ENV_DATA_DIR = "PINS_DATA_DIR"
66
PINS_ENV_CACHE_DIR = "PINS_CACHE_DIR"
7-
PINS_ENV_INSECURE_READ = "PINS_ALLOW_INSECURE_READ"
7+
PINS_ENV_INSECURE_READ = "PINS_ALLOW_PICKLE_READ"
88

99

1010
def get_data_dir():
@@ -15,7 +15,7 @@ def get_cache_dir():
1515
return os.environ.get(PINS_ENV_CACHE_DIR, appdirs.user_cache_dir(PINS_NAME))
1616

1717

18-
def get_allow_insecure_read(flag):
18+
def get_allow_pickle_read(flag):
1919
if flag is None:
2020
env_var = os.environ.get(PINS_ENV_INSECURE_READ, "0")
2121
try:

pins/drivers.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from pathlib import Path
44

5-
from .config import get_allow_insecure_read, PINS_ENV_INSECURE_READ
5+
from .config import get_allow_pickle_read, PINS_ENV_INSECURE_READ
66
from .meta import Meta
77
from .errors import PinsInsecureReadError
88

@@ -17,7 +17,7 @@ def load_data(
1717
meta: Meta,
1818
fs,
1919
path_to_version: "str | None" = None,
20-
allow_insecure_read: "bool | None" = None,
20+
allow_pickle_read: "bool | None" = None,
2121
):
2222
"""Return loaded data, based on meta type.
2323
Parameters
@@ -30,10 +30,11 @@ def load_data(
3030
A filepath used as the parent directory the data to-be-loaded lives in.
3131
"""
3232
# TODO: extandable loading with deferred importing
33-
if meta.type in UNSAFE_TYPES and not get_allow_insecure_read(allow_insecure_read):
33+
if meta.type in UNSAFE_TYPES and not get_allow_pickle_read(allow_pickle_read):
3434
raise PinsInsecureReadError(
35-
f"Reading pin type {meta.type} is NOT secure. Set the allow_insecure_read=True "
36-
f"when creating the board, or the {PINS_ENV_INSECURE_READ}=1 environment variable.\n"
35+
f"Reading pin type {meta.type} involves reading a pickle file, so is NOT secure."
36+
f"Set the allow_pickle_read=True when creating the board, or the "
37+
f"{PINS_ENV_INSECURE_READ}=1 environment variable.\n"
3738
"See:\n"
3839
" * https://docs.python.org/3/library/pickle.html \n"
3940
" * https://scikit-learn.org/stable/modules/model_persistence.html#security-maintainability-limitations"

pins/tests/test_boards.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import pytest
66

77
from pins.tests.helpers import DEFAULT_CREATION_DATE, rm_env
8+
from pins.config import PINS_ENV_INSECURE_READ
89
from pins.errors import PinsError, PinsInsecureReadError
910
from pins.meta import MetaRaw
1011

@@ -112,8 +113,8 @@ def test_board_pin_write_rsc_index_html(board, tmp_dir2, snapshot):
112113
"obj, type_", [(df, "csv"), (df, "joblib"), ({"a": 1, "b": [2, 3]}, "joblib")]
113114
)
114115
def test_board_pin_write_type(board, obj, type_, request):
115-
with rm_env("PINS_ALLOW_INSECURE_READ"):
116-
os.environ["PINS_ALLOW_INSECURE_READ"] = "1"
116+
with rm_env(PINS_ENV_INSECURE_READ):
117+
os.environ[PINS_ENV_INSECURE_READ] = "1"
117118
meta = board.pin_write(obj, "test_pin", type=type_, title="some title")
118119
dst_obj = board.pin_read("test_pin")
119120

@@ -135,19 +136,19 @@ def test_board_pin_read_insecure_fail_default(board):
135136

136137
def test_board_pin_read_insecure_fail_board_flag(board):
137138
# board flag prioritized over env var
138-
with rm_env("PINS_ALLOW_INSECURE_READ"):
139-
os.environ["PINS_ALLOW_INSECURE_READ"] = "1"
140-
board.allow_insecure_read = False
139+
with rm_env(PINS_ENV_INSECURE_READ):
140+
os.environ[PINS_ENV_INSECURE_READ] = "1"
141+
board.allow_pickle_read = False
141142
board.pin_write({"a": 1}, "test_pin", type="joblib", title="some title")
142143
with pytest.raises(PinsInsecureReadError):
143144
board.pin_read("test_pin")
144145

145146

146147
def test_board_pin_read_insecure_succeed_board_flag(board):
147148
# board flag prioritized over env var
148-
with rm_env("PINS_ALLOW_INSECURE_READ"):
149-
os.environ["PINS_ALLOW_INSECURE_READ"] = "0"
150-
board.allow_insecure_read = True
149+
with rm_env(PINS_ENV_INSECURE_READ):
150+
os.environ[PINS_ENV_INSECURE_READ] = "0"
151+
board.allow_pickle_read = True
151152
board.pin_write({"a": 1}, "test_pin", type="joblib", title="some title")
152153
board.pin_read("test_pin")
153154

pins/tests/test_config.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,22 @@ def env_unset():
1515
yield
1616

1717

18-
def test_allow_insecure_read_no_env(env_unset):
19-
assert config.get_allow_insecure_read(True) is True
20-
assert config.get_allow_insecure_read(False) is False
18+
def test_allow_pickle_read_no_env(env_unset):
19+
assert config.get_allow_pickle_read(True) is True
20+
assert config.get_allow_pickle_read(False) is False
2121

2222

23-
def test_allow_insecure_read_env_1(env_unset):
23+
def test_allow_pickle_read_env_1(env_unset):
2424
os.environ[config.PINS_ENV_INSECURE_READ] = "1"
2525

26-
assert config.get_allow_insecure_read(True) is True
27-
assert config.get_allow_insecure_read(False) is False
28-
assert config.get_allow_insecure_read(None) is True
26+
assert config.get_allow_pickle_read(True) is True
27+
assert config.get_allow_pickle_read(False) is False
28+
assert config.get_allow_pickle_read(None) is True
2929

3030

31-
def test_allow_insecure_read_env_0(env_unset):
31+
def test_allow_pickle_read_env_0(env_unset):
3232
os.environ[config.PINS_ENV_INSECURE_READ] = "0"
3333

34-
assert config.get_allow_insecure_read(True) is True
35-
assert config.get_allow_insecure_read(False) is False
36-
assert config.get_allow_insecure_read(None) is False
34+
assert config.get_allow_pickle_read(True) is True
35+
assert config.get_allow_pickle_read(False) is False
36+
assert config.get_allow_pickle_read(None) is False

0 commit comments

Comments
 (0)