docs: def aggr(self, group, *attributes, keep_all_rows=False, **named_attributes):
          """
          Aggregation/projection operator
          :param group:  an entity set whose entities will be grouped per entity of `self`
          :param attributes: attributes of self to include in the result
          :param keep_all_rows: True = preserve the number of elements in the result (equivalent of LEFT JOIN in SQL)
          :param named_attributes: renamings and computations on attributes of self and group
          :return: an entity set representing the result of the aggregation/projection operator of entities from `group`
          per entity of `self`
          """
          return GroupBy.create(self, group, keep_all_rows=keep_all_rows,
                                attributes=attributes, named_attributes=named_attributes)