Skip to content

Commit eea56fc

Browse files
authored
Add timestamp to secondary status for training job output (#427)
* Add timestamp to secondary status for training job output * Modify changelog
1 parent c8006fa commit eea56fc

File tree

3 files changed

+21
-16
lines changed

3 files changed

+21
-16
lines changed

CHANGELOG.rst

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ CHANGELOG
66
=========
77

88
* feature: Local Mode: Add support for Batch Inference
9+
* feature: Add timestamp to secondary status in training job output
910

1011
1.11.2
1112
======

src/sagemaker/utils.py

+11-12
Original file line numberDiff line numberDiff line change
@@ -181,18 +181,17 @@ def secondary_training_status_message(job_description, prev_description):
181181
if prev_description_secondary_transitions is not None else 0
182182
current_transitions = job_description['SecondaryStatusTransitions']
183183

184-
if len(current_transitions) == prev_transitions_num:
185-
return current_transitions[-1]['StatusMessage']
186-
else:
187-
transitions_to_print = current_transitions[prev_transitions_num - len(current_transitions):]
188-
status_strs = []
189-
for transition in transitions_to_print:
190-
message = transition['StatusMessage']
191-
time_str = datetime.utcfromtimestamp(
192-
time.mktime(transition['StartTime'].timetuple())).strftime('%Y-%m-%d %H:%M:%S')
193-
status_strs.append('{} {} - {}'.format(time_str, transition['Status'], message))
194-
195-
return '\n'.join(status_strs)
184+
transitions_to_print = current_transitions[-1:] if len(current_transitions) == prev_transitions_num else \
185+
current_transitions[prev_transitions_num - len(current_transitions):]
186+
187+
status_strs = []
188+
for transition in transitions_to_print:
189+
message = transition['StatusMessage']
190+
time_str = datetime.utcfromtimestamp(
191+
time.mktime(job_description['LastModifiedTime'].timetuple())).strftime('%Y-%m-%d %H:%M:%S')
192+
status_strs.append('{} {} - {}'.format(time_str, transition['Status'], message))
193+
194+
return '\n'.join(status_strs)
196195

197196

198197
def download_folder(bucket_name, prefix, target, sagemaker_session):

tests/unit/test_utils.py

+9-4
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ def test_secondary_training_status_changed_empty():
146146

147147
def test_secondary_training_status_message_status_changed():
148148
now = datetime.now()
149-
TRAINING_JOB_DESCRIPTION_1['SecondaryStatusTransitions'][-1]['StartTime'] = now
149+
TRAINING_JOB_DESCRIPTION_1['LastModifiedTime'] = now
150150
expected = '{} {} - {}'.format(
151151
datetime.utcfromtimestamp(time.mktime(now.timetuple())).strftime('%Y-%m-%d %H:%M:%S'),
152152
STATUS,
@@ -157,13 +157,18 @@ def test_secondary_training_status_message_status_changed():
157157

158158
def test_secondary_training_status_message_status_not_changed():
159159
now = datetime.now()
160-
TRAINING_JOB_DESCRIPTION_1['SecondaryStatusTransitions'][-1]['StartTime'] = now
161-
assert secondary_training_status_message(TRAINING_JOB_DESCRIPTION_1, TRAINING_JOB_DESCRIPTION_2) == MESSAGE
160+
TRAINING_JOB_DESCRIPTION_1['LastModifiedTime'] = now
161+
expected = '{} {} - {}'.format(
162+
datetime.utcfromtimestamp(time.mktime(now.timetuple())).strftime('%Y-%m-%d %H:%M:%S'),
163+
STATUS,
164+
MESSAGE
165+
)
166+
assert secondary_training_status_message(TRAINING_JOB_DESCRIPTION_1, TRAINING_JOB_DESCRIPTION_2) == expected
162167

163168

164169
def test_secondary_training_status_message_prev_missing():
165170
now = datetime.now()
166-
TRAINING_JOB_DESCRIPTION_1['SecondaryStatusTransitions'][-1]['StartTime'] = now
171+
TRAINING_JOB_DESCRIPTION_1['LastModifiedTime'] = now
167172
expected = '{} {} - {}'.format(
168173
datetime.utcfromtimestamp(time.mktime(now.timetuple())).strftime('%Y-%m-%d %H:%M:%S'),
169174
STATUS,

0 commit comments

Comments
 (0)