Beispiel #1
0
def test_invalid_arg_text_when_object_arg():

    with experiment_testing_context(new_experiment_lib=True):

        @experiment_function
        def my_unhashable_arg_test(a=MyArgumentObject(a=3)):
            return a.a + 2

        record = my_unhashable_arg_test.run()
        assert record.get_result() == 5

        assert get_record_invalid_arg_string(record,
                                             recursive=True) == '<No Change>'

        # ---------------------
        clear_all_experiments()

        @experiment_function
        def my_unhashable_arg_test(a=MyArgumentObject(a=3)):
            return a.a + 2

        assert get_record_invalid_arg_string(record,
                                             recursive=True) == '<No Change>'

        # ---------------------
        clear_all_experiments()

        @experiment_function
        def my_unhashable_arg_test(a=MyArgumentObject(a=4)):
            return a.a + 2

        assert get_record_invalid_arg_string(
            record, recursive=True) == 'Change: {a.a:3}->{a.a:4}'
def test_invalid_arg_text_when_object_arg():

    with experiment_testing_context(new_experiment_lib=True):

        @experiment_function
        def my_unhashable_arg_test(a=MyArgumentObject(a=3)):
            return a.a+2

        record = my_unhashable_arg_test.run()
        assert record.get_result() == 5

        assert get_record_invalid_arg_string(record, recursive=True) == '<No Change>'

        # ---------------------
        clear_all_experiments()

        @experiment_function
        def my_unhashable_arg_test(a=MyArgumentObject(a=3)):
            return a.a+2

        assert get_record_invalid_arg_string(record, recursive=True) == '<No Change>'

        # ---------------------
        clear_all_experiments()

        @experiment_function
        def my_unhashable_arg_test(a=MyArgumentObject(a=4)):
            return a.a+2

        assert get_record_invalid_arg_string(record, recursive=True) == 'Change: a.a:3->4'
Beispiel #3
0
def test_invalid_arg_text():

    with experiment_testing_context(new_experiment_lib=True):

        @experiment_function
        def my_invalid_arg_test(a=1, b={'c': 3, 'd': 4}):
            return a + b['c'] + b['d']

        record = my_invalid_arg_test.run()
        assert get_record_invalid_arg_string(record,
                                             recursive=True) == '<No Change>'
        clear_all_experiments()

        @experiment_function
        def my_invalid_arg_test(a=2, b={'c': 3, 'd': 4}):
            return a + b['c'] + b['d']

        assert get_record_invalid_arg_string(
            record, recursive=True) == 'Change: {a:1}->{a:2}'
        clear_all_experiments()

        @experiment_function
        def my_invalid_arg_test(a=2, b={'c': 3, 'd': 2}):
            return a + b['c'] + b['d']

        assert get_record_invalid_arg_string(
            record, recursive=True) == "Change: {a:1,b['d']:4}->{a:2,b['d']:2}"
Beispiel #4
0
    def get_record_table(records = None, headers = ('#', 'Identifier', 'Start Time', 'Duration', 'Status', 'Valid', 'Notes', 'Result'), raise_display_errors = False, result_truncation=100):

        d = {
            '#': lambda: i,
            'Identifier': lambda: experiment_record.get_id(),
            'Start Time': lambda: experiment_record.info.get_field_text(ExpInfoFields.TIMESTAMP, replacement_if_none='?'),
            'Duration': lambda: experiment_record.info.get_field_text(ExpInfoFields.RUNTIME, replacement_if_none='?'),
            'Status': lambda: experiment_record.info.get_field_text(ExpInfoFields.STATUS, replacement_if_none='?'),
            'Args': lambda: experiment_record.info.get_field_text(ExpInfoFields.ARGS, replacement_if_none='?'),
            'Valid': lambda: get_record_invalid_arg_string(experiment_record, note_version='short'),
            'Notes': lambda: experiment_record.info.get_field_text(ExpInfoFields.NOTES, replacement_if_none='?'),
            'Result': lambda: get_oneline_result_string(experiment_record, truncate_to=128)
            # experiment_record.get_experiment().get_oneline_result_string(truncate_to=result_truncation) if is_experiment_loadable(experiment_record.get_experiment_id()) else '<Experiment not loaded>'
            }

        def get_col_info(headers):
            info = []
            for h in headers:
                try:
                    info.append(d[h]())
                except:
                    info.append('<Error displaying info>')
                    if raise_display_errors:
                        raise
            return info

        rows = []
        for i, experiment_record in enumerate(records):
            rows.append(get_col_info(headers))
        assert all_equal([len(headers)] + [len(row) for row in rows]), 'Header length: {}, Row Lengths: \n {}'.format(len(headers), [len(row) for row in rows])
        return tabulate(rows, headers=headers)
