21
21
import re
22
22
import sys
23
23
from typing import Callable
24
+ from copy import deepcopy
24
25
25
26
26
27
def get_sagemaker_config_logger ():
@@ -70,15 +71,19 @@ def _log_sagemaker_config_single_substitution(source_value, config_value, config
70
71
71
72
# sensitive_keywords = re.compile(r'(secret|password|key)', re.IGNORECASE)
72
73
73
- if isinstance (source_value , dict ):
74
- for key in source_value .keys ():
74
+ source_value_log_copy = deepcopy (source_value )
75
+ config_value_log_copy = deepcopy (config_value )
76
+
77
+
78
+ if isinstance (source_value_log_copy , dict ):
79
+ for key in source_value_log_copy .keys ():
75
80
if re .search (r'(secret|password|key)' , key , re .IGNORECASE ):
76
- source_value [key ] = '***'
81
+ source_value_log_copy [key ] = '***'
77
82
78
- if isinstance (config_value , dict ):
79
- for key in config_value .keys ():
83
+ if isinstance (config_value_log_copy , dict ):
84
+ for key in config_value_log_copy .keys ():
80
85
if re .search (r'(secret|password|key)' , key , re .IGNORECASE ):
81
- config_value [key ] = '***'
86
+ config_value_log_copy [key ] = '***'
82
87
83
88
if config_value is not None :
84
89
@@ -115,8 +120,8 @@ def _log_sagemaker_config_single_substitution(source_value, config_value, config
115
120
" source value that will be used = %s"
116
121
),
117
122
config_key_path ,
118
- config_value ,
119
- source_value ,
123
+ config_value_log_copy ,
124
+ source_value_log_copy ,
120
125
)
121
126
elif source_value is not None and config_value != source_value :
122
127
# Sagemaker Config had a value defined that is NOT going to be used
@@ -130,8 +135,8 @@ def _log_sagemaker_config_single_substitution(source_value, config_value, config
130
135
" source value that will be used = %s" ,
131
136
),
132
137
config_key_path ,
133
- config_value ,
134
- source_value ,
138
+ config_value_log_copy ,
139
+ source_value_log_copy ,
135
140
)
136
141
else :
137
142
# nothing was specified in the config and nothing is being automatically applied
0 commit comments