From 612516c1e00c8d7a2d1ae753535feedcd8502ca3 Mon Sep 17 00:00:00 2001 From: binares Date: Sun, 28 Jul 2019 20:09:56 +0300 Subject: [PATCH] Use _EPOCH instead of datetime.fromtimestamp(0) Also BinaryReader.tgread_date will not return None any more on 0 valued int, as the client is not expected to receive "empty" timestamps. #1241 --- telethon/extensions/binaryreader.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/telethon/extensions/binaryreader.py b/telethon/extensions/binaryreader.py index 43f86dab..80b76f94 100644 --- a/telethon/extensions/binaryreader.py +++ b/telethon/extensions/binaryreader.py @@ -5,11 +5,15 @@ import os from datetime import datetime, timezone, timedelta from io import BufferedReader, BytesIO from struct import unpack +import time from ..errors import TypeNotFoundError from ..tl.alltlobjects import tlobjects from ..tl.core import core_objects +_EPOCH_NAIVE = datetime(*time.gmtime(0)[:6]) +_EPOCH = _EPOCH_NAIVE.replace(tzinfo=timezone.utc) + class BinaryReader: """ @@ -120,10 +124,7 @@ class BinaryReader: into a Python datetime object. """ value = self.read_int() - if value == 0: - return None - else: - return datetime.fromtimestamp(0, tz=timezone.utc) + timedelta(seconds=value) + return _EPOCH + timedelta(seconds=value) def tgread_object(self): """Reads a Telegram object."""