import sys

try:
    from PySide6.QtCore import (QLibraryInfo, QAbstractListModel, QModelIndex,
                                Qt, qVersion)
    from PySide6.QtGui import QIcon
except ImportError:
    from PySide2.QtCore import (QLibraryInfo, QAbstractListModel, QModelIndex,
                                Qt, qVersion)
    from PySide2.QtGui import QIcon


icon = QIcon.fromTheme('folder')


class MyModel(QAbstractListModel):
    def rowCount(self, parent=QModelIndex()) -> int:
        return 1

    def data(self, index, role=Qt.DecorationRole):
        print('inside MyModel.data(): ', icon)
        return icon

    def non_virtual_data(self):
        return icon


if __name__ == '__main__':
    print('Python {}.{}'.format(sys.version_info[0], sys.version_info[1]))
    print(QLibraryInfo.build())

    print('\nglobal', icon)
    model = MyModel()
    idx = model.index(0, 0)
    icons = [idx.data(role=Qt.DecorationRole) for _ in range(5)]

    for ico in icons:
        print('result of AbstractItemModel.data():', ico)

    non_virtual_icons = [model.non_virtual_data() for _ in range(5)]
    for ico in non_virtual_icons:
            print('result of AbstractItemModel.non_virtual_data():', ico)
