diff --git a/vizier/_src/pyvizier/shared/trial.py b/vizier/_src/pyvizier/shared/trial.py index 0bc0d977c..e7f634f3d 100644 --- a/vizier/_src/pyvizier/shared/trial.py +++ b/vizier/_src/pyvizier/shared/trial.py @@ -503,12 +503,13 @@ class Trial(TrialSuggestion): creation_time: Optional[datetime.datetime] = attr.ib( init=True, - default=datetime.datetime.now(), + factory=datetime.datetime.now, converter=_to_local_time, kw_only=True, repr=lambda v: v.strftime('%x %X') if v is not None else 'None', validator=attr.validators.optional( - attr.validators.instance_of(datetime.datetime)), + attr.validators.instance_of(datetime.datetime) + ), ) completion_time: Optional[datetime.datetime] = attr.ib( diff --git a/vizier/_src/pyvizier/shared/trial_test.py b/vizier/_src/pyvizier/shared/trial_test.py index 00653fad1..da33bf987 100644 --- a/vizier/_src/pyvizier/shared/trial_test.py +++ b/vizier/_src/pyvizier/shared/trial_test.py @@ -305,6 +305,11 @@ def testDefaultsNotShared(self): trial1.parameters['x1'] = trial.ParameterValue(5) self.assertEmpty(trial2.parameters) + def testCreationTime(self): + trial1 = trial.Trial() + trial2 = trial.Trial() + self.assertGreater(trial2.creation_time, trial1.creation_time) + class ParameterDictTest(parameterized.TestCase): diff --git a/vizier/pyvizier/converters/core_test.py b/vizier/pyvizier/converters/core_test.py index 9c862ce03..21903aac2 100644 --- a/vizier/pyvizier/converters/core_test.py +++ b/vizier/pyvizier/converters/core_test.py @@ -340,6 +340,7 @@ def test_parameters_and_labels(self): final_measurement=pyvizier.Measurement( steps=1, metrics={'y1': 10.0, 'y2': 20.0} ), + creation_time=None, ), pyvizier.Trial( parameters={ @@ -349,9 +350,12 @@ def test_parameters_and_labels(self): final_measurement=pyvizier.Measurement( steps=1, metrics={'y1': 40.0, 'y2': 50.0, 'y3': 60.0} ), + creation_time=None, ), ] trials = converter.to_trials(actual_features, actual_labels) + for t in trials: + t.creation_time = None self.assertEqual( actual_trials, trials,