Beispiel #5
0
    def get_record_table(records = None, headers = ('#', 'Identifier', 'Start Time', 'Duration', 'Status', 'Valid', 'Notes', 'Result'), raise_display_errors = False, result_truncation=100):

        d = {
            '#': lambda: i,
            'Identifier': lambda: experiment_record.get_id(),
            'Start Time': lambda: experiment_record.info.get_field_text(ExpInfoFields.TIMESTAMP, replacement_if_none='?'),
            'Duration': lambda: experiment_record.info.get_field_text(ExpInfoFields.RUNTIME, replacement_if_none='?'),
            'Status': lambda: experiment_record.info.get_field_text(ExpInfoFields.STATUS, replacement_if_none='?'),
            'Args': lambda: experiment_record.info.get_field_text(ExpInfoFields.ARGS, replacement_if_none='?'),
            'Valid': lambda: get_record_invalid_arg_string(experiment_record, note_version='short'),
            'Notes': lambda: experiment_record.info.get_field_text(ExpInfoFields.NOTES, replacement_if_none='?'),
            'Result': lambda: get_oneline_result_string(experiment_record, truncate_to=128)
            # experiment_record.get_experiment().get_oneline_result_string(truncate_to=result_truncation) if is_experiment_loadable(experiment_record.get_experiment_id()) else '<Experiment not loaded>'
            }

        def get_col_info(headers):
            info = []
            for h in headers:
                try:
                    info.append(d[h]())
                except:
                    info.append('<Error displaying info>')
                    if raise_display_errors:
                        raise
            return info

        rows = []
        for i, experiment_record in enumerate(records):
            rows.append(get_col_info(headers))
        assert all_equal([len(headers)] + [len(row) for row in rows]), 'Header length: {}, Row Lengths: \n {}'.format(len(headers), [len(row) for row in rows])
        return tabulate(rows, headers=headers)
def test_invalid_arg_text():

    with experiment_testing_context(new_experiment_lib=True):

        @experiment_function
        def my_invalid_arg_test(a=1, b={'c': 3, 'd': 4}):
            return a+b['c']+b['d']

        record = my_invalid_arg_test.run()
        assert get_record_invalid_arg_string(record, recursive=True) == '<No Change>'
        clear_all_experiments()

        @experiment_function
        def my_invalid_arg_test(a=2, b={'c': 3, 'd': 4}):
            return a+b['c']+b['d']

        assert get_record_invalid_arg_string(record, recursive=True) == 'Change: a:1->2'
        clear_all_experiments()

        @experiment_function
        def my_invalid_arg_test(a=2, b={'c': 3, 'd': 2}):
            return a+b['c']+b['d']

        assert get_record_invalid_arg_string(record, recursive=True) == "Change: a:1->2, b['d']:4->2"
Beispiel #7
0
 def get_field(header):
     try:
         return \
             index if header=='#' else \
             (str(i) if j==0 else '') if header == 'E#' else \
             j if header == 'R#' else \
             (name if j==0 else '') if header=='Name' else \
             experiment_record.info.get_field_text(ExpInfoFields.TIMESTAMP) if header in ('Last Run', 'All Runs') else \
             experiment_record.info.get_field_text(ExpInfoFields.RUNTIME) if header=='Duration' else \
             experiment_record.info.get_field_text(ExpInfoFields.STATUS) if header=='Status' else \
             get_record_invalid_arg_string(experiment_record) if header=='Valid' else \
             oneliner_func(experiment_record.get_id(), truncate_to=truncate_result_to) if header=='Result' else \
             '???'
     except:
         if raise_display_errors:
             raise
         return '<Display Error>'
Beispiel #8
0
    @classmethod
    def get_setting(cls, name):
        return _DisplaySettings.SETTINGS[name]


