Mercurial > personal > weather-server
view weather_server/common.py @ 21:beb42c835c52
Make weather server handle arbitrary data:
- Make logfile record arbitrary BSONs
- Make server handlers OK with same
- Make location type a normal class rather than attrs;
have it handle its own logger.
- Bump version number.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Sat, 19 Oct 2019 18:40:48 -0400 |
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)