Skip to content

Commit 7a8b6a1

Browse files
committed
Address review comments
1 parent 8973132 commit 7a8b6a1

File tree

2 files changed

+25
-16
lines changed

2 files changed

+25
-16
lines changed

src/sagemaker/utils.py

+11-8
Original file line numberDiff line numberDiff line change
@@ -1538,10 +1538,10 @@ def _is_bad_link(info, base):
15381538
return _is_bad_path(info.linkname, base=tip)
15391539

15401540

1541-
def safe_members(members):
1541+
def _get_safe_members(members):
15421542
"""A generator that yields members that are safe to extract.
15431543
1544-
It checks for bad paths and bad links.
1544+
It filters out bad paths and bad links.
15451545
15461546
Args:
15471547
members (list): A list of members to check.
@@ -1553,20 +1553,23 @@ def safe_members(members):
15531553

15541554
for file_info in members:
15551555
if _is_bad_path(file_info.name, base):
1556-
print(stderr, file_info.name, "is blocked (illegal path)")
1556+
logger.error(stderr, file_info.name, "is blocked (illegal path)")
15571557
elif file_info.issym() and _is_bad_link(file_info, base):
1558-
print(stderr, file_info.name, "is blocked: Symlink to", file_info.linkname)
1558+
logger.error(stderr, file_info.name, "is blocked: Symlink to", file_info.linkname)
15591559
elif file_info.islnk() and _is_bad_link(file_info, base):
1560-
print(stderr, file_info.name, "is blocked: Hard link to", file_info.linkname)
1560+
logger.error(stderr, file_info.name, "is blocked: Hard link to", file_info.linkname)
15611561
else:
15621562
yield file_info
15631563

15641564

15651565
def custom_extractall_tarfile(tar, extract_path):
15661566
"""Extract a tarfile, optionally using data_filter if available.
15671567
1568+
# TODO: The function and it's usages can be deprecated once SageMaker Python SDK
1569+
is upgraded to use Python 3.12+
1570+
15681571
If the tarfile has a data_filter attribute, it will be used to extract the contents of the file.
1569-
Otherwise, the safe_members function will be used to check for bad paths and bad links.
1572+
Otherwise, the _get_safe_members function will be used to filter bad paths and bad links.
15701573
15711574
Args:
15721575
tar (tarfile.TarFile): The opened tarfile object.
@@ -1575,7 +1578,7 @@ def custom_extractall_tarfile(tar, extract_path):
15751578
Returns:
15761579
None
15771580
"""
1578-
if hasattr(tar, "data_filter"):
1581+
if hasattr(tarfile, "data_filter"):
15791582
tar.extractall(path=extract_path, filter="data")
15801583
else:
1581-
tar.extractall(path=extract_path, members=safe_members(tar))
1584+
tar.extractall(path=extract_path, members=_get_safe_members(tar))

src/sagemaker/workflow/_repack_model.py

+14-8
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from __future__ import absolute_import
1515

1616
import argparse
17+
import logging
1718
import os
1819
import shutil
1920
import tarfile
@@ -36,6 +37,8 @@
3637
from os.path import abspath, realpath, dirname, normpath, join as joinpath
3738
from sys import stderr
3839

40+
logger = logging.getLogger(__name__)
41+
3942

4043
def _get_resolved_path(path):
4144
"""Return the normalized absolute path of a given path.
@@ -82,10 +85,10 @@ def _is_bad_link(info, base):
8285
return _is_bad_path(info.linkname, base=tip)
8386

8487

85-
def safe_members(members):
88+
def _get_safe_members(members):
8689
"""A generator that yields members that are safe to extract.
8790
88-
It checks for bad paths and bad links.
91+
It filters out bad paths and bad links.
8992
9093
Args:
9194
members (list): A list of members to check.
@@ -97,20 +100,23 @@ def safe_members(members):
97100

98101
for file_info in members:
99102
if _is_bad_path(file_info.name, base):
100-
print(stderr, file_info.name, "is blocked (illegal path)")
103+
logger.error(stderr, file_info.name, "is blocked (illegal path)")
101104
elif file_info.issym() and _is_bad_link(file_info, base):
102-
print(stderr, file_info.name, "is blocked: Symlink to", file_info.linkname)
105+
logger.error(stderr, file_info.name, "is blocked: Symlink to", file_info.linkname)
103106
elif file_info.islnk() and _is_bad_link(file_info, base):
104-
print(stderr, file_info.name, "is blocked: Hard link to", file_info.linkname)
107+
logger.error(stderr, file_info.name, "is blocked: Hard link to", file_info.linkname)
105108
else:
106109
yield file_info
107110

108111

109112
def custom_extractall_tarfile(tar, extract_path):
110113
"""Extract a tarfile, optionally using data_filter if available.
111114
115+
# TODO: The function and it's usages can be deprecated once SageMaker Python SDK
116+
is upgraded to use Python 3.12+
117+
112118
If the tarfile has a data_filter attribute, it will be used to extract the contents of the file.
113-
Otherwise, the safe_members function will be used to check for bad paths and bad links.
119+
Otherwise, the _get_safe_members function will be used to filter bad paths and bad links.
114120
115121
Args:
116122
tar (tarfile.TarFile): The opened tarfile object.
@@ -119,10 +125,10 @@ def custom_extractall_tarfile(tar, extract_path):
119125
Returns:
120126
None
121127
"""
122-
if hasattr(tar, "data_filter"):
128+
if hasattr(tarfile, "data_filter"):
123129
tar.extractall(path=extract_path, filter="data")
124130
else:
125-
tar.extractall(path=extract_path, members=safe_members(tar))
131+
tar.extractall(path=extract_path, members=_get_safe_members(tar))
126132

127133

128134
def repack(inference_script, model_archive, dependencies=None, source_dir=None): # pragma: no cover

0 commit comments

Comments
 (0)