_exp_record_field_getters = {
    ExpRecordDisplayFields.RUNS:
    lambda rec: rec.info.get_field_text(ExpInfoFields.TIMESTAMP),
    ExpRecordDisplayFields.DURATION:
    lambda rec: format_duration(rec.info.get_field(ExpInfoFields.RUNTIME)),
    ExpRecordDisplayFields.STATUS:
    lambda rec: rec.info.get_field_text(ExpInfoFields.STATUS),
    ExpRecordDisplayFields.ARGS_CHANGED:
    lambda rec: get_record_invalid_arg_string(
        rec,
        ignore_valid_keys=_DisplaySettings.get_setting('ignore_valid_keys')),
    ExpRecordDisplayFields.RESULT_STR:
    get_oneline_result_string,
    ExpRecordDisplayFields.NOTES:
    _show_notes
}


def _get_record_rows(record_id,
                     headers,
                     raise_display_errors,
                     truncate_to,
                     ignore_valid_keys=()):
    rec = load_experiment_record(record_id)
Beispiel #9
0
    def __enter__(self):
        self.old_settings = _DisplaySettings.SETTINGS
        _DisplaySettings.SETTINGS = self.settings_dict

    def __exit__(self, exc_type, exc_val, exc_tb):
        _DisplaySettings.SETTINGS = self.old_settings

    @classmethod
    def get_setting(cls, name):
        return _DisplaySettings.SETTINGS[name]


_exp_record_field_getters = {
    ExpRecordDisplayFields.RUNS: lambda rec: format_time_stamp(rec.info.get_field(ExpInfoFields.TIMESTAMP)),
    ExpRecordDisplayFields.DURATION: lambda rec: format_duration(rec.info.get_field(ExpInfoFields.RUNTIME)) if rec.info.has_field(ExpInfoFields.RUNTIME) else '-',
    ExpRecordDisplayFields.ARGS_CHANGED: lambda rec: get_record_invalid_arg_string(rec, ignore_valid_keys=_DisplaySettings.get_setting('ignore_valid_keys'), note_version='short'),
    ExpRecordDisplayFields.RESULT_STR: get_oneline_result_string,
    ExpRecordDisplayFields.STATUS: lambda rec: rec.info.get_field_text(ExpInfoFields.STATUS),
    ExpRecordDisplayFields.NOTES: _show_notes
}


def _get_record_rows(record_id, headers, raise_display_errors, truncate_to, ignore_valid_keys = ()):
    rec = load_experiment_record(record_id)

    with _DisplaySettings(dict(ignore_valid_keys=ignore_valid_keys)):
        if not raise_display_errors:
            values = []
            for h in headers:
                try:
                    values.append(_exp_record_field_getters[h](rec))
Beispiel #10
0
    def __enter__(self):
        self.old_settings = _DisplaySettings.SETTINGS
        _DisplaySettings.SETTINGS = self.settings_dict

    def __exit__(self, exc_type, exc_val, exc_tb):
        _DisplaySettings.SETTINGS = self.old_settings

    @classmethod
    def get_setting(cls, name):
        return _DisplaySettings.SETTINGS[name]


_exp_record_field_getters = {
    ExpRecordDisplayFields.RUNS: lambda rec: format_time_stamp(rec.info.get_field(ExpInfoFields.TIMESTAMP)),
    ExpRecordDisplayFields.DURATION: lambda rec: format_duration(rec.info.get_field(ExpInfoFields.RUNTIME)) if rec.info.has_field(ExpInfoFields.RUNTIME) else '-',
    ExpRecordDisplayFields.ARGS_CHANGED: lambda rec: get_record_invalid_arg_string(rec, ignore_valid_keys=_DisplaySettings.get_setting('ignore_valid_keys')),
    ExpRecordDisplayFields.RESULT_STR: get_oneline_result_string,
    ExpRecordDisplayFields.STATUS: lambda rec: rec.info.get_field_text(ExpInfoFields.STATUS),
    ExpRecordDisplayFields.NOTES: _show_notes
}


def _get_record_rows(record_id, headers, raise_display_errors, truncate_to, ignore_valid_keys = ()):
    rec = load_experiment_record(record_id)

    with _DisplaySettings(dict(ignore_valid_keys=ignore_valid_keys)):
        if not raise_display_errors:
            values = []
            for h in headers:
                try:
                    values.append(_exp_record_field_getters[h](rec))