Python backend

Supported data structures

Lifter operates on collections of objects. A collection can be any Python iterable, like a list, a tuple, or even a generator. As long as lifter can iterate on it, everythings fine.

Such collections must contain similarly structured objects in order for lifter to work:

# okay
tags = [
    {'name': 'python', 'articles_count': 134},
    {'name': 'ruby', 'articles_count': 42},
    {'name': 'php', 'articles_count': 23},
]

# okay
class User(object):
    def __init__(self, age, first_name, last_name):
        self.age = age
        self.first_name = first_name
        self.last_name = last_name

users = [
    User(42, 'Douglas', 'Adams'),
    User(867, 'Legolas', 'The Elf'),
    User(98, 'Benjamin', 'Button'),
]

# not okay
users_and_tags = [tags[0], users[0], tags[1], users[1]]

If your iterable contains mappings (such as dictionaries), lifter will treat them as regular objects, and transparently access keys instead of attributes when filtering, retrieving and aggregating values.