OK Python 3 does not like this because the `Viewable` types are not comparable. Rather than go down that rabbit hole, maybe:
```
for typname, grp in itertools.groupby(sorted(str(type(i)) for i in tool_objs)):
    if len(list(grp)) > 1: repeated_tools+=typname