Bloop Extensions

Extension dependencies aren't installed with Bloop, because they may include a huge number of libraries that Bloop does not depend on. For example, two extensions could provide automatic mapping to Django or SQLAlchemy models. Many users would never need either of these, since Bloop does not depend on them for normal usage.

Bloop extensions are part of the Public API, and subject to its versioning policy.

DateTime and Timestamp

Working with python's datetime.datetime is tedious, but there are a number of popular libraries that improve the situation. Bloop includes drop-in replacements for the basic DateTime and Timestamp types for arrow, delorean, and pendulum through the extensions module. For example, let's swap out some code using the built-in DateTime:

import datetime
from bloop import DateTime
from bloop import BaseModel, Column, Integer

class User(BaseModel):
    id = Column(Integer, hash_key=True)
    created_on = Column(DateTime)

utc = datetime.timezone.utc
now = datetime.datetime.now(utc)

user = User(id=0, created_on=now)

Now, using pendulum:

import pendulum
from bloop.ext.pendulum import DateTime
from bloop import BaseModel, Column, Integer

class User(BaseModel):
    id = Column(Integer, hash_key=True)
    created_on = Column(DateTime)

now = pendulum.now("utc")

user = User(id=0, created_on=now)

Now, using arrow:

import arrow
from bloop.ext.arrow import DateTime
from bloop import BaseModel, Column, Integer

class User(BaseModel):
    id = Column(Integer, hash_key=True)
    created_on = Column(DateTime)

now = arrow.now("utc")

user = User(id=0, created_on=now)