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)