Mercurial > personal > weather-server
view weather_server/common.py @ 32:2faf3499a226
Ignore lots of development miscellany.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Sat, 12 Jun 2021 18:43:49 +0000 |
parents | 52ef21607b31 |
children |
line wrap: on
line source
import datetime import json import typing as t import bson import pytz BSON_OPTIONS = bson.DEFAULT_CODEC_OPTIONS.with_options( tz_aware=True, tzinfo=pytz.UTC) def bson_encode(data: t.Dict[str, t.Any]) -> bytes: return bson.BSON.encode(data, codec_options=BSON_OPTIONS) class DateEncoder(json.JSONEncoder): def default(self, o: t.Any) -> t.Any: if not isinstance(o, datetime.datetime): return super().default(o) return o.timestamp() JSON_ENCODER = DateEncoder(sort_keys=True) def json_dumps(data: t.Any) -> str: return JSON_ENCODER.encode(data) def utc_now(): return datetime.datetime.utcnow().replace(tzinfo=pytz.UTC)