def test_list_dict_data(self):
        data = [{'a': i, 'b': 10 * i, 'c': str(i)} for i in range(10)]
        model = RowTableDataModel(data=data,
                                  row_header_data=KeyDataAccessor(
                                      key='a',
                                      value_type=IntValue(),
                                  ),
                                  column_data=[
                                      KeyDataAccessor(
                                          key='b',
                                          value_type=IntValue(),
                                      ),
                                      KeyDataAccessor(
                                          key='c',
                                          value_type=TextValue(),
                                      )
                                  ])

        for row, column in model.iter_items():
            with self.subTest(row=row, column=column):
                result = model.get_value(row, column)
                if len(row) == 0 and len(column) == 0:
                    self.assertEqual(result, 'A')
                elif len(row) == 0:
                    key = model.column_data[column[0]].key
                    self.assertEqual(result, str(key).title())
                elif len(column) == 0:
                    self.assertEqual(result, data[row[0]]['a'])
                else:
                    key = model.column_data[column[0]].key
                    self.assertEqual(result, data[row[0]][key])
Пример #2
0
 def setUp(self):
     super().setUp()
     self.data = [
         DataItem(a=i, b=10*i, c=str(i)) for i in range(10)
     ]
     self.model = RowTableDataModel(
         data=self.data,
         row_header_data=AttributeDataAccessor(
             attr='a',
             value_type=IntValue(),
         ),
         column_data=[
             AttributeDataAccessor(
                 attr='b',
                 value_type=IntValue(),
             ),
             AttributeDataAccessor(
                 attr='c',
                 value_type=TextValue(),
             )
         ]
     )
     self.values_changed_event = None
     self.structure_changed_event = None
     self.model.observe(self.model_values_changed, 'values_changed')
     self.model.observe(self.model_structure_changed, 'structure_changed')
    def test_list_tuple_data(self):
        data = [(i, 10 * i, str(i)) for i in range(10)]
        model = RowTableDataModel(data=data,
                                  row_header_data=IndexDataAccessor(
                                      index=0,
                                      value_type=IntValue(),
                                  ),
                                  column_data=[
                                      IndexDataAccessor(
                                          index=1,
                                          value_type=IntValue(),
                                      ),
                                      IndexDataAccessor(
                                          index=2,
                                          value_type=TextValue(),
                                      )
                                  ])

        for row, column in model.iter_items():
            with self.subTest(row=row, column=column):
                result = model.get_value(row, column)
                if len(row) == 0 and len(column) == 0:
                    self.assertEqual(result, '0')
                elif len(row) == 0:
                    index = model.column_data[column[0]].index
                    self.assertEqual(result, str(index))
                elif len(column) == 0:
                    self.assertEqual(result, row[0])
                else:
                    index = model.column_data[column[0]].index
                    self.assertEqual(result, data[row[0]][index])
 def test_type_updated(self):
     with self.assertTraitChanges(self.model, "values_changed"):
         self.model.value_type = IntValue()
     self.assertEqual(
         self.values_changed_event.new,
         ((0,), (0,), (4,), (2,))
     )
    def test_no_data_column_data_update(self):
        model = RowTableDataModel(row_header_data=AttributeDataAccessor(
            attr='a',
            value_type=IntValue(),
        ),
                                  column_data=[
                                      AttributeDataAccessor(
                                          attr='b',
                                          value_type=IntValue(),
                                      ),
                                      AttributeDataAccessor(
                                          attr='c',
                                          value_type=TextValue(),
                                      )
                                  ])

        with self.assertTraitDoesNotChange(model, 'values_changed'):
            model.column_data[0].attr = 'a'
    def test_no_data_row_header_data_update(self):
        model = RowTableDataModel(row_header_data=AttributeDataAccessor(
            attr='a',
            value_type=IntValue(),
        ),
                                  column_data=[
                                      AttributeDataAccessor(
                                          attr='b',
                                          value_type=IntValue(),
                                      ),
                                      AttributeDataAccessor(
                                          attr='c',
                                          value_type=TextValue(),
                                      )
                                  ])

        # check that updating accessors is safe with empty data
        with self.assertTraitDoesNotChange(model, 'values_changed'):
            model.row_header_data.attr = 'b'
Пример #7
0
        def _create_contents(self, parent):
            """ Creates the left hand side or top depending on the style. """

            self.data_view = DataViewWidget(
                parent=parent,
                data_model=DictDataModel(
                    data={'one': 1, 'two': 2, 'three': 3},
                    value_type=IntValue(),
                ),
            )
            self.data_view._create()
            return self.data_view.control
 def test_column_data_updated(self):
     with self.assertTraitChanges(self.model, "structure_changed"):
         self.model.column_data = [
             AttributeDataAccessor(
                 attr='c',
                 value_type=TextValue(),
             ),
             AttributeDataAccessor(
                 attr='b',
                 value_type=IntValue(),
             ),
         ]
     self.assertTrue(self.structure_changed_event.new)
Пример #9
0
    contacted = Bool()

    address = Instance(Address, ())


row_header_data = AttributeDataAccessor(
    title='People',
    attr='name',
    value_type=TextValue(),
)

column_data = [
    AttributeDataAccessor(
        attr="age",
        value_type=IntValue(minimum=0),
    ),
    AttributeDataAccessor(
        attr="favorite_color",
        value_type=ColorValue(),
    ),
    AttributeDataAccessor(
        attr="contacted",
        value_type=BoolValue(),
    ),
    AttributeDataAccessor(
        attr="address.street",
        value_type=TextValue(),
    ),
    AttributeDataAccessor(
        attr="address.city",
Пример #10
0
 def test_type_updated_empty(self):
     self.model.data = np.empty((0, 0, 0), dtype='int')
     with self.assertTraitDoesNotChange(self.model, "values_changed"):
         self.model.value_type = IntValue()